无法让bot在对话的特定点使用“事件”或“FollowupEvent”与用户发起对话。解决方案是什么?

时间:2017-12-07 13:02:49

标签: python webhooks chatbot dialogflow

我的座席有一个已定义的对话流程。使用某个度量标准,在该对话流程中的某个点,代理应该向用户提示某事,用户没有说什么,机器人没有反应,它开始让用户知道某事。时间点。

因此,通过我的网络搜索和之前的对话流论坛讨论,'事件'似乎是能够做到这一点的工具。所以我有一个基于Python Django的Web服务器,它接收并响应我的Dialogflow代理的webhooks。我的聊天机器人界面是一个Android应用程序,我根据Dialogflow的github帐户(https://github.com/dialogflow/dialogflow-android-client)中的“Dialogflow-android-client”示例应用程序制作。通过此设置,基本会话聊天机器人运行良好。现在我正在尝试实现上面段落中描述的场景。

现在,为此,我实现了向Dialogflow代理发送POST /查询请求以调用事件(如Dialogflow文档中所示:https://dialogflow.com/docs/events#invoking_event_from_webhook)。它成功调用具有与之关联的特定事件的intent。在使用EVENT webhook调用该意图时,我以文档中描述的格式从代理返回到我的服务器的json响应。但客户端(Android应用程序和Dialogflow开发人员对话框检查控制台)都没有显示文本或说出事件触发意图的输出文本。我只在我的服务器上获取所有JSON信息,没有任何内容发送到客户端应用程序。为什么是这样?在之前的Dialogflow论坛讨论中,一位经验丰富的人表示,通过webhook触发事件,您只能将信息返回到您从其他地方发起触发的位置。这是真的吗?在同一个地方,据说在客户端应用程序中获取事件触发器响应的最佳方法是使用FollowupEvent工具。

这就是我正在做的事情,在我的服务器的webhook响应中,1个意图由用户说的东西激活,我在响应JSON中包含了FollowupEvent信息。但仍然没有来自事件触发意图的响应来自客户端应用程序。我认为在这种情况下,触发的意图不会仅被触发,因为如果它被触发,那么对该意图的POST webhook请求将来到服务器,而它没有。为什么不起作用?决议是什么?

以下是从我的服务器发送到Dialogflow代理的JSON(使用FollowupEvent):

{
    "contextOut": [],
    "speech": " ",
    "displayText": " ",
    "source": "PSVA-server",
    "followupEvent": {
        "event": {
            "name": "testr",
            "data": {}
        }
    }
}

在我的Dialogflow代理中,我创建了一个没有任何user_says

的intent

示例中,有一个事件“testr”在其中命名,有一个答案文本和'webhook'

选项已在履行中检查。

最后有没有更好的方法来实现我想要实现的内容?

0 个答案:

没有答案