我正在尝试构建一个小型Python工具,以将我们的帮助台软件(Helpscout)与我们公司的Facebook页面连接起来,以便能够直接在Helpscout中接收和答复来自客户端的消息。
我正在使用会话终结点捕获所有未读的会话:
conversations = api.get_object('[page_id]/conversations?fields=messages.limit(20){message,from},name, unread_count,message_count')
问题是,一旦我阅读了邮件,未读计数器将保持不变,直到我们直接从Facebook页面中打开那些邮件为止。花了很多时间来找到解决方案,但是显然没有选择重置计数器或以其他任何方式处理它的选择。
作为一种解决方法,我目前使用整体邮件计数,并在每次检查新邮件以仅加载新邮件时进行比较。效果很好,但是仍然存在所有消息在Facebook页面上保持未读状态的问题,并且每次调用API都会重新加载所有消息,直到我们手动单击它们。
考虑使用Selenium每天仅完成1次此工作并清理收件箱,但不是很喜欢。任何想法如何解决这个问题?也许我错过了一些可以提供帮助的API功能?
我使用Send API将消息发送回我们的客户,但也找不到任何以任何方式更新对话的选项来处理它:
data = {"recipient": {"id": "xxxxx"}, "message": {"text": message}}
response = requests.post('https://graph.facebook.com/v3.2/me/messages?access_token=xxxx', headers=headers, data=json.dumps(data))
也许可以将对话从常规的收件箱移到“完成”文件夹中来解决?
答案 0 :(得分:0)
经过一些研究,我在这里找到了解决方案: FbChatBot mark message as Read
您无法更新未读计数,但是可以使用“切换协议”让所有对话自动移至“完成”文件夹,以使其不再显示在收件箱中:https://developers.facebook.com/docs/messenger-platform/handover-protocol
该应用必须设置为“主接收器”,“页面收件箱”为“辅助接收器”。
所有对话现在都将移至“完成”。只要确保在Messenger Webhook设置中设置正确的权限即可:
没有它就不会有错误,但是邮件将保留在收件箱中并且不起作用。