0

您好我正在尝试在 dialogflow cx 中创建一个流程,如果有多个选项,我希望我的用户选择 1 个选项,其中所有选项都是按钮。我已经使用了默认有效负载,但不确定如何将点击了哪个按钮发送回我的 webhook 并返回相应的信息,目前如果我点击按钮,它只会打开 example.com,如果我排除链接,它会在新页面中打开相同的页面标签。

 {
                "type": "button",
                "icon": {
                    "type": "chevron_right",
                    "color": "#FF9800"
                },
                "text": "Button text 1",
                "link" : "www.example.com",
                "event": {
                    "name": "some name",
                    "languageCode": "en",
                    "parameters": {}
                }
   }
4

1 回答 1

1

对于您的用例,由于按钮响应类型在单击时始终重定向到页面,因此您可以考虑使用建议芯片

{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Chip 1"
          },
          {
            "text": "Chip 2"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}

当用户点击它时,建议芯片就像用户文本查询一样,因此,您可以创建一个可由芯片文本触发的路由,并从发送到您的 webhook 的webhook 请求中获取文本查询以返回相应的信息. 例如:

意图:

在此处输入图像描述

路线:

在此处输入图像描述

然后在您的 webhook 中,您可以在textwebhook 请求的字段中获取参数值,您将参考该参数值,以便使用相应信息创建 webhook 响应。

下面是一个使用 Express 的 Node.js 示例:

app.post("/webhook", (req, res) => {
  let option = req.body.text;
  let jsonResponse = {
    fulfillment_response: {
      messages: [
        {
          text: {
            //fulfillment text response to be sent to the agent
            text: [`You've chosen the ${option} option`]
          }
        }
      ]
    }
  };
  res.json(jsonResponse);
});

或者,您也可以使用实体类型并将所选芯片分配到一个参数中,该参数也将发送到您的 webhook。

要将芯片的文本分配给参数,路线的意图应该包含训练短语,这些短语被注释到包含所有选项的实体类型。例如:

意图:

在此处输入图像描述

实体类型:

在此处输入图像描述

然后在您的 webhook 中,您可以在 webhook 请求的intentInfo .parameters.parameter_id.resolvedValue字段中获取参数值,您将参考该字段以使用相应信息创建 webhook 响应。

下面是一个使用 Express 的 Node.js 示例:

app.post("/webhook", (req, res) => {
  let option = req.body.intentInfo.parameters.options.resolvedValue;
  let jsonResponse = {
    fulfillment_response: {
      messages: [
        {
          text: {
            //fulfillment text response to be sent to the agent
            text: [`You've chosen the ${option} option`]
          }
        }
      ]
    }
  };
  res.json(jsonResponse);
});

结果:

于 2021-06-28T06:58:38.850 回答