ошибка при тестировании Echo Chat Bot на Azure - PullRequest
0 голосов
/ 12 апреля 2020

Я следую https://towardsdatascience.com/creating-a-serverless-python-chatbot-api-in-microsoft-azure-from-scratch-in-9-easy-steps-2f1913fc9581 при создании чатбота python, и мой исходный код такой же, как показано ниже, однако, когда я пытаюсь его запустить, я получаю сообщение об ошибке. Согласно репозиториям, эта ошибка заключается в том, что обработчик on_error адаптера получает любые исключения, генерируемые логом хода бота c. Если возникает исключение, обработчик удаляет состояние диалога для текущего диалога, чтобы предотвратить застревание бота в ошибке -1 oop, вызванной плохим состоянием. любой специалист может помочь с этим?

       using System.Collections.Generic;                 
       using System.Threading;           
       using System.Threading.Tasks;          
       using Microsoft.Bot.Builder;          
       using Microsoft.Bot.Schema;          
       using System.Net;       
       using System;         
       using System.Net.Http;          
       using System.Text;  // for class Encoding         
       using System.IO;               
       using Newtonsoft.Json;                 
       using Newtonsoft.Json.Serialization;     


       namespace Microsoft.BotBuilderSamples.Bots
       {
           public class EchoBot : ActivityHandler
           {
               public class FlaskRequestModel
               {
                   [JsonProperty("text")]
                   public string Text {get; set;}            

               }

               protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity>                       turnContext, CancellationToken cancellationToken)
               {           
                   var replyText = $"{turnContext.Activity.Text}";
                   //if (!replyText.ToLower().Contains("Hey Bot")){  # Optional bit of code that only sends the sends the message to the back end if it contains a particular keyword
                   //    return;
                   //}
                   var replyTextModel = new FlaskRequestModel()
                   {
                       Text = replyText 
                   };

                   var jsonObject = JsonConvert.SerializeObject(replyTextModel);

                   var request = new HttpRequestMessage()
                   {

                       Content = new StringContent(jsonObject, Encoding.UTF8, "application/json"),
                       Method = HttpMethod.Post,
                       RequestUri = new Uri("yudao.azurewebsites.net"),   //  <- Replace the URL with the the URL for your function app
                   };            

                   var httpClient = new HttpClient();
                   // httpClient.DefaultRequestHeaders.Add("API-Key","your API-key");  <- required if your HTTP trigger authorization was set to something other than Anonymous
                   var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseContentRead);      

                   if (response.IsSuccessStatusCode)
                   {
                       var responseString = await response.Content.ReadAsStringAsync();
                       await turnContext.SendActivityAsync(MessageFactory.Text(responseString, responseString), cancellationToken);
                   }
                   else
                   {
                       await turnContext.SendActivityAsync(MessageFactory.Text("failure", "failure"), cancellationToken);
                       var responseString = await response.Content.ReadAsStringAsync();
                       await turnContext.SendActivityAsync(MessageFactory.Text(responseString, responseString), cancellationToken);   
                   }

               }
           }    
       }
...