- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很困惑应该如何实现 gmail API 中的监视功能来接收 push notificatons在 node.js 脚本中。我是否应该在无限循环或其他方式中调用该方法,以便它在调用后不会停止收听电子邮件通知?
这是我在 node.js 中编写的示例代码:
const getEmailNotification = () => {
return new Promise(async (resolve, reject) => {
try{
let auth = await authenticate();
const gmail = google.gmail({version: 'v1', auth});
await gmail.users.stop({
userId: '<email id>'
});
let watchResponse = await gmail.users.watch({
userId: '<email id>',
labelIds: ['INBOX'],
topicName: 'projects/<projectName>/topics/<topicName>'
})
return resolve(watchResponse);
} catch(err){
return reject(`Some error occurred`);
}
})
谢谢!
最佳答案
要通过 PUB/SUB 接收推送通知,您需要创建一个网络钩子(Hook)来接收它们。这是什么意思?您需要一个 WEB 应用程序或任何类型的服务来公开可以接收通知的 URL。
如推送中所述subscription documentation :
The Pub/Sub server sends each message as an HTTPS request to the subscriber application at a pre-configured endpoint.
The endpoint acknowledges the message by returning an HTTP success status code. A non-success response indicates that the message should be resent.
设置观看通知的 channel 可以概括为以下步骤(the documentation 你指的是它们):
gmail-api-push@system.gserviceaccount.com
添加为 Pub/Sub Publisher
。Users.watch()
指明您希望它收听什么类型的邮件方法(这是您在脚本中所做的)。我给你一个使用 Apps Script 的例子(这是一种简单的可视化方法,但这可以从任何类型的 WEB 应用程序实现,因为你使用的是 Node.js 我想你熟悉 Express.js或相关框架)。
首先我创建了一个 new Google Apps Script project ,这将是我的网络 Hook 。基本上我希望它在我之前创建的 Google 文档中记录所有 HTTP/POST 请求。为此,我在 Express 中使用了等于 app.post()
的 doPost()
。如果您想进一步了解 Apps Script 的工作原理,可以访问 this link ), 但这不是主题。
代码.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 应用程序部署到互联网。
我在 Cloud Console 中选择了一个项目,如 Prerequisites of Cloud Pub/Sub 中所示.
在这个项目中,我创建了一个 new topic我称之为 GmailAPIPush
。之后,单击 Add Main
(在主题部分的右侧栏中)并添加 gmail-api-push@system.gserviceaccount.com
和 Pub/子发布者
角色。这是 requirement授予 Gmail 发布通知的权限。
在同一个项目中,我创建了一个订阅。我将其指定为 Push 类型,并添加我之前创建的 Web App 的 URL。
这是最关键的部分,它决定了您希望应用程序如何工作。如果您想知道哪种类型的订阅最适合您的需求(PUSH 或 PULL),您有一个 detailed documentation这将帮助您在这两种类型之间做出选择。
最后我们剩下最简单的部分,配置 Gmail 帐户以在邮箱上发送更新。我将从 Apps 脚本执行此操作,但它与 Node 完全相同。
const watchUserGmail = () => {
const request = {
'labelIds': ['INBOX'],
'topicName': 'projects/my_project_name/topics/GmailAPIPush'
}
Gmail.Users.watch(request, 'me')
}
函数执行后,我发送一条测试消息,瞧,通知出现在我的文档中。
回到你所揭露的案例,我将尝试用一个比喻来解释。想象一下,您有一个邮箱,正在等待一封非常重要的信件。因为你很紧张,你每 5 分钟检查一次信件是否到达(类似于你用 setInterval
提出的建议),这使得你大部分时间去检查你的邮箱,那里不是什么新鲜事。但是,每次 postman 来时,您都会训练您的狗吠叫(推送通知),因此您只有在知道有新信件时才去检查邮箱。
关于node.js - users.watch(在 gmail google api 中)如何收听通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71924157/
在 Elastic Watcher 的官方网站上,他们说 Watcher 是 Elasticsearch 的插件,可根据数据的变化提供警报和通知 可以通过定期 Elasticsearch 查询 识别相
我有一个配置了 watch OS1 架构的项目。现在我想在同一个项目中只支持 watch OS2 架构。因此,为了在现有项目中仅配置 watch OS2,我删除了 watch OS1 的所有目标,包括
我想从我的 xcode 项目生成一个 .watchface 文件。有什么方法可以从默认 watch 应用程序之外创建 .watchface 文件吗? 我找到了一个网站Facer ,他们提供定制选项并从
我的手机在 Xcode 中被列为 ineligible target 并在旁边显示(没有配对的 Apple Watch)。 我的 Apple Watch 在 iOS 设备下注册。我可以看到UDID。
最近我在 gulp watch 上遇到错误,我用谷歌搜索并试图解决这个问题,但没有成功。有谁知 Prop 体原因吗? 应用程序基于 AngulerJs 1.3 并运行在 npm 5.7.1/node
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
我有一个并发症,可能需要每 5 分钟更新一次。这很容易总结为每天 120 次更新。有没有办法只在用户唤醒 watch 时更新? 最佳答案 我认为您的问题的答案是否,目前没有办法只在用户唤醒 watch
有没有人有苹果 watch 在没有任何额外应用程序或集成设备的情况下生成的数据类型列表?它必须是 these 的子集,但我无法弄清楚哪些 最佳答案 数据类型的确切列表取决于型号,但最新的 Apple
在我的苹果 watch 扩展中,我想使用长按手势功能。是否有任何 api 等效于 UILongPressGestureRecognizer。我的要求是,在 watch 扩展上,我有表格想要长按单元格,
我一直在互联网上关注很多教程来学习如何设置并发症。按预期设置并发症我没有问题。 直到初始时间线条目过期。 12 小时后,我不知道如何更新它以保持并发症的存在。我将在下面分享我拥有的所有内容,希望有人可
今天几乎是偶然的,我偶然发现了索尼正在开放固件开发并在他们自己的引擎盖下创建一个项目的公告: http://developer.sonymobile.com/services/open-smartwa
目前用于语音听写的方法并不忙。使用的方法是“presentTextInputControllerWithSuggestions”。它遵循单个语音输入“VoiceInputButton -> Speak
我在获取 gulp-watch 时遇到问题或 gulp-watch-less在遵循记录的示例后触发。我最初解决的问题是lazypipe(此处未显示),但在我看来,我在使用插件的方式上做错了。这是我的简
我正在使用 Xcode 开发 Apple Watch 应用程序。我想在屏幕的左上角放置一些文本,与列出时间的位置相邻。 当我将标签向上拖动到屏幕的一部分时,它会自动向下对齐。 我看到大多数 Apple
我似乎找不到在哪里设置我的 Apple Watch 应用程序的产品名称。我确实看到了产品名称选项,但更新它没有任何作用。也看不到文档中的任何内容 最佳答案 为了让您的应用程序名称在 iPhone 上的
只是一个简单的问题。 选项和实例方法有什么区别? 基于 watch 示例,我们可以将 watcher 实现为一个选项( https://v3.vuejs.org/api/options-data.ht
是否可以设置count而不会触发 $watch打回来? $scope.count=1; $scope.$watch('count',function(){...}); 谢谢。 最佳答案 您可以使用 s
对于 sass 目前我正在使用 sass --watch path1:path2 将 scss 文件编译为 css 但我什至发现 compass watch path1:path2 还。这两款 wat
“事件”应用程序是否有 API?例如,我想从应用程序的“锻炼”部分检索信息(您燃烧的卡路里),我想检索您第一次打开应用程序时输入的个人信息。那可能吗?我如何检索这些信息? 最佳答案 没有专门针对事件应
有什么方法可以在 Apple Watch 上启用/配置 Wi-Fi 代理服务器吗? 我们想通过 Charles 测试一些东西,所以我们想将 Apple Watch 与 Charles 连接起来。 我没
我是一名优秀的程序员,十分优秀!