等待一个Facebook Messenger的机器人的文本答复

我正在写一个Facebook Messenger的机器人,并试图在回发后存储文本回复。 我的意思是我有一个消息,发回一个post,并根据他们select什么选项,他们可以键入一个消息,我存储该文本。 问题是我只想保存这个文本后,他们select一个选项的回发消息。 此外,文本可以是任何东西,所以我不能写一个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"); } } } 

一切都build立和运行。 但是,收到回发后,我想在完成前等待用户的回复,以便我可以保存文本。 就像我之前说过的那样,它可以是任何意义,我不能只是写一个if语句,就像我对“开始”所做的那样。 我也只想在点击回发button后保存文本。

我正在考虑添加一个while循环,并在完成回发函数之前等待文本被接收,但无法弄清楚。

那么在我发送邮件后,如何等待文本呢?

任何帮助表示赞赏,谢谢!

我也尝试了很长时间来find一种方法来存储由发件人使用消息ID和消息时间发送的文本无济于事。 唯一的办法是为我声明一个名为“state”的全局variables,然后在发送的每条消息的末尾,我将variables“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 

我希望这有帮助!

基本上没有办法做你的要求。 所以你唯一能做的就是要求用户用前缀中的某些字符input文本,例如用'?' 或“#”或其他你可以parsing的东西。