Отправьте executementText и перейдите к другому намерению с followupEventInput - PullRequest
2 голосов
/ 22 мая 2019

Я настроил простой webhook с Python / Flask для работы с различными вариантами Dialogflow.Все работает довольно хорошо в этом вопросе.Бот интегрирован в Facebook Messenger с API V2 DialogFlow

Проблема заключается в том, что в отношении вывода моей логики webhook я хочу «привести» моего пользователя к намерению или другому (например,вернуть его к объяснению намерения или что-то подобное).Я понял, что могу сделать это благодаря концепции «followupEventInput».Запуск работает, так что все в порядке.НО, дело в том, что я хочу отобразить текст перед перемещением пользователя, поэтому я определяю его в "executementText", но этот не отображается до того, как пользователь отправляется в инициируемое намерение.

Визуально:

User : Hello
Bot : Hello
User : I want to send a picture
Bot : Okay ! Do it like that ... and like that

User : ====> Send file 

** Сработал веб-крюк ** и применить логику.Это не файл изображения, поэтому я отправляю ответ, который содержит:

{
  'fulfillmentText': "You haven't send a image.. I bring you back to the explanations ",
  'followupEventInput': {
    "name": "Event_That_Trigger_Explanations"
  }
}

Таким образом, я ожидаю:

User : ====> Send file
**Webhook magic**
Bot : You haven't send a image.. I bring you back to the explanations 
Bot : Okay ! Do it like that ... and like that ***

НО, у меня есть:

User : ====> Send file
**Webhook magic**
Bot : Okay ! Do it like that ... and like that ***

Большое спасибо за Вашу помощь !Наверное, я что-то неправильно понимаю в диалоге: P

Ответы [ 2 ]

1 голос
/ 23 мая 2019

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

Во-первых, отправка followupEventInput означает, что любой другой ответ игнорируется.

Более важно, однако, поскольку вы используете веб-крючок, вы можете просто отправить обратно то, что вы хотите отправить. Так что в своем веб-крюке вы можете просто отправить ответ: «Вы не отправили изображение. Вы можете сделать это так или так».

1 голос
/ 22 мая 2019

Полное описание того, что вы используете, можно найти здесь Invoke event from webhook .Документация довольно подробно о том, что ожидать.Явно, когда вы возвращаете заполненный followupEventInput из вашего вызова через веб-крючок, любая речь, отображаемый текст или другие поля данных не передаются вновь инициированному намерению.Это ответ от этого недавно инициированного намерения, которое отправляется пользователю.

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

Другая возможность - предоставить необязательный параметр для вашего конечного намерения и вернуть его в ответе пользователю.Например, ответ:

${optionalSpeech} Do this this and this.

вернет:

Do this this and this

, если optionalSpeech будет пустым, но вернет

Here is my optional speech.  Do this this and this.

Если ваш followupEventIntent передается в значении «Вот моя дополнительная речь».в параметре optionalSpeech для followupEventInput.

...