Мне удалось преобразовать мой EchoBot для взаимодействия с QnAMaker в соответствии с инструкциями здесь в моей локальной системе разработки, но когда я публикую то же самое с помощью репозитория Kudu ( попытался с помощью службы Azure DevOps Ci / CDконвейер, но он не работает [в предпросмотре], потому что после развертывания бот просто зависает на портале и никогда не может протестировать его в веб-чате.на мой ответ.Для каждого отправляемого вопроса невозможно определить службу QnAMaker.И я возвращаю сообщение об ошибке из кода, в котором говорится, что ответ QnaMaker не найден.
Как устранить неполадки, чтобы определить причину этого? Кажется, мой файл бота работает нормально локально иЯ могу получить ответ от QnAMaker локально, но не после публикации кода на моем бот веб-приложения в Azure.
Я чувствую себя Botframework V4 (используя.net) не очень прямолинейный, и инструкция на портале (документ) все еще развивается или иногда непонятна.
Вот снимок из моего эмулятора при локальном тестировании чата:
А вот снимок конечной точки производства (использующий те же вопросы на портале) с моим сообщением об ошибке из функции OnTurnAsync:
Мой .bot имеет все определенные службы, и местный бот работает нормально.
Это код в моем классе ChatBot:
public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
// Handle Message activity type, which is the main activity type for shown within a conversational interface
// Message activities may contain text, speech, interactive cards, and binary or unknown attachments.
// see https://aka.ms/about-bot-activity-message to learn more about the message and other activity types
if (turnContext.Activity.Type == ActivityTypes.Message)
{
// Get the conversation state from the turn context.
var state = await _accessors.CounterState.GetAsync(turnContext, () => new CounterState());
// Bump the turn count for this conversation.
state.TurnCount++;
// Set the property using the accessor.
await _accessors.CounterState.SetAsync(turnContext, state);
// Save the new turn count into the conversation state.
await _accessors.ConversationState.SaveChangesAsync(turnContext);
// Echo back to the user whatever they typed.
//var responseMessage = $"Turn {state.TurnCount}: You sent '{turnContext.Activity.Text}'\n";
//await turnContext.SendActivityAsync(responseMessage);
// QnAService
foreach(var qnaService in _qnaServices)
{
var response = await qnaService.GetAnswersAsync(turnContext);
if (response != null && response.Length > 0)
{
await turnContext.SendActivityAsync(
response[0].Answer,
cancellationToken: cancellationToken);
return;
}
}
var msg = "No QnA Maker answers were found. Something went wrong...!!";
await turnContext.SendActivityAsync(msg, cancellationToken: cancellationToken);
}
else
{
await turnContext.SendActivityAsync($"{turnContext.Activity.Type} event detected");
}
}