Бот Framewok Composer — «Заменить это диалоговое окно» вызывает ошибку 400

#replace #dialog #repeat #bot-framework-composer

#заменить #диалоговое #повторить #бот-фреймворк-композитор

Вопрос:

Я создаю своего первого чат-бота с помощью bot Framework Composer, и мне не удается создать очень простой сценарий.

Я внимательно изучил документацию Bot Framework Composer, но не нашел ничего полезного.

Дочерний сценарий, которого я хочу достичь:

  • Бот спрашивает / подсказывает «Скажите что-нибудь, пожалуйста»
  • Пользователь отвечает / вводит строку, что-то вроде ‘anAnswer’
  • Бот говорит: «Вы сказали «anAnswer», это правильно?»
  • Пользователь вводит «да» или «нет»
    • если пользователь ввел «да»: конец диалога
    • если пользователь ввел «нет»: повторите это диалоговое окно

Смотрите холст Bot Composer здесь

Проблемы, с которыми я сталкиваюсь :

1. «Повторить это диалоговое окно» работает не так, как я ожидал.

  • Эмулятор продолжает говорить мне: «Обнаружен рекурсивный цикл, AdaptiveDialog не может быть повторен дважды за один ход«

  • Я попытался включить «Разрешить цикл» на «True», но, похоже, это приводит к бесконечному циклу (хотя я не знаю, как я могу это проверить …)

Смотрите параметры «Повторить диалог» здесь

Должен ли я добавить что-то в «Параметры» действия «Повторить диалоговое окно»? Например, с чего должен начинаться цикл? Если да, то как это сделать?

2. Как использовать «Заменить это диалоговое окно» с уже используемым сценарием?

Поскольку мне не удалось выполнить действие «Повторить диалоговое окно», я попытался сократить весь диалог пополам, разделив его на два диалога. У каждого диалога есть одна цель :

  • первый сценарий предназначен для запроса информации у пользователя
  • второй сценарий заключается в запросе подтверждения пользователю

Смотрите диалоговое окно «Запросить информацию» здесь

Смотрите диалоговое окно «Подтверждение» здесь

Первоначальной целью было «перенаправить» пользователя в диалоговое окно «Запросить информацию», когда он захочет отредактировать то, что он ввел ранее.

Но здесь это приводит к ошибке : POST400directline/conversations/<conversationId>/activities

Здесь снова есть несколько возможных «опций» для действия «Заменить диалоговое окно», но я ничего не нашел в документации по этому вопросу.

Большое спасибо за помощь новичку, я с удовольствием попробую решения, которые вы мне предлагаете, и оставлю отзыв.

Хорошего дня,

PS: Знаете ли вы хороший учебник по Bot Framework Composer (кроме Microsoft ?)

Ответ №1:

Перед использованием действия «Повторить диалоговое окно» вы должны очистить переменную, хранящую ответ пользователя. Причина его зацикливания в том, что у бота уже есть ответ в памяти, поэтому он не будет запрашивать пользователя снова.

используйте действие «Установить свойство» и установите значение переменной равным null перед повторением диалога

Комментарии:

1. Привет, @Sandeep, большое спасибо за ваш ответ. это работает как шарм. Я чувствую себя немного глупо, поскольку ответ был вполне логичным! Для людей, которые начинают работать с таким композитором, как я, я хотел бы добавить, что ответ также (очевидно) применяется, когда вы хотите перейти к предыдущему диалогу, где пользователь уже дал ответ, сохраненный в свойстве.