コード例 #1
0
        public OnboardingDialog(BotServices botServices, IStatePropertyAccessor <OnboardingState> accessor)
            : base(botServices, nameof(OnboardingDialog))
        {
            _accessor       = accessor;
            InitialDialogId = nameof(OnboardingDialog);

            var onboarding = new WaterfallStep[]
            {
                AskForName,
                AskForEmail,
                AskForLocation,
                FinishOnboardingDialog,
            };

            AddDialog(new WaterfallDialog(InitialDialogId, onboarding));
            AddDialog(new TextPrompt(NamePrompt));
            AddDialog(new TextPrompt(EmailPrompt));
            AddDialog(new TextPrompt(LocationPrompt));
        }
コード例 #2
0
ファイル: Startup.cs プロジェクト: seangnewman/BCBS-Hackathon
        public void ConfigureServices(IServiceCollection services)
        {
            // Load the connected services from .bot file.
            var botFilePath   = Configuration.GetSection("botFilePath")?.Value;
            var botFileSecret = Configuration.GetSection("botFileSecret")?.Value;
            var botConfig     = BotConfiguration.Load(botFilePath ?? @".\BotFramework.bot", botFileSecret);

            services.AddSingleton(sp => botConfig ?? throw new InvalidOperationException($"The .bot config file could not be loaded."));

            // Initializes your bot service clients and adds a singleton that your Bot can access through dependency injection.
            var connectedServices = new BotServices(botConfig);

            services.AddSingleton(sp => connectedServices);

            // Initialize Bot State
            //var cosmosDbService = botConfig.Services.FirstOrDefault(s => s.Type == ServiceTypes.CosmosDB) ?? throw new Exception("Please configure your CosmosDb service in your .bot file.");
            //var cosmosDb = cosmosDbService as CosmosDbService;
            //var cosmosOptions = new CosmosDbStorageOptions()
            //{
            //    CosmosDBEndpoint = new Uri(cosmosDb.Endpoint),
            //    AuthKey = cosmosDb.Key,
            //    CollectionId = cosmosDb.Collection,
            //    DatabaseId = cosmosDb.Database,
            //};
            //var dataStore = new CosmosDbStorage(cosmosOptions);
            //var userState = new UserState(dataStore);
            //var conversationState = new ConversationState(dataStore);

            //services.AddSingleton(dataStore);
            //services.AddSingleton(userState);
            //services.AddSingleton(conversationState);
            //services.AddSingleton(new BotStateSet(userState, conversationState));

            // Add the bot with options
            services.AddBot <BotFramework>(options =>
            {
                // Load the connected services from .bot file.
                var environment = _isProduction ? "production" : "development";
                var service     = botConfig.Services.FirstOrDefault(s => s.Type == ServiceTypes.Endpoint && s.Name == environment);
                if (!(service is EndpointService endpointService))
                {
                    throw new InvalidOperationException($"The .bot file does not contain an endpoint with name '{environment}'.");
                }

                options.CredentialProvider = new SimpleCredentialProvider(endpointService.AppId, endpointService.AppPassword);

                // Telemetry Middleware (logs activity messages in Application Insights)
                //var appInsightsService = botConfig.Services.FirstOrDefault(s => s.Type == ServiceTypes.AppInsights) ?? throw new Exception("Please configure your AppInsights connection in your .bot file.");
                //var instrumentationKey = (appInsightsService as AppInsightsService).InstrumentationKey;
                //var appInsightsLogger = new TelemetryLoggerMiddleware(instrumentationKey, logUserName: true, logOriginalMessage: true);
                //options.Middleware.Add(appInsightsLogger);

                // Catches any errors that occur during a conversation turn and logs them to AppInsights.
                options.OnTurnError = async(context, exception) =>
                {
                    await context.SendActivityAsync("Sorry, it looks like something went wrong.");
                    connectedServices.TelemetryClient.TrackException(exception);
                };

                // Transcript Middleware (saves conversation history in a standard format)
                //var storageService = botConfig.Services.FirstOrDefault(s => s.Type == ServiceTypes.BlobStorage) ?? throw new Exception("Please configure your Azure Storage service in your .bot file.");
                //var blobStorage = storageService as BlobStorageService;
                //var transcriptStore = new AzureBlobTranscriptStore(blobStorage.ConnectionString, blobStorage.Container);
                //var transcriptMiddleware = new TranscriptLoggerMiddleware(transcriptStore);
                //options.Middleware.Add(transcriptMiddleware);

                // Typing Middleware (automatically shows typing when the bot is responding/working)
                var typingMiddleware = new ShowTypingMiddleware();
                options.Middleware.Add(typingMiddleware);

                //options.Middleware.Add(new AutoSaveStateMiddleware(userState, conversationState));
            });
        }