我正在写一个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");
}
}
}
一切都已设置并运行。但是当收到回发时,我想在完成之前等待用户的回复,所以我可以保存文本。就像我之前说的那样,它可以是任何意义我不能像我用“开始”那样写一个if语句。我也只想在点击回发按钮后保存文本。
我正在考虑添加一个while循环并在完成回发功能之前等待接收文本,但无法弄明白。
那么在发送带回发的消息后,我将如何等待文本?
感谢任何帮助,谢谢!
答案 0 :(得分:1)
我已经尝试了很长时间来找到一种方法来存储发件人使用消息ID和消息时间发送的文本无济于事。对我有用的唯一技术是声明一个名为“状态”的全局变量。然后在我发送的每封邮件的末尾,我更改了变量&#39; state&#39;的值。类似于&#39; 001&#39;或&#39; 002&#39;。因此,如果我想访问我发送的特定邮件的回复,我会放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
我希望这有帮助!
答案 1 :(得分:0)
基本上没有办法满足您的要求。 所以你唯一能做的就是要求用户在前缀中输入带有一些字符的文本,例如用'?'或'#'或其他你可以解析的东西。