如何跟踪用户回答的问题?

How to keep track of what question user is responding to?

我的 Messenger 聊天机器人提出的一些问题需要文本输入。在 button template 中,我可以设置 payload,这样我就知道用户究竟选择了什么,并据此进行处理。但是对于文本回复,如果用户回答与 "Change address, Billing, Returns, etc." 有某种关系,我需要过滤例如:

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,所以我做了什么,我创建了额外的列:

  • expecting_billing_info
  • expecting_phone_number_update
  • 等等

我默认将其设置为 0,但是当机器人问这样的问题时:

Would you like to change your phone number?

我将其设置为 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 有一天也能为普通消息发布此回发功能! :)