Summary
要通过PUB/SUB接收推送通知,您需要创建一个web钩子来接收它们.这是什么意思?您需要一个WEB应用程序或任何类型的服务来公开可以接收通知的URL.
如Push subscription documentation中所述:
发布/订阅服务器将每条消息作为HTTPS请求发送到预配置端点处的订户应用程序.
端点通过返回HTTP成功状态代码来确认消息.未成功响应表示应重新发送消息.
设置观看频道通知可总结为以下步骤(您所指的the documentation表示通知):
- Select/Create年内完成一个项目.
- 创建一个new PUB/SUB topic
- 为该主题创建一个subscription (PUSH).
- 添加necessary permissions,在本例中,将
gmail-api-push@system.gserviceaccount.com
添加为Pub/Sub Publisher
.
- 通过
Users.watch()
方法(这就是你在脚本中所做的)指出你希望它监听的邮件类型.
Example
我给你举了一个使用Apps脚本的例子(这是一个可视化它的简单方法,但这可以通过任何类型的WEB应用程序实现,因为你使用的是Node.js,我想你熟悉Express.js或相关框架).
首先我创建了一个new Google Apps Script project,这将是我的网络钩子.基本上,我希望它在我之前创建的Google文档中记录所有HTTP/POST请求.在Express中,我使用doPost()
等于app.post()
.如果你想更多地了解应用程序脚本的工作原理,可以访问this link),但这不是主要主题.
Code.gs
const doPost = (e) => {
const doc = DocumentApp.openById(<DOC_ID>)
doc.getBody().appendParagraph(JSON.stringify(e, null, 2))
}
后来我做了一个new implementation as a Web App,我说任何人都可以访问它,我写下URL供以后使用.这与部署 node 类似.将js应用程序连接到internet.
我在Cloud Console中 Select 了一个项目,如Prerequisites of Cloud Pub/Sub中所示.
在这个项目中,我创建了一个new topic,我称之为GmailAPIPush
.之后,点击Add Main
(在主题部分的右栏中)并添加gmail-api-push@system.gserviceaccount.com
和Pub/Sub Publisher
角色.这是一个requirement,授予Gmail发布通知的权限.
在同一个项目中,我创建了一个订阅.我告诉它是推送类型,并添加我之前创建的Web应用的URL.
这是最关键的部分,它决定了应用程序的工作方式.如果你想知道哪种订阅类型最适合你的需求(推送或拉送),你有一个detailed documentation,可以帮助你在这两种类型中进行 Select .
最后,我们只剩下最简单的部分,配置Gmail帐户以在邮箱上发送更新.我将从应用程序脚本中执行此操作,但它与Node完全相同.
const watchUserGmail = () => {
const request = {
'labelIds': ['INBOX'],
'topicName': 'projects/my_project_name/topics/GmailAPIPush'
}
Gmail.Users.watch(request, 'me')
}
一旦函数被执行,我就会发送一条测试消息,瞧,通知就会出现在我的文档中.
回到你揭露的 case ,我将try 用一个隐喻来解释它.想象一下,你有一个邮箱,正在等待一封非常重要的信.当你感到紧张时,你每5分钟go 判断一次信是否已经到达(类似于你建议的setInterval
),这使得大多数时候你go 判断你的邮箱,没有什么 fresh 事.然而,你训练你的狗在postman 每次来时吠叫(推送通知),所以你只有在知道你有新信件时才go 查看你的邮箱.