我已经用Python / Flask建立了一个简单的webhook,以处理各种Dialogflow完整文件。在这一点上,一切工作都很好。该机器人通过DialogFlow的API V2与Facebook Messenger集成
问题是,关于我的Webhook逻辑的输出,我想将用户“带”到一个意图或另一个意图(例如,将其带回解释意图或类似意图)。我知道我可以做到这一点,这要归功于“ 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
答案 0 :(得分:1)
您可以在Invoke event from webhook上找到所使用内容的完整说明。该文档非常详细地介绍了预期的内容。明确地,当您从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
的{{1}}参数中。
答案 1 :(得分:1)
了解Intent的关键点在于它们捕获了用户说或做的事情,而不是您的意图。因此,说您先回答某件事然后“触发”另一个意图没有意义。
首先,发送followupEventInput
意味着忽略其他任何答复。
但是,更重要的是,由于您使用的是Webhook,因此您只需发送回想要发送的内容即可。因此,在您的Webhook中,您可以发送答复:“您尚未发送图像。您可以那样或那样进行。”