Есть ли собственный способ повторно обработать ответ на приглашение? - PullRequest
1 голос
/ 18 июня 2020

Наш чат-бот (написанный на. NET core 3.1) имеет несколько подсказок, которые предлагают выбор в виде кнопок. После того, как пользователи отправят поворот через чат (либо нажав кнопку, либо введя что-нибудь), мы скрываем кнопки, потому что нажатие на них просто отправляет текст кнопок как поворот. Затем наша подсказка принимает ответ пользователя и сравнивает его со словарем выбора, чтобы получить более удобный для бэкэнд результат для использования на шаге диалога.

Пользователи оставили нам отзывы о том, как мы с ними справляемся. Одна из часто запрашиваемых функций - это вернуться к предыдущему запросу и дать другой ответ на вопрос. Вот пример:

«О каком УЗИ вам нужна дополнительная информация?

  • Локализация
  • Термин УЗИ
  • Структурное ультразвуковое исследование "

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

Мы вкратце рассмотрели как мы будем реализовывать эту функцию и думали о хранении словарей выбора подсказок во время разговора. Затем мы добавили бы много настраиваемых logi c для обработки высказываний, возможно, за счет использования специальных тегов во внешнем интерфейсе. Или мы могли бы на промежуточном этапе перематывать разговор на подсказку и обрабатывать их дальнейшие действия оттуда.

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

Есть У Bot Framework есть собственный способ, позволяющий пользователям повторно активировать запрос из внешнего интерфейса, который уже был обработан на сервере?

1 Ответ

1 голос
/ 23 июня 2020

Нет, нет собственного способа повторно обработать ответ на приглашение в том смысле, в котором вы его имеете в виду. Есть несколько вещей, которые вам нужно знать о Bot Framework, чтобы спроектировать вашего бота правильно.

Что такое подсказка?

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

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

Какие действия предлагаются?

Suggested actions

Suggested actions are buttons that disappear when the user clicks on one of them. Like all UI elements they are very channel-specific, and the Azure Bot Service will try to convert them into the appropriate format for the given channel. For example, in Facebook Messenger suggested actions will become "quick replies." Web Chat is part of the Bot Framework so no conversion needs to take place in your case.

You'll see in the документы предлагаемые действия служат для предотвращения вашего бота от необходимости беспокоиться об обработке щелчков на старых карточках:

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

Похоже, ваши пользователи хотят иметь возможность go назад и нажимайте кнопки, чтобы вы захотели использовать карты вместо предлагаемых действий.

Что такое карты?

В настоящее время официально существует около девяти типов карт поддерживается Bot Framework. Адаптивные карты отлично подходят для более продвинутых сценариев ios, но, поскольку вам просто нужно несколько кнопок, вы можете обойтись самым простым вариантом: карты героев.

Hero card

You may have noticed before that "hero card" is the other button option for list styles. So all you have to do is set up your prompt to use the hero card list style and your choices will be presented as a card instead of suggested actions.

This may be enough information for you to solve your issue, but I want to make sure you're on the right track. The reason I said "no" at the beginning is because you shouldn't try to rewind your dialog back to a specific prompt. That's not how dialogs or prompts are supposed to work. If you want the bot to be able to respond to those choices at any point in the dialog, you need to handle those choices as interruptions.

What are interruptions?

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

Вы можете настроить свои прерывания так, чтобы бот всегда слушал точный текст во всех ваших вариантах во всех ваших подсказки выбора. Текст будет такой же ключевой фразой, как «помощь» или «отмена» в примере. Обратите внимание, что если вы go этот маршрут, пользователь потенциально может получить доступ к этой функции до того, как карта будет отправлена, просто введя ключевую фразу. Альтернативный способ - заставить кнопки отправлять postBack действий вместо действий по умолчанию imBack. Это будет отправлять невидимые сообщения, которые не могут быть смоделированы вводом текста пользователем, и вашему боту будет легче распознать их как прерывания.

Если вы реагируете на кнопки как на прерывания, имеет смысл даже нет подсказки. Когда диалоговое окно доходит до точки, в которой запускается запрос выбора, он может просто отправить карточку и завершить диалог, зная, что бот сможет ответить на все, что выберет пользователь. Обратите внимание: это будет означать, что вы не сможете использовать все параметры распознавания выбора, которые предоставляют подсказки для выбора, поэтому пользователь не сможет сделать что-то вроде ввода числа 2.

...