【问题标题】:Google GMail callback when someone reply to thread有人回复主题时的 Google GMail 回调
【发布时间】:2017-07-04 05:38:31
【问题描述】:

我正在使用 Google GMail Api。一切都适用于同步请求。但是,当有人以某种方式回复给定的 thread_id 到回调时,我希望得到通知。

我发现这篇关于推送通知的文章https://developers.google.com/gmail/api/guides/push?hl=pl 很棒,但我仍然不知道如何设置我上面描述的观察者。

顺便说一句,我使用的是 PHP,但我只需要了解它的工作原理以及如何在 API 和应用程序之间设置这种通信。

【问题讨论】:

    标签: api gmail gmail-api asynccallback


    【解决方案1】:

    当前没有可用的 API 来检测/观察(类似于回调的行为)是否有针对特定 thread_id 的回复。

    您必须自己进行检查,进行一些轮询(使用users.threads.get)以查看是否有回复。类似于 OP 在 post 中所做的事情(强调我的):

    我们有一个网络应用程序,它使用 Gmail API 来代表我们的用户自动发送某些电子邮件。当应用程序发送电子邮件时,它会存储 Gmail API 返回的 threadId。 然后它使用这个 threadId 轮询 Gmail users.threads.get API,寻找回复。当检测到回复时,它会暂停以后的电子邮件。

    【讨论】:

    • 好的,我理解这种方法,例如,如果有人回复每个 threadId,您会每小时获取一次谷歌答案。我只是想知道是否可以将此任务留给 google API,如果有人回复,他们会通过某种回调通知我。
    • 不。不幸的是,您必须自己实现它。
    【解决方案2】:

    您可以使用 Gmail API 提供的推送通知。该文件可在此处获得: https://developers.google.com/gmail/api/guides/push?hl=pl#python
    这非常简单。创建一个主题,然后为该主题创建一个推送订阅。它需要一个指向您的 Web 应用程序的 webhook。为文档中提到的 Gmail 服务帐户授予必要的权限。
    使用以下 Python 代码获取通知:

    request = {
      'labelIds': ['INBOX'],
      'topicName': 'projects/myproject/topics/mytopic'
       }
       
    gmail.users().watch(userId='me', body=request).execute()
    

    我们收到一个带有 HistoryId 的响应。跟踪 HistoryId 以来的所有消息可以这样完成:

    history = (service.users().history().list(userId=user_id, startHistoryId=start_history_id)
    

    我发现以下视频很有帮助:
    https://www.youtube.com/watch?v=wjHp9_NAEJo

    【讨论】:

      猜你喜欢
      • 2016-02-01
      • 1970-01-01
      • 2016-12-21
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2013-12-27
      • 2020-03-21
      相关资源
      最近更新 更多