我正在构建一个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
请求,因此执行我想要的操作有些棘手(或者更有可能我只是不知道该怎么做)
任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
Twilio开发人员推广人员在这里。
大多数情况下,消息挂钩是无状态的,通常人们将状态保持在自己的数据存储中。但是,您可以使用cookies that will be send back and forth in a timespan of 4 hours。这样,您可以保留会话数据。
您可能还想看看Autopilot,它使您可以使用collect
在一个任务中收集多个答案。
希望有帮助。很高兴回答其他问题。 :)
编辑: