我正在尝试构建一个小型Python工具,将我们的Helpdesk软件(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每天做一次这样的工作并清理收件箱,但不是真的喜欢这个。不知道怎么解决这个问题?也许我错过了一些可以帮助的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))
也许可以将会话从常规收件箱移动到“完成”文件夹,这可以解决它?
经过一些研究后,我在这里找到了解决方案:FbChatBot mark message as Read
您无法更新未读计数,但您可以让所有会话自动移至“完成”文件夹,以便不再使用“切换协议”显示在您的收件箱中:https://developers.facebook.com/docs/messenger-platform/handover-protocol
该应用必须设置为“主接收器”和“页面收件箱”作为“辅助接收器”。
所有对话现在都将移至“完成”。只需确保在messenger webhook设置中设置正确的权限:
没有它就没有错误,但是消息将保留在收件箱中并且不起作用。