Dialogflow ChatBot асинхронный - PullRequest
0 голосов
/ 20 ноября 2018

Я использую Dialogflow с V2 C# client library. Когда пользователь предоставляет чатботу адрес, я использую веб-хук для отправки адреса на свой сервер.

Мой бэкэнд затем проверяет адрес и делает некоторые другие вещи (мой бэкэнд занимает около 2 секунд).

Однако я бы хотел, чтобы чат-робот отвечал пользователю чем-то вроде «Дайте мне секунду, и я проверю адрес, который вы мне предоставили», прежде чем мой бэкэнд закончится.

Затем, когда мой бэкэнд закончится, ответьте пользователю с результатами проверки адреса. Я не хочу принимать ввод в течение 2 секунд, которые обрабатывает мой сервер.

Таким образом, я хотел бы знать, каков наилучший способ подтвердить ввод пользователя с помощью сообщения, не принимать никаких дальнейших вводов, пока моя внутренняя обработка не будет завершена, а затем, наконец, ответить пользователю с результатами мой бэк-энд?

1 Ответ

0 голосов
/ 20 ноября 2018

Вам нужно управлять этим через contexts. Если вы используете Dialogflow SDK вместо пользовательского интерфейса, вы можете управлять всем этим с помощью кода, что более удобно.

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

Используя событие contexts, если пользователь задает любой другой вопрос, вы не потеряете предыдущий вопрос, и его ответ все равно будет передан пользователю.

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

...