gpt4 book ai didi

gmail - Google Pub/Sub webhook 调用服务器后无法检索消息内容

转载 作者:行者123 更新时间:2023-12-03 14:18:55 32 4
gpt4 key购买 nike

我订阅了 Google Cloud Pub/Sub,创建了一个主题并创建了一个带有指向我服务器上 URL 的 webhook 的订阅。然后,我使用 Gmail API 在我在 Gmail 帐户中创建的特定标签上调用 watch,并将其与我创建的主题相关联。

当我的邮件到达我的 Gmail 帐户中的标签时,Webhook 会触发对我服务器上的 URL 的 POST 请求。但是不管邮件的内容是什么,POST 正文总是这样的:

{
"message": {
"attributes": {},
"data": "eyJlbWFpbEFkZHJlc3MiOiJteWVtYWlsQG15ZG9tYWluLmNvbSIsImhpc3RvcnlJZCI6MTIzNDU2N30K",
"messageId": "12345678900000", # only relevant to Pub/Sub
"message_id": "12345678900000",
"publishTime": "2017-04-16T15:42:08.968Z",
"publish_time": "2017-04-16T15:42:08.968Z"
},
"subscription": "projects/proj-name/subscriptions/sub-name"
}
data 字段是 Base64 编码的,在这种情况下是:
{"emailAddress":"myemail@mydomain.com","historyId":1234567}

这就是我每次得到的结果,无论电子邮件内容是什么。但是,如果从 google 开发者控制台运行发布测试, data 字段中的 base64 编码值是我指定的实际消息字符串。

我尝试使用来自 base64 解码的 data 值的 historyId 使用 Gmail API 对 history.list 进行后续调用,但我得到的只是这样的响应:
{"historyId": "1234567"}

我应该如何获取电子邮件内容?

最佳答案

有点晚,但其他人可能会感兴趣。答案是here .
基本上你可以从 watch 调用中获得一个 historyId。存储它。
然后,当您收到来自 Gmail 的通知时:

  • 跟踪历史 ID
  • 使用存储的 historyId(来自 watch 调用)获取历史列表(gmail.users.history.list)
  • 从历史记录中导入所有需要的消息
  • 完成后,用通知中的历史记录替换当前的历史记录。

  • 希望能帮助到你。

    关于gmail - Google Pub/Sub webhook 调用服务器后无法检索消息内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43439166/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com