簡體   English   中英

如何使用 Twilio Whatsapp API 保存狀態

[英]how to preserve state using Twilio Whatsapp API

我正在構建一個 Twilio 機器人,我很難理解如何保存機器人接收/發送的每條消息的狀態。

例如:

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

所以此時我向機器人詢問了兩件事,電影和電影的語言。 但是我怎樣才能保留機器人的上下文呢? 即“電影”? 我試圖深入研究 Twilio 文檔,但那里沒有太多信息。

我的代碼如下所示:

// 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請求,所以做我想做的事情有點棘手(或者我更有可能只是不知道該怎么做)

任何幫助將不勝感激,謝謝!

Twilio 開發人員布道者在這里。 👋

大多數情況下,消息掛鈎是無狀態的,通常人們將狀態保存在自己的數據存儲中。 不過,您可以做的是使用將在 4 小時內來回發送的 cookie 這樣你就可以持久化會話數據。

您可能還想看看Autopilot ,它允許您使用collect在一項任務中收集多個答案。

希望有幫助。 很高興回答更多問題。 :)

編輯:

這也是docs 中的特定部分

我有一個類似的問題,我只是想分享這個。 希望它可以幫助任何有類似問題的人

我閱讀了此答案中共享的鏈接@stefan judis我發現管理狀態取決於您可能沒有錯誤或正確的做法

以下是使用 whatsapp api 處理狀態的一些建議

  • 在我的情況下,我正在使用將用戶的每個響應緩存到內存中並將其用作我的狀態(以保留/記住同一用戶對新請求的先前響應)
  • 我也可以為此目的使用數據庫

希望這會有所幫助並幫助遇到同樣問題的任何人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM