重置Facebook页面的未读消息计数(Facebook Graph API)

时间:2019-04-21 05:30:29

标签: python-3.x facebook facebook-graph-api

我正在尝试构建一个小型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))

也许可以将对话从常规的收件箱移到“完成”文件夹中来解决?

1 个答案:

答案 0 :(得分:0)

经过一些研究,我在这里找到了解决方案: FbChatBot mark message as Read

您无法更新未读计数,但是可以使用“切换协议”让所有对话自动移至“完成”文件夹,以使其不再显示在收件箱中:https://developers.facebook.com/docs/messenger-platform/handover-protocol

该应用必须设置为“主接收器”,“页面收件箱”为“辅助接收器”。

Messenger Platform Settings

所有对话现在都将移至“完成”。只要确保在Messenger Webhook设置中设置正确的权限即可:

App Permissions

没有它就不会有错误,但是邮件将保留在收件箱中并且不起作用。