首页 > 解决方案 > 对话流:followEventInput

问题描述

我想使用后续意图。我的用户说了一些启动意图,发送响应并启动另一个,发送响应并启动另一个...我使用这些功能

function send_message_follow(res,output,token,quote,id,action,parametre){
    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify({
    "fulfillmentText" : output,
    "outputContexts": [ 
        {
            "name": id + "/contexts/connected",
            "lifespanCount": 5,
            "parameters": {
                "token": token, 
                "quote" : quote 
            }
        }
    ],
    "followupEventInput": {
        "name": action,
        "languageCode": "fr",
        "parameters": {
            "param": parametre,
        }
    }
}));`

function send_message_final(res,output,token,quote,id){ res.setHeader('Content-Type', 'application/json'); res.send(JSON.stringify({ "fulfillmentText" : output, "outputContexts": [ { "name": id + "/contexts/connected", "lifespanCount": 5, "parameters": { "token": token, "quote" : quote } } ] }));

但是,send_message_follow 不会显示输出。我只使用 send_message_final。我可以添加第一个输出作为参数来捕获其他输出,但这仅显示 1 个消息块。我想要每个意图 1 个。有没有办法来解决这个问题 ?谢谢

标签: javascriptdialogflow-esfulfillment

解决方案


不,没有办法“解决”这个问题。后续事件是一种从当前匹配意图重定向到另一个意图的方法。当前匹配的意图在被重定向之前没有机会响应。这意味着您将只有一个来自被重定向到最后的意图的响应。您无法通过使用后续事件重定向多个意图来编译来自多个意图响应的响应。

当从 webhook 触发后续事件时,将触发 webhook 响应中指定的事件。通过 webhook 触发事件通过 Dialogflow 将请求发送回以进行匹配,而不响应用户。发送给用户的响应就像用户触发了在 webhook 中触发的事件一样。在第二个意图与事件匹配后,Dialogflow 将执行任何必要的工作(例如 webhook 调用或对所需参数的额外提示)并发送回响应,就好像第二个意图是最初匹配的意图一样。

在此处输入图像描述

  1. 用户向 Dialogflow 发送请求。
  2. “意图 1”由 Dialogflow 匹配。
  3. 一个 webhook 请求被发送到您的履行服务器,这表明意图 1 已匹配。
  4. 您的履行服务器使用后续事件响应来响应 webhook 请求。
  5. Dialogflow 根据 webhook 响应中发送的后续事件重新匹配意图 2。
  6. Dialogflow 仅根据匹配的意图 2 向用户发送响应。Dialogflow 可能会发送另一个 webhook 调用,指示意图 2 已匹配,或者发送提示以提示意图 2 的未满足所需参数(如果已配置)。

推荐阅读