Exemplo n.º 1
0
 public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings)
 {
     if (ConfigSectionValid(settings?.BlobStorage?.ConnectionString) && ConfigSectionValid(settings?.BlobStorage?.Container))
     {
         adapter.Use(new TranscriptLoggerMiddleware(new BlobsTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container)));
     }
 }
Exemplo n.º 2
0
 public StorageQueueTrigger(IConfiguration configuration, BotFrameworkHttpAdapter botAdapter, GitHubAdapter githubAdapter, IBot bot)
 {
     this._botId = configuration.GetValue<string>("MicrosoftAppId") ?? throw new ArgumentNullException("MicrosoftAppId");
     this._botAdapter = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter)); ;
     this._githubAdapter = githubAdapter ?? throw new ArgumentNullException(nameof(githubAdapter)); ;
     this._bot = bot ?? throw new ArgumentNullException(nameof(bot));
 }
Exemplo n.º 3
0
        public void ConstructorWithConfiguration()
        {
            // Arrange
            var appSettings = new Dictionary <string, string>
            {
                { "MicrosoftAppId", "appId" },
                { "MicrosoftAppPassword", "appPassword" },
                { "ChannelService", "channelService" },
                { "BotOpenIdMetadata", "botOpenIdMetadata" },
            };

            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(appSettings)
                                .Build();

            // Act
            var adapter = new BotFrameworkHttpAdapter(configuration);

            // Assert

            // Note this is a special case testing a little more than just the public interface.
            var credentialProviderField = typeof(BotFrameworkAdapter).GetField("_credentialProvider", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
            var channelProviderField    = typeof(BotFrameworkAdapter).GetField("_channelProvider", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);

            var credentialProvider = (SimpleCredentialProvider)credentialProviderField.GetValue(adapter);
            var channelProvider    = (SimpleChannelProvider)channelProviderField.GetValue(adapter);

            Assert.Equal("appId", credentialProvider.AppId);
            Assert.Equal("appPassword", credentialProvider.Password);
            Assert.Equal("channelService", channelProvider.ChannelService);
            Assert.Equal("botOpenIdMetadata", ChannelValidation.OpenIdMetadataUrl);
            Assert.Equal("botOpenIdMetadata", GovernmentChannelValidation.OpenIdMetadataUrl);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="WebSocketEnabledHttpAdapter"/> class.
        /// An adapter meant for subclassing and injecting custom implementation of BotFrameworkHttpAdapter for handling Http requests.
        /// Throws <see cref="ArgumentNullException"/> if configure is null.
        /// </summary>
        /// <param name="configuration">The configuration for the adapter to use.</param>
        /// <param name="botFrameworkHttpAdapter">Optional http adapter to use for non-streaming extensions requests.</param>
        /// <param name="credentialProvider">Optional credential provider.</param>
        /// <param name="channelProvider">Optional channel provider.</param>
        /// <param name="loggerFactory">Optional logger factory.</param>
        protected WebSocketEnabledHttpAdapter(IConfiguration configuration, IBotFrameworkHttpAdapter botFrameworkHttpAdapter = null, ICredentialProvider credentialProvider = null, IChannelProvider channelProvider = null, ILoggerFactory loggerFactory = null)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var openIdEndpoint = configuration.GetSection(AuthenticationConstants.BotOpenIdMetadataKey)?.Value;

            if (!string.IsNullOrEmpty(openIdEndpoint))
            {
                // If an open ID endpoint is configured, use it. This enables Public and Sovereign clouds that require open id.
                ChannelValidation.OpenIdMetadataUrl           = openIdEndpoint;
                GovernmentChannelValidation.OpenIdMetadataUrl = openIdEndpoint;
            }

            credentialProvider = credentialProvider ?? new ConfigurationCredentialProvider(configuration);
            channelProvider    = channelProvider ?? new ConfigurationChannelProvider(configuration);

            _botFrameworkHttpAdapter = _botFrameworkHttpAdapter ?? new BotFrameworkHttpAdapter(credentialProvider, channelProvider, loggerFactory?.CreateLogger <BotFrameworkHttpAdapter>());
            _webSocketConnector      = new WebSocketConnector(credentialProvider, channelProvider);

            _ensureMiddlewareSet = new Lazy <bool>(() =>
            {
                middlewares.ForEach(mw => _botFrameworkHttpAdapter.Use(mw));
                _botFrameworkHttpAdapter.OnTurnError = OnTurnError;
                return(true);
            });
        }
Exemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TeamMembersService"/> class.
 /// </summary>
 /// <param name="botAdapter">Bot adapter.</param>
 /// <param name="botOptions">Bot options.</param>
 public TeamMembersService(
     BotFrameworkHttpAdapter botAdapter,
     IOptions <BotOptions> botOptions)
 {
     this.botAdapter     = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter));
     this.microsoftAppId = botOptions?.Value?.MicrosoftAppId ?? throw new ArgumentNullException(nameof(botOptions));
 }
Exemplo n.º 6
0
        public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s)
        {
            HostContext.Current.Set <IConfiguration>(Configuration);

            var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration));

            adapter
            .UseStorage(storage)
            .UseState(userState, conversationState);

            // Configure Middlewares
            ConfigureTranscriptLoggerMiddleware(adapter, settings);
            ConfigureInspectionMiddleWare(adapter, settings, s);
            ConfigureShowTypingMiddleWare(adapter, settings);

            adapter.OnTurnError = async(turnContext, exception) =>
            {
                await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false);

                await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false);

                await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false);
            };
            return(adapter);
        }
        public async Task WebSocketRequest()
        {
            // Arrange
            var headerDictionaryMock = new Mock <IHeaderDictionary>();

            headerDictionaryMock.Setup(h => h[It.Is <string>(v => v == "Authorization")]).Returns <string>(null);

            var httpRequestMock = new Mock <HttpRequest>();

            httpRequestMock.Setup(r => r.Body).Returns(CreateMessageActivityStream());
            httpRequestMock.Setup(r => r.Headers).Returns(headerDictionaryMock.Object);

            httpRequestMock.Setup(r => r.Method).Returns(HttpMethods.Get);

            httpRequestMock.Setup(r => r.HttpContext.WebSockets.IsWebSocketRequest).Returns(true);
            httpRequestMock.Setup(r => r.HttpContext.WebSockets.AcceptWebSocketAsync()).Returns(async() => await Task.FromResult(new FauxSock()));
            var httpResponseMock = new Mock <HttpResponse>();

            var botMock = new Mock <IBot>();

            botMock.Setup(b => b.OnTurnAsync(It.IsAny <TurnContext>(), It.IsAny <CancellationToken>())).Returns(Task.CompletedTask);

            // Act
            var adapter = new BotFrameworkHttpAdapter();
            await adapter.ProcessAsync(httpRequestMock.Object, httpResponseMock.Object, botMock.Object);

            // Assert, we should have made the call to accept the web socket
            httpRequestMock.Verify(m => m.HttpContext.WebSockets.AcceptWebSocketAsync(), Times.Once());
        }
        public async Task BasicMessageActivity()
        {
            // Arrange
            var headerDictionaryMock = new Mock <IHeaderDictionary>();

            headerDictionaryMock.Setup(h => h[It.Is <string>(v => v == "Authorization")]).Returns <string>(null);

            var httpRequestMock = new Mock <HttpRequest>();

            httpRequestMock.Setup(r => r.Body).Returns(CreateMessageActivityStream());
            httpRequestMock.Setup(r => r.Headers).Returns(headerDictionaryMock.Object);

            var httpResponseMock = new Mock <HttpResponse>();

            var botMock = new Mock <IBot>();

            botMock.Setup(b => b.OnTurnAsync(It.IsAny <TurnContext>(), It.IsAny <CancellationToken>())).Returns(Task.CompletedTask);

            // Act
            var adapter = new BotFrameworkHttpAdapter();
            await adapter.ProcessAsync(httpRequestMock.Object, httpResponseMock.Object, botMock.Object);

            // Assert
            botMock.Verify(m => m.OnTurnAsync(It.Is <TurnContext>(tc => true), It.Is <CancellationToken>(ct => true)), Times.Once());
        }
Exemplo n.º 9
0
        public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s, TelemetryInitializerMiddleware telemetryInitializerMiddleware)
        {
            var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration));

            SetBotAdapter(adapter, storage, settings, userState, conversationState, s, telemetryInitializerMiddleware);
            return(adapter);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MessageService"/> class.
 /// </summary>
 /// <param name="botOptions">The bot options.</param>
 /// <param name="botAdapter">The bot adapter.</param>
 public MessageService(
     IOptions <BotOptions> botOptions,
     BotFrameworkHttpAdapter botAdapter)
 {
     this.microsoftAppId = botOptions?.Value?.MicrosoftAppId ?? throw new ArgumentNullException(nameof(botOptions));
     this.botAdapter     = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter));
 }
Exemplo n.º 11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SendNotificationService"/> class.
 /// </summary>
 /// <param name="botOptions">The bot options.</param>
 /// <param name="botAdapter">The bot adapter.</param>
 public SendNotificationService(
     IOptions <BotOptions> botOptions,
     BotFrameworkHttpAdapter botAdapter)
 {
     this.microsoftAppId = botOptions.Value.MicrosoftAppId;
     this.botAdapter     = botAdapter;
 }
Exemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConversationService"/> class.
 /// </summary>
 /// <param name="botAdapter">The bot adapter.</param>
 /// <param name="appCredentials">The common Microsoft app credentials.</param>
 public ConversationService(
     BotFrameworkHttpAdapter botAdapter,
     CommonMicrosoftAppCredentials appCredentials)
 {
     this.botAdapter     = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter));
     this.appCredentials = appCredentials ?? throw new ArgumentNullException(nameof(appCredentials));
 }
Exemplo n.º 13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CreateUserConversationService"/> class.
 /// </summary>
 /// <param name="botAdapter">The bot adapter.</param>
 /// <param name="commonMicrosoftAppCredentials">The common Microsoft app credentials.</param>
 public CreateUserConversationService(
     BotFrameworkHttpAdapter botAdapter,
     CommonMicrosoftAppCredentials commonMicrosoftAppCredentials)
 {
     this.botAdapter     = botAdapter;
     this.appCredentials = commonMicrosoftAppCredentials;
 }
        public async Task InvokeActivity()
        {
            // Arrange
            var headerDictionaryMock = new Mock <IHeaderDictionary>();

            headerDictionaryMock.Setup(h => h[It.Is <string>(v => v == "Authorization")]).Returns <string>(null);

            var httpRequestMock = new Mock <HttpRequest>();

            httpRequestMock.Setup(r => r.Body).Returns(CreateInvokeActivityStream());
            httpRequestMock.Setup(r => r.Headers).Returns(headerDictionaryMock.Object);

            var response         = new MemoryStream();
            var httpResponseMock = new Mock <HttpResponse>();

            httpResponseMock.Setup(r => r.Body).Returns(response);

            var bot = new InvokeResponseBot();

            // Act
            var adapter = new BotFrameworkHttpAdapter();
            await adapter.ProcessAsync(httpRequestMock.Object, httpResponseMock.Object, bot);

            // Assert
            using (var stream = new MemoryStream(response.GetBuffer()))
                using (var reader = new StreamReader(stream))
                {
                    var s    = reader.ReadToEnd();
                    var json = JObject.Parse(s);
                    Assert.Equal("im.feeling.really.attacked.right.now", json["quite.honestly"]);
                }
        }
Exemplo n.º 15
0
        public void SetCurrent(string botDir)
        {
            IStorage storage           = new MemoryStorage();
            var      userState         = new UserState(storage);
            var      conversationState = new ConversationState(storage);
            var      inspectionState   = new InspectionState(storage);

            // manage all bot resources
            var resourceExplorer = new ResourceExplorer().AddFolder(botDir);

            var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(Config));

            var credentials = new MicrosoftAppCredentials(Config["MicrosoftAppId"], Config["MicrosoftAppPassword"]);

            adapter
            .UseStorage(storage)
            .UseState(userState, conversationState)
            .UseAdaptiveDialogs()
            .UseResourceExplorer(resourceExplorer)
            .UseLanguageGeneration(resourceExplorer, "common.lg")
            .Use(new RegisterClassMiddleware <IConfiguration>(Config))
            .Use(new InspectionMiddleware(inspectionState, userState, conversationState, credentials));

            adapter.OnTurnError = async(turnContext, exception) =>
            {
                await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false);

                await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false);

                await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false);
            };
            CurrentAdapter = adapter;

            CurrentBot = new ComposerBot("Main.dialog", conversationState, userState, resourceExplorer, DebugSupport.SourceMap);
        }
        public async Task MessageActivityWithHttpClient()
        {
            // Arrange
            var httpRequest = new HttpRequestMessage();

            httpRequest.Method  = HttpMethod.Post;
            httpRequest.Content = CreateMessageActivityContent();

            var httpResponse = new HttpResponseMessage();

            var mockHttpMessageHandler = new Mock <HttpMessageHandler>();

            mockHttpMessageHandler.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>())
            .Returns((HttpRequestMessage request, CancellationToken cancellationToken) => Task.FromResult(CreateInternalHttpResponse()));

            var httpClient = new HttpClient(mockHttpMessageHandler.Object);

            var bot = new MessageBot();

            // Act
            var adapter = new BotFrameworkHttpAdapter(null, null, httpClient, null);
            await adapter.ProcessAsync(httpRequest, httpResponse, bot);

            // Assert
            mockHttpMessageHandler.Protected().Verify <Task <HttpResponseMessage> >("SendAsync", Times.Once(), ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>());
        }
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(o => o.AddPolicy("AllowAllOrigins", builder =>
            {
                builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader();
            }));

            services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_1);

            services.AddSingleton <ICredentialProvider, ConfigurationCredentialProvider>();

            services.AddSingleton <IBotFrameworkHttpAdapter, BotFrameworkHttpAdapter>((provider) => {
                var cred = provider.GetRequiredService <ICredentialProvider>();
                var adpt = new BotFrameworkHttpAdapter(cred);
                adpt.Use(new ConversationSynchronizationMiddleware(new SampleUserConversationsStaticStorageProvider(), adpt, _configuration));

                return(adpt);
            });

            services.AddSingleton <IStorage, MemoryStorage>();

            services.AddSingleton <UserState>();

            services.AddSingleton <ConversationState>();

            services.AddSingleton <RootDialog>();

            services.AddTransient <IBot, MainBot <RootDialog> >();
        }
        public async Task MessageActivityWithHttpClient()
        {
            // Arrange
            var headerDictionaryMock = new Mock <IHeaderDictionary>();

            headerDictionaryMock.Setup(h => h[It.Is <string>(v => v == "Authorization")]).Returns <string>(null);

            var httpRequestMock = new Mock <HttpRequest>();

            httpRequestMock.Setup(r => r.Body).Returns(CreateMessageActivityStream());
            httpRequestMock.Setup(r => r.Headers).Returns(headerDictionaryMock.Object);

            var httpResponseMock = new Mock <HttpResponse>();

            var mockHttpMessageHandler = new Mock <HttpMessageHandler>();

            mockHttpMessageHandler.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>())
            .Returns((HttpRequestMessage request, CancellationToken cancellationToken) => Task.FromResult(CreateInternalHttpResponse()));

            var httpClient = new HttpClient(mockHttpMessageHandler.Object);

            var bot = new MessageBot();

            // Act
            var adapter = new BotFrameworkHttpAdapter(null, null, httpClient, null);
            await adapter.ProcessAsync(httpRequestMock.Object, httpResponseMock.Object, bot);

            // Assert
            mockHttpMessageHandler.Protected().Verify <Task <HttpResponseMessage> >("SendAsync", Times.Once(), ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>());
        }
 public LivePersonController(BotFrameworkHttpAdapter adapter, ILivePersonCredentialsProvider creds, IBot bot, ConversationMap conversationMap)
 {
     _adapter         = (ILivePersonAdapter)adapter;
     _bot             = bot;
     _creds           = creds;
     _conversationMap = conversationMap;
 }
Exemplo n.º 20
0
        public IBotFrameworkHttpAdapter BindToAdapter(IServiceProvider e)
        {
            var ae = new BotFrameworkHttpAdapter(e.GetService <ICredentialProvider>());

            ae.Use(new ShowTypingMiddleware(500, 2000));

            return((IBotFrameworkHttpAdapter)ae);
        }
Exemplo n.º 21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ImageUploaderController"/> class.
 /// </summary>
 /// <param name="botAdapter">Bot Adapter client.</param>
 /// <param name="botOptions">BOT options.</param>
 public ImageUploaderController(
     BotFrameworkHttpAdapter botAdapter,
     IOptions <BotOptions> botOptions)
 {
     this.botAdapter        = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter));
     this.storageAccount    = botOptions?.Value?.StorageAccount ?? throw new ArgumentNullException(nameof(botOptions));
     this.blobContainerName = botOptions?.Value?.BlobContainerName ?? throw new ArgumentNullException(nameof(botOptions));
 }
Exemplo n.º 22
0
 public BuggyAdapterBase(ICredentialProvider credentialProvider = null, IChannelProvider channelProvider = null, ILoggerFactory loggerFactory = null)
 {
     _botFrameworkHttpAdapter = new BotFrameworkHttpAdapter(credentialProvider, channelProvider, loggerFactory?.CreateLogger <BotFrameworkHttpAdapter>());
     _ensureMiddlewareSet     = new Lazy <bool>(() =>
     {
         _botFrameworkHttpAdapter.Use(base.MiddlewareSet);
         return(true);
     });
 }
        public BotFrameworkHttpTrigger(BotFrameworkHttpAdapter adapter, IBot bot, IConfiguration config)
        {
            this._adapter = adapter ?? throw new ArgumentNullException(nameof(adapter));
            this._bot     = bot ?? throw new ArgumentNullException(nameof(bot));
            var hostname = config.GetValue <string>("WEBSITE_HOSTNAME");
            var protocol = hostname.StartsWith("localhost") ? "http" : "https";

            _internalMessageEndpoint = $"{protocol}://{hostname}/api/internalMessages";
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="NotificationCardHelper"/> class.
 /// </summary>
 /// <param name="botOptions">A set of key/value application configuration properties.</param>
 /// <param name="logger">Logger implementation to send logs to the logger service.</param>
 /// <param name="adapter">Bot adapter.</param>
 public NotificationCardHelper(
     IOptions <BotOptions> botOptions,
     ILogger <NotificationCardHelper> logger,
     BotFrameworkHttpAdapter adapter)
 {
     this.botOptions = botOptions ?? throw new ArgumentNullException(nameof(botOptions));
     this.logger     = logger ?? throw new ArgumentNullException(nameof(logger));
     this.adapter    = adapter ?? throw new ArgumentNullException(nameof(adapter));
 }
Exemplo n.º 25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BotController"/> class.
 /// Dependency Injection will provide the Adapter and IBot implementation at runtime.
 /// </summary>
 /// <param name="adapter">Company Communicator Bot Adapter instance.</param>
 /// <param name="authorBot">Company Communicator Author Bot instance.</param>
 /// <param name="userBot">Company Communicator User Bot instance.</param>
 public BotController(
     CompanyCommunicatorBotAdapter adapter,
     AuthorTeamsActivityHandler authorBot,
     UserTeamsActivityHandler userBot)
 {
     this.adapter   = adapter ?? throw new ArgumentNullException(nameof(adapter));
     this.authorBot = authorBot ?? throw new ArgumentNullException(nameof(authorBot));
     this.userBot   = userBot ?? throw new ArgumentNullException(nameof(userBot));
 }
Exemplo n.º 26
0
 public async Task BotFrameworkHttpAdapter_does_not_support_handoff()
 {
     await Assert.ThrowsExceptionAsync <NotSupportedException>(async() =>
     {
         var adapter = new BotFrameworkHttpAdapter();
         ITurnContext turnContext = new TurnContext(adapter, new Schema.Activity());
         await turnContext.InitiateHandoffAsync(new IActivity [] { }, 0);
     });
 }
Exemplo n.º 27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FileCardService"/> class.
 /// </summary>
 /// <param name="botOptions">the bot options.</param>
 /// <param name="botAdapter">the users service.</param>
 /// <param name="userDataRepository">the user data repository.</param>
 public FileCardService(
     IOptions <BotOptions> botOptions,
     BotFrameworkHttpAdapter botAdapter,
     UserDataRepository userDataRepository)
 {
     this.botAdapter         = botAdapter;
     this.microsoftAppId     = botOptions.Value.MicrosoftAppId;
     this.userDataRepository = userDataRepository;
 }
Exemplo n.º 28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConversationService"/> class.
 /// </summary>
 /// <param name="botAdapter">The bot adapter.</param>
 /// <param name="userAppCredentials">The user Microsoft app credentials.</param>
 /// <param name="authorAppCredentials">The author Microsoft app credentials.</param>
 public ConversationService(
     BotFrameworkHttpAdapter botAdapter,
     UserAppCredentials userAppCredentials,
     AuthorAppCredentials authorAppCredentials)
 {
     this.botAdapter           = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter));
     this.userAppCredentials   = userAppCredentials ?? throw new ArgumentNullException(nameof(userAppCredentials));
     this.authorAppCredentials = authorAppCredentials ?? throw new ArgumentNullException(nameof(authorAppCredentials));
 }
Exemplo n.º 29
0
        public MockBot(Func <Schema.Activity, Task <InvokeResponse> > processActivityAsync, string pipeName = null, BotFrameworkHttpAdapter adapter = null)
        {
            if (pipeName == null)
            {
                pipeName = Guid.NewGuid().ToString();
            }

            _processActivityAsync = processActivityAsync;
            _adapter = adapter ?? new BotFrameworkHttpAdapter();
        }
Exemplo n.º 30
0
 public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings)
 {
     if (settings.Feature.UseTranscriptLoggerMiddleware)
     {
         if (!string.IsNullOrEmpty(settings.BlobStorage.ConnectionString) && !string.IsNullOrEmpty(settings.BlobStorage.Container))
         {
             adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container)));
         }
     }
 }