Esempio n. 1
0
        public MainDialog(
            SkillConfigurationBase services,
            EndpointService endpointService,
            ResponseManager responseManager,
            ConversationState conversationState,
            UserState userState,
            ProactiveState proactiveState,
            IBotTelemetryClient telemetryClient,
            IBackgroundTaskQueue backgroundTaskQueue,
            IServiceManager serviceManager,
            bool skillMode)
            : base(nameof(MainDialog), telemetryClient)
        {
            _skillMode           = skillMode;
            _services            = services;
            _endpointService     = endpointService;
            _responseManager     = responseManager;
            _userState           = userState;
            _conversationState   = conversationState;
            _proactiveState      = proactiveState;
            TelemetryClient      = telemetryClient;
            _backgroundTaskQueue = backgroundTaskQueue;
            _serviceManager      = serviceManager;

            // Initialize state accessor
            _stateAccessor          = _conversationState.CreateProperty <CalendarSkillState>(nameof(CalendarSkillState));
            _proactiveStateAccessor = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));

            // Register dialogs
            RegisterDialogs();
        }
Esempio n. 2
0
        public UpcomingEventDialog(
            BotSettings settings,
            BotServices services,
            ConversationState conversationState,
            LocaleTemplateEngineManager localeTemplateEngineManager,
            ProactiveState proactiveState,
            IServiceManager serviceManager,
            IBotTelemetryClient telemetryClient,
            IBackgroundTaskQueue backgroundTaskQueue,
            MicrosoftAppCredentials appCredentials)
            : base(nameof(UpcomingEventDialog), settings, services, conversationState, localeTemplateEngineManager, serviceManager, telemetryClient, appCredentials)
        {
            _backgroundTaskQueue    = backgroundTaskQueue;
            _proactiveState         = proactiveState;
            _proactiveStateAccessor = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));

            var upcomingMeeting = new WaterfallStep[]
            {
                GetAuthToken,
                AfterGetAuthToken,
                QueueUpcomingEventWorker
            };

            // Define the conversation flow using a waterfall model.
            AddDialog(new WaterfallDialog(Actions.ShowUpcomingMeeting, upcomingMeeting));

            // Set starting dialog for component
            InitialDialogId = Actions.ShowUpcomingMeeting;
        }
        public MainDialog(
            IServiceProvider serviceProvider,
            IBotTelemetryClient telemetryClient,
            MicrosoftAppCredentials appCredentials,
            ProactiveState proactiveState)
            : base(nameof(MainDialog), telemetryClient)
        {
            _services       = serviceProvider.GetService <BotServices>();
            _settings       = serviceProvider.GetService <BotSettings>();
            _templateEngine = serviceProvider.GetService <LocaleTemplateEngineManager>();
            TelemetryClient = telemetryClient;

            // Create user state properties
            var userState = serviceProvider.GetService <UserState>();

            _userProfileState = userState.CreateProperty <UserProfileState>(nameof(UserProfileState));
            _skillContext     = userState.CreateProperty <SkillContext>(nameof(SkillContext));

            // Create conversation state properties
            var conversationState = serviceProvider.GetService <ConversationState>();

            _previousResponseAccessor = conversationState.CreateProperty <List <Activity> >(StateProperties.PreviousBotResponse);

            // SAMPLE: Create proactive state properties
            _appCredentials         = appCredentials;
            _proactiveStateAccessor = proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));

            // Register dialogs
            _onboardingDialog  = serviceProvider.GetService <OnboardingDialog>();
            _switchSkillDialog = serviceProvider.GetService <SwitchSkillDialog>();
            AddDialog(_onboardingDialog);
            AddDialog(_switchSkillDialog);

            // Register a QnAMakerDialog for each registered knowledgebase and ensure localised responses are provided.
            var localizedServices = _services.GetCognitiveModels();

            foreach (var knowledgebase in localizedServices.QnAConfiguration)
            {
                var qnaDialog = new QnAMakerDialog(
                    knowledgeBaseId: knowledgebase.Value.KnowledgeBaseId,
                    endpointKey: knowledgebase.Value.EndpointKey,
                    hostName: knowledgebase.Value.Host,
                    noAnswer: _templateEngine.GenerateActivityForLocale("UnsupportedMessage"),
                    activeLearningCardTitle: _templateEngine.GenerateActivityForLocale("QnaMakerAdaptiveLearningCardTitle").Text,
                    cardNoMatchText: _templateEngine.GenerateActivityForLocale("QnaMakerNoMatchText").Text)
                {
                    Id = knowledgebase.Key
                };
                AddDialog(qnaDialog);
            }

            // Register skill dialogs
            var skillDialogs = serviceProvider.GetServices <SkillDialog>();

            foreach (var dialog in skillDialogs)
            {
                AddDialog(dialog);
            }
        }
 public DefaultActivityHandler(IServiceProvider serviceProvider, T dialog)
 {
     _dialog = dialog;
     _dialog.TelemetryClient = serviceProvider.GetService <IBotTelemetryClient>();
     _conversationState      = serviceProvider.GetService <ConversationState>();
     _userState                    = serviceProvider.GetService <UserState>();
     _proactiveState               = serviceProvider.GetService <ProactiveState>();
     _dialogStateAccessor          = _conversationState.CreateProperty <DialogState>(nameof(DialogState));
     _proactiveStateAccessor       = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));
     _activityReferenceMapAccessor = _proactiveState.CreateProperty <ActivityReferenceMap>(nameof(ActivityReferenceMap));
     _proactiveStateConversationReferenceMapAccessor = _proactiveState.CreateProperty <ConversationReferenceMap>(nameof(ConversationReferenceMap));
     _botSettings               = serviceProvider.GetService <BotSettings>();
     _templateManager           = serviceProvider.GetService <LocaleTemplateManager>();
     _serviceProvider           = serviceProvider;
     _teamsTicketUpdateActivity = serviceProvider.GetService <ITeamsActivity <AdaptiveCard> >();
     _subscriptionManager       = serviceProvider.GetService <SubscriptionManager>();
 }
Esempio n. 5
0
 public CreateSubscriptionTeamsImplementation(
     IServiceProvider serviceProvider)
 {
     _conversationState            = serviceProvider.GetService <ConversationState>();
     _settings                     = serviceProvider.GetService <BotSettings>();
     _services                     = serviceProvider.GetService <BotServices>();
     _stateAccessor                = _conversationState.CreateProperty <SkillState>(nameof(SkillState));
     _serviceManager               = serviceProvider.GetService <IServiceManager>();
     _connectorClient              = serviceProvider.GetService <IConnectorClient>();
     _teamsTicketUpdateActivity    = serviceProvider.GetService <ITeamsActivity <AdaptiveCard> >();
     _proactiveState               = serviceProvider.GetService <ProactiveState>();
     _proactiveStateAccessor       = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));
     _activityReferenceMapAccessor = _conversationState.CreateProperty <ActivityReferenceMap>(nameof(ActivityReferenceMap));
     _proactiveStateActivityReferenceMapAccessor     = _proactiveState.CreateProperty <ActivityReferenceMap>(nameof(ActivityReferenceMap));
     _proactiveStateConversationReferenceMapAccessor = _proactiveState.CreateProperty <ConversationReferenceMap>(nameof(ConversationReferenceMap));
     _subscriptionManager = serviceProvider.GetService <SubscriptionManager>();
 }
 public DefaultActivityHandler(IServiceProvider serviceProvider, T dialog)
 {
     _dialog = dialog;
     _dialog.TelemetryClient = serviceProvider.GetService <IBotTelemetryClient>();
     _conversationState      = serviceProvider.GetService <ConversationState>();
     _userState              = serviceProvider.GetService <UserState>();
     _proactiveState         = serviceProvider.GetService <ProactiveState>();
     _dialogStateAccessor    = _conversationState.CreateProperty <DialogState>(nameof(DialogState));
     _proactiveStateAccessor = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));
     _appCredentials         = serviceProvider.GetService <MicrosoftAppCredentials>();
     _templateManager        = serviceProvider.GetService <LocaleTemplateManager>();
 }
Esempio n. 7
0
        public async Task DefaultOptions()
        {
            var microsoftAppId = string.Empty;

            var storage = new MemoryStorage();
            var state   = new ProactiveState(storage);
            var proactiveStateAccessor = state.CreateProperty <ProactiveModel>(nameof(ProactiveModel));

            var conversation = TestAdapter.CreateConversation("Name");

            conversation.User.Role = "user";

            var adapter = new TestAdapter(conversation)
                          .Use(new ProactiveStateMiddleware(state));

            var response          = "Response";
            var proactiveResponse = "ProactiveResponse";
            var proactiveEvent    = new Activity(type: ActivityTypes.Event, value: "user1", text: proactiveResponse);

            await new TestFlow(adapter, async(context, cancellationToken) =>
            {
                if (context.Activity.Type == ActivityTypes.Event)
                {
                    var proactiveModel = await proactiveStateAccessor.GetAsync(context, () => new ProactiveModel());

                    var hashedUserId = MD5Util.ComputeHash(context.Activity.Value.ToString());

                    var conversationReference = proactiveModel[hashedUserId].Conversation;

                    await context.Adapter.ContinueConversationAsync(microsoftAppId, conversationReference, ContinueConversationCallback(context, context.Activity.Text), cancellationToken);
                }
                else
                {
                    await context.SendActivityAsync(context.Activity.CreateReply(response));
                }
            })
            .Send("foo")
            .AssertReply(response)
            .Send(proactiveEvent)
            .AssertReply(proactiveResponse)
            .StartTestAsync();
        }
        public MainDialog(
            IServiceProvider serviceProvider,
            IBotTelemetryClient telemetryClient,
            MicrosoftAppCredentials appCredentials,
            ProactiveState proactiveState)
            : base(nameof(MainDialog), telemetryClient)
        {
            _services                 = serviceProvider.GetService <BotServices>();
            _settings                 = serviceProvider.GetService <BotSettings>();
            _templateEngine           = serviceProvider.GetService <LocaleTemplateEngineManager>();
            _previousResponseAccessor = serviceProvider.GetService <IStatePropertyAccessor <List <Activity> > >();
            TelemetryClient           = telemetryClient;
            _appCredentials           = appCredentials;
            _proactiveStateAccessor   = proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));

            // Create user state properties
            var userState = serviceProvider.GetService <UserState>();

            _userProfileState = userState.CreateProperty <UserProfileState>(nameof(UserProfileState));
            _skillContext     = userState.CreateProperty <SkillContext>(nameof(SkillContext));

            // Create conversation state properties
            var conversationState = serviceProvider.GetService <ConversationState>();

            _previousResponseAccessor = conversationState.CreateProperty <List <Activity> >(StateProperties.PreviousBotResponse);

            // Register dialogs
            _onboardingDialog = serviceProvider.GetService <OnboardingDialog>();
            AddDialog(_onboardingDialog);

            _qnaDialog = serviceProvider.GetService <QnADialog>();
            AddDialog(_qnaDialog);

            // Register skill dialogs
            var skillDialogs = serviceProvider.GetServices <SkillDialog>();

            foreach (var dialog in skillDialogs)
            {
                AddDialog(dialog);
            }
        }
        public UpcomingEventDialog(
            IServiceProvider serviceProvider)
            : base(nameof(UpcomingEventDialog), serviceProvider)
        {
            _backgroundTaskQueue    = serviceProvider.GetService <BackgroundTaskQueue>();
            _proactiveState         = serviceProvider.GetService <ProactiveState>();
            _proactiveStateAccessor = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));

            var upcomingMeeting = new WaterfallStep[]
            {
                GetAuthTokenAsync,
                AfterGetAuthTokenAsync,
                QueueUpcomingEventWorkerAsync
            };

            // Define the conversation flow using a waterfall model.
            AddDialog(new WaterfallDialog(Actions.ShowUpcomingMeeting, upcomingMeeting));

            // Set starting dialog for component
            InitialDialogId = Actions.ShowUpcomingMeeting;
        }
Esempio n. 10
0
 public ProactiveStateMiddleware(ProactiveState proactiveState)
 {
     _proactiveState         = proactiveState;
     _proactiveStateAccessor = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel));
 }
Esempio n. 11
0
 public SubscriptionManager(IServiceProvider serviceProvider)
 {
     _conversationState          = serviceProvider.GetService <ConversationState>();
     _proactiveState             = serviceProvider.GetService <ProactiveState>();
     _proactiveStateSubscription = _proactiveState.CreateProperty <ProactiveSubscriptionMap>(nameof(ProactiveSubscriptionMap));
 }