问题
尝试使用 Gmail API 监视功能让 Gmail API 仅向 Cloud Pub/Sub 发送新消息,但在设置 labelId 以便仅筛选 INBOX 时,我仍然会收到所有更改、发送的文件、草稿等的通知.
我在网上查了一下,发现有人遇到了这个问题,甚至还有一个错误https://issuetracker.google.com/issues/36759803。
但我发现有点奇怪的是,整个过滤功能都不起作用,而且根据错误报告,这个问题已经存在了 5 年。让我觉得只有我做错了事。如果能听到任何人能做到这一点,那就太好了。
我在哪里
我正在使用 Gmail API,尝试让我的 Gmail 帐户将消息发布到 Cloud Pub/Sub。我已经设法做到了这一点,但是我试图将我收到的通知过滤为新消息。这就是我遇到问题的地方。
根据此 Gmail API 文档,看来我必须调用的只是下面的代码,应该就是这样。不过,我要补充一点,我称其为 Kotlin 等效项,但我认为这并不重要。
request = {
'labelIds': ['INBOX'],
'topicName': 'projects/myproject/topics/mytopic'
}
gmail.users().watch(userId='me', body=request).execute()
我的电话:
val request = WatchRequest().apply {
labelIds = listOf("INBOX")
topicName = "projects/myproject/topics/mytopic"
}
gmail.users().watch("me", request).execute()
我尝试过的其他事情
我尝试添加 labelFilterAction = Include 和其他变体,但它们似乎都被忽略了。
在尝试了 ziganotschka 列出的想法后,我更加确信该问题与特定客户端库无关。
我设法与 Google 的某人交谈,后者又联系了 G-mail API 团队。他们表示,他们知道这是一个问题,自 2015 年以来一直是一个问题,很可能是由他们当时所做的更改引起的。
票证仍然开放,但看起来不会被修复。
labelIds
、labelFilterAction
和 topicName
,如此处"UNREAD"
而不是 "INBOX"
这可以通过在 WatchRequest 对象中包含 [1]
labelFilterBehavior: 'include'
来修复。
[1] - https://issuetracker.google.com/issues/36759803#comment73