Node.js 正在使用Facebook messenger机器人等待文本回复

Node.js 正在使用Facebook messenger机器人等待文本回复,node.js,facebook,bots,facebook-chatbot,Node.js,Facebook,Bots,Facebook Chatbot,我正在写一个Facebook messenger机器人,并试图在回发后存储一条文本回复。我的意思是,我有一条发回帖子的消息,根据他们选择的选项,他们可以键入一条消息,然后我存储该文本。问题是,我只想在他们为回发邮件选择一个选项后存储此文本。而且文本可以是任何内容,所以我不能为它编写if语句 这是我的密码: app.post('/', function (req, res) { messaging_events = req.body.entry[0].messaging; for (i =

我正在写一个Facebook messenger机器人,并试图在回发后存储一条文本回复。我的意思是,我有一条发回帖子的消息,根据他们选择的选项,他们可以键入一条消息,然后我存储该文本。问题是,我只想在他们为回发邮件选择一个选项后存储此文本。而且文本可以是任何内容,所以我不能为它编写if语句

这是我的密码:

app.post('/', function (req, res) {
  messaging_events = req.body.entry[0].messaging;
  for (i = 0; i < messaging_events.length; i++) {

    event = req.body.entry[0].messaging[i];
    sender = event.sender.id;

    if (event.message && event.message.text) {
      text = event.message.text;

      if (text == "Start") {
        sendTextMessage(sender, "Hey User! I'm a bot");
      }
    }

    else if (event.postback) {
      // These are for chosing availibility
      if (JSON.stringify(event.postback) == '{"payload":"postback"}') {
        setTextMessage(sender, "Postback recieved");
      }
    }
}
一切都已设置并运行。但是当收到回发信息时,我希望在完成之前等待用户的回复,以便保存文本。就像我之前说的,它可以是任何东西,这意味着我不能像在Start中那样只写if语句。我也只想在他们点击回发按钮后保存文本

我正在考虑添加一个while循环,并在完成回发功能之前等待文本被接收,但没有弄清楚

那么,在我发送回邮消息后,我将如何等待文本


感谢您的帮助,谢谢

基本上没有办法满足您的要求。
因此,您只能要求用户输入前缀中带有一些字符的文本,例如带有“?”或其他您可以解析的字符。

我也尝试了很长一段时间,试图找到一种使用消息ID和消息时间来存储发送者发送的文本的方法,但没有成功。唯一对我有效的技术是声明一个名为“state”的全局变量,然后在我发送的每条消息末尾,我将变量“state”的值更改为类似“001”或“002”的值。因此,如果我想访问对我发送的特定消息的回复,我会将if state=='001'。以下是一个例子:

var state = '000';

// if user sends me 'I want dogs'
    sendTextMessage(sender, "How many dogs?");
    state = '001';

// if user sends me 'I want cats'
    sendTextMessage(sender, "How many cats?);
    state = '002';

/* now if I want to access the user's response to how many cats they want, I simply write in an if statement:
if (state === '002' && /^\d+$/.test(text)) {
    var numberOfCatsWanted = text
}

// in this last part I essentially write 'if the state is '002' and the text contains numbers then a new variable will store the value of the text
我希望这有帮助