#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, большое спасибо за ваш ответ. это работает как шарм. Я чувствую себя немного глупо, поскольку ответ был вполне логичным! Для людей, которые начинают работать с таким композитором, как я, я хотел бы добавить, что ответ также (очевидно) применяется, когда вы хотите перейти к предыдущему диалогу, где пользователь уже дал ответ, сохраненный в свойстве.