Как держать пользователя в цикле для намерения, пока webhook (выполнение) не будет удовлетворен результатами - PullRequest
0 голосов
/ 07 января 2019

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

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

Я играл с контекстами и последующими намерениями, но, похоже, они не работают.

1 Ответ

0 голосов
/ 07 января 2019

Последовательность действий не , что вы хотите в этом случае. Они, вероятно, не то, что вы хотите в большинстве случаев.

Контексты могут помочь, но могут даже не быть необходимыми.

Прежде всего, помните, что Намерение фиксирует то, что пользователь сказал , а не то, что вы собираетесь делать с тем, что они сказали или как вы отвечаете.

Итак, самый простой ответ на вопрос о том, как вы говорите им, что у вас нет результатов, состоит в том, что ваш webhook выполняет код, который говорит, что результатов нет, вместо кода, который говорит, каковы результаты.

Если пользователь отвечает с помощью номера телефона, то вам следует повторно вызвать созданное вами намерение для захвата номера телефона.

Есть несколько примеров, как сделать это в этом ответе StackOverflow , а также этой средней статье , основанной на ответе, и последующей статье , которая показывает некоторые подробности об Intents.

Теперь есть случаи, когда работа с контекстом может иметь смысл. Например, вы можете захотеть использовать контекст, чтобы вести подсчет того, сколько раз подряд вызывается Intent, поскольку через некоторое время может быть безопаснее остановить разговор или запросить другим способом. Вы можете сделать это, установив значение в параметре Context и проверив или увеличив этот параметр.

Или может иметь смысл использовать контекст, чтобы убедиться, что ввод обрабатывается как телефонный номер в этой конкретной точке разговора, а не как нечто более произвольное. Вы можете сделать это, установив контекст ввода для Intents.

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