我的Messenger聊天机器人正在询问的一些问题需要文本输入。在button template中,我可以设置payload,这样我就知道用户究竟选择了什么,并根据该信息进行处理。但是对于文本回复,我需要过滤用户答案是否与“更改地址,开票,退货等”有关。 例如:
bot-question: What is your new phone number?
user-answer: +123 123 12345
现在在后端,我正在这样做:
if(user-answer in_array('billing keywords') {
// code
} elseif (user-answer in_array('delivery keywords')) {
// code
} elseif (user-answer in_array('payments keywords')) {
// code
} elseif (user-answer in_array('change-phone-number keywords')) {
// Finally got where I wanted 🎉😒
}
不可能以某种方式在机器人问题中添加一些标签,所以我已经知道答案将与change-phone-number keywords
相关?例如这样:
"template_type" => "text",
"text" => "What is your new phone number?",
"payload" => "changing_phone_number"
最后,不可能从普通短信中获得一些postback
,所以我做了,我创建了其他列:
而且我默认将其设置为0
,但是当机器人询问类似问题时:
您想更改您的电话号码吗?
我将其设置为1
,并且当用户在其中输入时:
if (expecting_phone_number_update == 1) {
// 1. get the message
// 2. Check if it's correct phone number format
// 3. Reply based on 2. and update phone number
} elseif (expecting_billing_info == 1) {
// ...
}
这不是完全干净的解决方案,但是可以完成工作。我们希望Messenger也有一天会发布此回发功能,以接收正常消息! :)