发送 fulfillmentText 并使用 followupEventInput 转移到另一个意图

Send fulfillmentText and move to another intent with followupEventInput

我已经使用 Python/Flask 设置了一个简单的 webhook 来处理各种 Dialogflow fullfilments。在这一点上一切都运作良好。该机器人通过 API V2 of DialogFlow

集成到 Facebook Messenger

问题是,关于我的 webhook 逻辑的输出,我想 "bring" 我的用户达到一个意图或另一个意图(例如,将其带回解释意图或类似的东西) .我明白我可以做到这一点要归功于 "followupEventInput" 的概念。触发有效,所以没关系。但是,问题是我想在移动用户之前显示一个文本,所以我将一个文本定义为 "fulfillmentText" 但是这个在用户被发送到触发的意图之前不会出现。

视觉上:

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

User : ====> Send file 

** Webhook 已触发 ** 并应用逻辑。它不是图像文件,所以我发送了一个包含 :

的响应
{
  '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 ***

非常感谢您的帮助!我想我误解了 Dialogflow 中的某些内容:P

可以在此处 Invoke event from webhook 找到您正在使用的内容的完整描述。该文档非常详细地说明了预期的内容。明确地说,当您从 webhook 调用 return 填充 followupEventInput 时,任何语音、显示文本或其他数据字段都不会传递到新启动的意图。这是发送给用户的新发起的意图的响应。

要实现您想要的,或许可以创建一个包含您要发送给用户的完整内容的新意图。

另一种可能性是允许将可选参数提供给您的最终意图,并 return 在对用户的响应中。例如,响应:

${optionalSpeech} Do this this and this.

会 return:

Do this this and this

如果 optionalSpeech 为空但会 return

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

如果您的 followupEventIntentfollowupEventInputoptionalSpeech 参数中传递了值 "Here is my optional speech."。

理解 Intents 的关键点是它们捕捉用户说的或做的,而不是你用它做了什么。所以说你回复了一些东西然后 "trigger" 另一个 Intent 是没有意义的。

首先,发送followupEventInput意味着忽略任何其他回复。

然而,更重要的是,由于您使用的是网络钩子,因此您可以只发回您想要发送的内容。所以在你的 webhook 中,你可以发送回复:"You haven't sent an image. You can do it like that or like that."