【发布时间】:2017-01-06 14:31:41
【问题描述】:
我创建了一个运行良好的 Facebook Messenger 机器人。我用php创建的。
现在,我想添加一些新功能。当机器人所有者在 Messenger 中在线并开始回复消息时,机器人应该停止回复用户。
如何检测所有者何时开始回答?
【问题讨论】:
标签: php facebook bots facebook-messenger
我创建了一个运行良好的 Facebook Messenger 机器人。我用php创建的。
现在,我想添加一些新功能。当机器人所有者在 Messenger 中在线并开始回复消息时,机器人应该停止回复用户。
如何检测所有者何时开始回答?
【问题讨论】:
标签: php facebook bots facebook-messenger
我之前对此进行了测试。
您可以尝试订阅“message_echo”网络挂钩。当页面和机器人向用户发送消息时,将调用此 webhook。所以你需要区分哪个“message_echo”来自页面(一个人),哪个来自机器人。在 webhook 发送的 json 中,来自机器人的消息将在 message 对象中包含一个 app_id 键。
订阅此 webhook,您的服务器将获得大量点击。
【讨论】:
一个简单的想法是从管理员帐户向 Bot 发送消息。例如,如果管理员发送“STOP”,则 Bot 会停止发送消息,直到管理员发送“START”。
Bot 的传入事件包含发送者 ID。发件人 ID 必须与特定的管理员 ID 相关联。我发现为特定用户获取该 ID 的唯一方法是发送消息并打印出该 ID。 id 特定于 Bot 和用户组合。例如,我的 Bot 会使用这条 JS 行向我的个人帐户发送一条消息:
sendTextMessage(1073962542672604,fistName + " " + lastName + " " + messageText); // send a message to Matthew directly
听起来您的机器人正在工作,但如果您需要更多详细信息,请查看我的 Bot 和 source 代码。
只是为了好玩,我将此功能添加到我的 Bot。要查看 node.js 实现的详细信息,请在 app.js 脚本中搜索“isStopped”变量。
【讨论】: