如何通过 webhook 在 dialogflow 上回复来自 web demo 的消息

how to reply message from web demo on dialogflow via webhook

我目前正在尝试将聊天机器人添加到我的网站。 我正在将 Web 演示集成到用于我们的 lIne 机器人的代理上。 其中一些响应由 lambda webhook 处理。

我想问的是我们可以使用 lambda 发送对网络演示的响应吗? 如果可以,那么我该如何发送它们? 应该有一些 id 吧?我们是否使用 HTTP post 请求发送它们? 我找不到示例。

并且对于某些具有多个由 dialogflow 处理的响应的意图,它只能发送其中一个。 这是为什么?我应该怎么做才能通过 dialogflow 发送所有这些?

是的,可以实现,可以参考给出NodeJs代码,

const express = require("express");
const bodyParser = require("body-parser");
const apiai = require("apiai");
const request = require("request");

const app = express();
app.use(bodyParser.json());
app.set("port", process.env.PORT || 5000);


app.post("/", (req, res) => {
  //console.log(req.body)
  const action = req.body.result.action;
  if (!req.body || !req.body.result || !req.body.result.parameters) {
    return res.status(400).send("Bad Request");
  }
  console.log("--------------------------------");
  console.log("Action =>", action);
  console.log("--------------------------------");
  switch (action) {
    case "price.search":
            const webhookReply = `Sorry NO book found in store.`;
            res.status(200).json({
              source: "webhook",
              speech: webhookReply,
              displayText: webhookReply
            });
      break;

    default:
      break;
  }
});

app.listen(app.get("port"), function() {
  console.log("* Webhook service is listening on port:" + app.get("port"));
});

对于每个 intent,我们必须在 dialogFlow 中定义一个 action

因此,当用户输入任何查询时,您的 webhook 将被触发 进入 switch case 以找到特定的操作并形成该 case,您可以将重播发送回您的机器人。