我正在使用dialogflow创建一个简单的机器人。 假设我有以下意图。如果用户按照给定的流程进行操作,效果很好,在该流程中,他需要先像猫一样回答,然后在能够看到猫图片的响应之前回答是。
但是,现在我希望漫游器以这种方式做出响应,即他/她不需要完全遵循给出的流程。
例如,如果使用说我想看一张猫图片。然后,机器人会响应猫的图片,而用户无需经过您喜欢猫的流程。
当然,我可以复制并重复每个后续意图。但这意味着代码会重复。 实现这种情况的正确方法是什么?
答案 0 :(得分:0)
您应该能够使用Events来实现这一点,它们被用来触发一个Intent。
在您的情况下,您可以在Intent页面(在Contexts之后)定义事件(EVENT_ASK_CAT),然后使用实现(webhook)触发事件。
如果实现Java webhook(使用dialogflow.v2.model)
GoogleCloudDialogflowV2EventInput eventInput = new GoogleCloudDialogflowV2EventInput();
eventInput.setName("EVENT_ASK_CAT");
response.setFollowupEventInput(eventInput);
这将是相应的REST响应:
{
"followupEventInput": {
"name": "EVENT_ASK_CAT"
},
"languageCode": "en-US"
}
如果您不想部署自己的Webhook,也可以选择使用嵌入式Firebase编辑器。
祝你好运!
答案 1 :(得分:0)
请记住,意图捕获的是用户所说的内容,而不是您的处理方式。
在您提供的示例中,您可以创建另一个顶级Intent,名为“向猫图片询问”。
在您的履行代码中,“您想看猫图片吗?-是”和“问猫图片”都可以调用 same 处理函数。因此,没有代码重复-它们都只是调用相同的函数。