Я играю с недавно выпущенным Microsoft Bot Framework. Я сделал следующие шаги:
Создал простого бота с помощью IDialog (образец Echo Bot), протестированного с помощью эмулятор, развернутый в службе приложений Azure и зарегистрированный на сайте dev.botframework.com. Все работало нормально.
Обновлен бот для работы с Luis с помощью LuisDialog и добавлены атрибуты [LuisModel] и [LuisIntent] (на основе пример бота-будильника) и развернул его в облаке.
После этого у меня странное поведение:
Как локальное, так и облачное развертывание работают должным образом с использованием эмулятора, и часть Luis работает хорошо.
При запуске того же бота из тестового соединения BotConnector он не связывает Luis, а вместо этого входит в MessageReceivedAsync.
Я проверил путь бота, идентификатор приложения и ключи, повторно развернул AppService и повторно зарегистрировал бота, и все равно получаю то же поведение.
Мой ReceiveMessageAsync выглядит следующим образом:
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> result)
{
var message = await result;
await context.PostAsync("You have just said: " + message.Text);
context.Wait(MessageReceivedAsync);
}
Причина, по которой я его не удаляю, заключается в том, что тестовое соединение перестает работать без него. Эмулятор, с другой стороны, работает хорошо.
Разве тестовое соединение в BotConnector и эмулятор, указывающее на одну и ту же конечную точку, не должны ВСЕГДА возвращать одинаковые результаты? Или я что-то упускаю?