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(); }
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>(); }
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>(); }
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; }
public ProactiveStateMiddleware(ProactiveState proactiveState) { _proactiveState = proactiveState; _proactiveStateAccessor = _proactiveState.CreateProperty <ProactiveModel>(nameof(ProactiveModel)); }
public SubscriptionManager(IServiceProvider serviceProvider) { _conversationState = serviceProvider.GetService <ConversationState>(); _proactiveState = serviceProvider.GetService <ProactiveState>(); _proactiveStateSubscription = _proactiveState.CreateProperty <ProactiveSubscriptionMap>(nameof(ProactiveSubscriptionMap)); }