Conversation.SendAsync не возвращается в приложении по умолчанию Bot Framework - PullRequest
0 голосов
/ 06 мая 2018

Работа с совершенно новым проектом Bot Framework, сгенерированным из шаблона (и с обновленными зависимостями), поэтому MessagesController и RootDialog. Когда я отлаживаю-запускаю проект в VS, а затем отправляю текстовое сообщение из эмулятора, конечным результатом является печально известный , не удалось отправить повтор .

Ошибка не отображается в журнале эмулятора: все в порядке, Grok подключен (хотя обойден для localhost), разговор добавлен и т. Д. Я могу опубликовать это при необходимости.

Нет исключений в VS (все исключения CLR проверены). В окне вывода VS не отображается сообщение об ошибке: имеются только сообщения от загрузочных модулей IIS Express, а затем сообщение о выходе из потока.

Я решил пойти на отладку точки останова, и вот результат: получается, что по умолчанию MessagesController.Post метод:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    if (activity.Type == ActivityTypes.Message)
    {
        await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
    }
    else
    {
        HandleSystemMessage(activity);
    }
    var response = Request.CreateResponse(HttpStatusCode.OK);
    return response;
}

выполнение достигает await Conversation.SendAsync(..., но затем оно никогда не возвращается из этого вызова. var response = ... не является хитом, а Dialogs.RootDialog никогда не создается (я добавил фиктивный конструктор с точкой останова), поэтому похоже, что даже делегат makeRoot не запускается. Я предполагаю, что в какой-то момент истекает 15-секундный тайм-аут, и выполнение полностью прекращается.

Я в недоумении по поводу дальнейшей отладки. Кто-нибудь тоже прошел через эту проблему? TA

Зависимости и окружающая среда:

  • Microsoft.Bot.Builder и Microsoft.Bot.Connector 3.15.2
  • Net Framework 4.6
  • Bot Framework Emulator 3.5.36
  • Visual Studio 2017
  • Win 10 64bit

Edit:
Я попытался начать с нового проекта из шаблона, на этот раз НЕ , обновляя любую зависимость. Это означает, что Microsoft.Bot.Builder 3.8.0.0 и не Microsoft.Bot.Connector. На этот раз ответ бота показан правильно. Журналы эмулятора жалуются, что не используют последнюю версию SDK. Но, по крайней мере, это работает. Итак, это регрессия?

Пробовал с 3.12.2.4 и тоже работает

1 Ответ

0 голосов
/ 07 мая 2018

Итак, по-видимому, было что-то смешное с SDK 3.15.2 и эмулятором: только что выпущены mantainers 3.15.2.1 , который говорит:

Исправить регресс взаимоблокировок при разговоре с эмулятором

Обновлен сейчас и работает отлично!

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