Нет, нет собственного способа повторно обработать ответ на приглашение в том смысле, в котором вы его имеете в виду. Есть несколько вещей, которые вам нужно знать о Bot Framework, чтобы спроектировать вашего бота правильно.
Что такое подсказка?
Подсказка - это тип dialog , который можно представить как бот, задающий пользователю вопрос. Это может быть закончено за один ход, если ответ пользователя приемлем в первый раз, или может потребоваться несколько ходов, если бот не сразу получит необходимую информацию. В случае подсказки выбора ответ пользователя будет приемлемым, только если его можно будет распознать как один из доступных вариантов. Поскольку вы упомянули варианты выбора, я предполагаю, что вы используете приглашение выбора.
Приглашение выбора может представлять свой выбор пятью способами, называемыми стилями списка. Есть два способа представить варианты выбора в виде кнопок, два способа представить варианты выбора в виде текста и один способ вообще не отображать варианты выбора. Если вы посмотрите на enum , вы увидите шестой вариант: «авто». Это значение по умолчанию, и он выберет лучший вариант в зависимости от вашего выбора и возможностей канала. В вашем случае варианты выбора должны быть представлены в виде предлагаемых действий.
Какие действия предлагаются?
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, но, поскольку вам просто нужно несколько кнопок, вы можете обойтись самым простым вариантом: карты героев.
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.