我已经通过推送通知设置了 Pub/Sub 订阅,以使用这些参数观看 Gmail 收件箱:
watch_request = {
'labelIds': ['INBOX'],
'topicName': '...'
}
我想在每次收到新电子邮件时采取行动,但是我有 2 个相互矛盾的问题,感觉它们阻止我避免处理重复项。
我可以通过保存最近的 historyId 并获取从那时起的所有历史记录来接受 (2),但是由于 (1) 在第二个触发器通过之前我没有时间写入数据库,所以我会最终在第二次触发时使用旧的 historyId。我可以让我的代码同步,但这感觉并不理想。
我可以看到在 Pub/Sub 调用我的 webhook 之前的几毫秒,有一个具有这种形式的历史对象
"id": "1287911",
"messages":
[
{
"id": "....",
"threadId": "...."
}
],
"messagesAdded":
[
{
"message":
{
"id": ".....",
"threadId": ".....",
"labelIds":
[
"UNREAD",
"INBOX"
]
}
}
]
}
但我似乎无法让 Pub/Sub 使用与该对象相关的 historyId 可靠地触发我的 webhook。
任何建议将不胜感激!
感觉我最好每分钟拉取电子邮件?