如何使用Twilio Whatsapp API保留状态

时间:2019-04-29 10:24:02

标签: javascript node.js twilio

我正在构建一个Twilio机器人,我很难理解如何在机器人接收/发送的每条消息中保持状态。

例如:

bot: "Hello"
user: "show me movies"
bot: "in what language?"
user: "english"

因此,在这一点上,我向机器人询问了两件事,电影和电影的语言。但是,如何保存机器人的上下文呢?即“电影”?我试图挖掘Twilio docs,但那里没有太多信息。

我的代码如下:

// whatsapp/main.js 

const accountSid = "accountSid";
const authToken = "authToken";
const client = require("twilio")(accountSid, authToken);
const MessagingResponse = require("twilio").twiml.MessagingResponse;

function sendResponse(req, res, next) {
  console.log("echo:", req.body.Body);
  const twiml = new MessagingResponse();
  twiml.message(req.body.Body);
  res.writeHead(200, { "Content-Type": "text/xml" });
  res.end(twiml.toString());
}

module.exports = { sendMessage, sendResponse };

// api.js

const express = require("express");
const router = express.Router();
const { sendResponse } = require("../actions/whatsapp/main");

router.post("/incoming", (req, res, next) => {
  console.log(req.body);
  sendResponse(req, res, next);
});

module.exports = router;

因此,目前,我只是回显该机器人收到的消息。主要问题是机器人收到的每个消息都是一个新的post请求,因此执行我想要的操作有些棘手(或者更有可能我只是不知道该怎么做)

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

Twilio开发人员推广人员在这里。

大多数情况下,消息挂钩是无状态的,通常人们将状态保持在自己的数据存储中。但是,您可以使用cookies that will be send back and forth in a timespan of 4 hours。这样,您可以保留会话数据。

您可能还想看看Autopilot,它使您可以使用collect在一个任务中收集多个答案。

希望有帮助。很高兴回答其他问题。 :)

编辑:

这里也是the particular part in the docs