Бот не отвечает на сообщения в эмуляторе Bot Framework из-за проблемы с подключением QnAMaker - PullRequest
1 голос
/ 04 марта 2020

Мой чат-бот использует QnAMaker для ответа на вопросы пользователя. Недавно это перестало работать, когда я тестирую в эмуляторе Bot Framework. Однако бот отлично работает в веб-чате. Я полагаю, что проблема возникает, когда я пытаюсь сгенерировать ответ из своей базы знаний QnAMaker:

var response = await botServices.QnAServices[QnAMakerName].GetAnswersAsync(stepContext.Context, qnaMakerOptions);

Это вывод, который я получаю в консоли:

fail: Microsoft.BotBuilderSamples.QnABot[0]
      Exception caught : System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.IO.IOException: Unable to read data from the transport connection: The I/O operation has been aborted because of either a thread exit or an application request. ---> System.Net.Sockets.SocketException: The I/O operation has been aborted because of either a thread exit or an application request
         --- End of inner exception stack trace ---
         at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error)
         at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token)
         at System.Net.FixedSizeReader.ReadPacketAsync(Stream transport, AsyncProtocolRequest request)
         at System.Net.Security.SslState.ThrowIfExceptional()
         at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
         at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
         at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
         at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__47_1(IAsyncResult iar)
         at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
      --- End of stack trace from previous location where exception was thrown ---
         at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
         --- End of inner exception stack trace ---
         at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
         at System.Threading.Tasks.ValueTask`1.get_Result()
         at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Threading.Tasks.ValueTask`1.get_Result()
         at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
         at System.Threading.Tasks.ValueTask`1.get_Result()
         at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         at Microsoft.Bot.Builder.AI.QnA.HttpRequestUtils.ExecuteHttpRequestAsync(String requestUrl, String payloadBody, QnAMakerEndpoint endpoint) in d:\a\1\s\libraries\Microsoft.Bot.Builder.AI.QnA\Utils\HttpRequestUtils.cs:line 64
         at Microsoft.Bot.Builder.AI.QnA.GenerateAnswerUtils.QueryQnaServiceAsync(Activity messageActivity, QnAMakerOptions options) in d:\a\1\s\libraries\Microsoft.Bot.Builder.AI.QnA\Utils\GenerateAnswerUtils.cs:line 212
         at Microsoft.Bot.Builder.AI.QnA.GenerateAnswerUtils.GetAnswersRawAsync(ITurnContext turnContext, IMessageActivity messageActivity, QnAMakerOptions options) in d:\a\1\s\libraries\Microsoft.Bot.Builder.AI.QnA\Utils\GenerateAnswerUtils.cs:line 87
         at Microsoft.Bot.Builder.AI.QnA.QnAMaker.GetAnswersRawAsync(ITurnContext turnContext, QnAMakerOptions options, Dictionary`2 telemetryProperties, Dictionary`2 telemetryMetrics) in d:\a\1\s\libraries\Microsoft.Bot.Builder.AI.QnA\QnAMaker.cs:line 198
         at Microsoft.Bot.Builder.AI.QnA.QnAMaker.GetAnswersAsync(ITurnContext turnContext, QnAMakerOptions options, Dictionary`2 telemetryProperties, Dictionary`2 telemetryMetrics) in d:\a\1\s\libraries\Microsoft.Bot.Builder.AI.QnA\QnAMaker.cs:line 158
         at X.Dialogs.QnAMakerDialog.CallGenerateAnswer(WaterfallStepContext stepContext, CancellationToken cancellationToken) in C:\Users\X\Desktop\X\Dialogs\QnAMakerDialog.cs:line 239
         at Microsoft.Bot.Builder.Dialogs.WaterfallDialog.OnStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) in d:\a\1\s\libraries\Microsoft.Bot.Builder.Dialogs\WaterfallDialog.cs:line 175
         at Microsoft.Bot.Builder.Dialogs.WaterfallDialog.RunStepAsync(DialogContext dc, Int32 index, DialogReason reason, Object result, CancellationToken cancellationToken) in d:\a\1\s\libraries\Microsoft.Bot.Builder.Dialogs\WaterfallDialog.cs:line 197
         at Microsoft.Bot.Builder.Dialogs.WaterfallDialog.BeginDialogAsync(DialogContext dc, Object options, CancellationToken cancellationToken) in d:\a\1\s\libraries\Microsoft.Bot.Builder.Dialogs\WaterfallDialog.cs:line 82
         at Microsoft.Bot.Builder.Dialogs.DialogContext.BeginDialogAsync(String dialogId, Object options, CancellationToken cancellationToken) in d:\a\1\s\libraries\Microsoft.Bot.Builder.Dialogs\DialogContext.cs:line 170
         at Microsoft.BotBuilderSamples.QnABot.DispatchToTopIntentAsync(ITurnContext turnContext, IList`1 intent, RecognizerResult recognizerResult, CancellationToken cancellationToken) in C:\Users\X\Desktop\X\QnAMaker\QnABot.cs:line 171
         at Microsoft.BotBuilderSamples.QnABot.OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken) in C:\Users\X\Desktop\X\QnAMaker\QnABot.cs:line 136
         at Microsoft.Bot.Builder.BotFrameworkAdapter.TenantIdWorkaroundForTeamsMiddleware.OnTurnAsync(ITurnContext turnContext, NextDelegate next, CancellationToken cancellationToken) in d:\a\1\s\libraries\Microsoft.Bot.Builder\BotFrameworkAdapter.cs:line 1252
         at Microsoft.Bot.Builder.MiddlewareSet.ReceiveActivityWithStatusAsync(ITurnContext turnContext, BotCallbackHandler callback, CancellationToken cancellationToken) in d:\a\1\s\libraries\Microsoft.Bot.Builder\MiddlewareSet.cs:line 55
         at Microsoft.Bot.Builder.BotAdapter.RunPipelineAsync(ITurnContext turnContext, BotCallbackHandler callback, CancellationToken cancellationToken) in d:\a\1\s\libraries\Microsoft.Bot.Builder\BotAdapter.cs:line 200

Тестирование в эмулятор всегда работал нормально до сих пор. Кто-нибудь знает, как решить?

1 Ответ

0 голосов
/ 11 марта 2020

Это может быть вызвано тем, что ваша конфигурация разработки отличается от вашей Azure конфигурации. Пожалуйста, сравните ваши QnAEndpointHostName, QnAEndpointKey и QnAKnowledgebaseId, чтобы увидеть, отличаются ли они между местным и Azure.

Если в последнее время вы сделали что-то другое с локальной конфигурацией, проверьте, откуда поступают эти учетные данные. например, ASP. NET appSettings, менеджер секретов или окружение.

Кроме того, поскольку некоторые из трассировок стека работают с типами SSL, вы можете дважды проверить, что у вас есть QnAEndpointHostName https префикс протокола.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...