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

Reset unread message count for Facebook page (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 功能?

我使用发送 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))

也许可以将对话从常规收件箱移动到 "Done" 文件夹,这可以解决问题吗?

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

您无法更新未读计数,但您可以使用 "Handover Protocol" 让所有对话自动移动到 "DONE" 文件夹,让它们不再显示在您的收件箱中:https://developers.facebook.com/docs/messenger-platform/handover-protocol

应用程序必须设置为 'Primary Receiver','Page Inbox' 必须设置为 'Secondary Receiver'。

现在所有对话都将移至 "DONE"。只需确保在 Messenger Webhook 设置中设置正确的权限即可:

没有它不会有错误,但消息会留在收件箱中,它不起作用。