无法从 Gmail Pub/Sub API 中消除重复项

问题描述 投票:0回答:0

我已经通过推送通知设置了 Pub/Sub 订阅,以使用这些参数观看 Gmail 收件箱:

    watch_request = {
        'labelIds': ['INBOX'],
        'topicName': '...'
    }

我想在每次收到新电子邮件时采取行动,但是我有 2 个相互矛盾的问题,感觉它们阻止我避免处理重复项。

  1. 每次收到新邮件时,Pub/Sub 都会触发对我的 webhook 的多次调用
  2. Pub/Sub 似乎没有使用包含 messagesAdded 的事件触发我的 webhook

我可以通过保存最近的 historyId 并获取从那时起的所有历史记录来接受 (2),但是由于 (1) 在第二个触发器通过之前我没有时间写入数据库,所以我会最终在第二次触发时使用旧的 historyId。我可以让我的代码同步,但这感觉并不理想。

我可以看到在 Pub/Sub 调用我的 webhook 之前的几毫秒,有一个具有这种形式的历史对象

            "id": "1287911",
            "messages":
            [
                {
                    "id": "....",
                    "threadId": "...."
                }
            ],
            "messagesAdded":
            [
                {
                    "message":
                    {
                        "id": ".....",
                        "threadId": ".....",
                        "labelIds":
                        [
                            "UNREAD",
                            "INBOX"
                        ]
                    }
                }
            ]
        }

但我似乎无法让 Pub/Sub 使用与该对象相关的 historyId 可靠地触发我的 webhook。

任何建议将不胜感激!

感觉我最好每分钟拉取电子邮件?

google-cloud-platform gmail gmail-api publish-subscribe
© www.soinside.com 2019 - 2024. All rights reserved.