Gmail API 监视请求不过滤标签 ID

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

问题

尝试使用 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 和其他变体,但它们似乎都被忽略了。

gmail gmail-api
3个回答
2
投票

在尝试了 ziganotschka 列出的想法后,我更加确信该问题与特定客户端库无关。

我设法与 Google 的某人交谈,后者又联系了 G-mail API 团队。他们表示,他们知道这是一个问题,自 2015 年以来一直是一个问题,很可能是由他们当时所做的更改引起的。

票证仍然开放,但看起来不会被修复。


1
投票

执行以下故障排除操作

  1. 提供请求正文,包括
    labelIds
    labelFilterAction
    topicName
    ,如此处
  2. 所指定
  3. 尝试使用标签
    "UNREAD"
    而不是
    "INBOX"
  4. 要排除与 Kotlin 实现相关的问题,请使用一种编程语言测试您的请求,该语言允许您以与文档中指定的方式完全相同的方式将请求作为 JSON 正文传递。

0
投票

这可以通过在 WatchRequest 对象中包含 [1]

labelFilterBehavior: 'include'
来修复。

[1] - https://issuetracker.google.com/issues/36759803#comment73

© www.soinside.com 2019 - 2024. All rights reserved.