我看到的问题是,当我向另一个用户发送消息时,PubSub似乎在一秒钟内两次使用略有不同的history_id和message_id,但订阅名称和用户电子邮件都是相同的。
我知道PubSub保证至少一次交付,所以接收重复的消息并不是不合理的,但因为它一直在发生,而且message_id不同,我认为根据下面的PubSub文档,可能会有多个推送请求:
Cloud pub/sub为每个消息分配唯一的message_id
,该消息可用于检测订阅者接收的重复消息。但是,这将不允许您检测同一数据上的多个发布请求所产生的重复项。
service.users().stop()
以确保没有多次调用watch()
,然后再次开始watch()
.我已经调查了PubSubIO,以确保准确地一次交付,但我认为如果我一直收到多条PubSub,我设置Webhook的方式肯定有根本性的问题。
编辑:这是我必须观察我的Gmail帐户变化的代码。我正在使用一个具有域范围权限的服务帐户,以便访问整个域中的帐户
public static Map<String, String> watchInbox(Gmail service) throws IOException {
Map<String, String> watchInboxResponse = new HashMap<>();
List<String> labelsToWatch = Arrays.asList("INBOX", "SENT");
String topicName = "projects/subscription-name/topics/topic-name";
WatchRequest request = new WatchRequest();
request.setLabelIds(labelsToWatch);
request.setTopicName(topicName);
WatchResponse response = service.users().watch("me", request).execute();
watchInboxResponse.put("historyId", response.getHistoryId().toString());
watchInboxResponse.put("expiration", response.getExpiration().toString());
return watchInboxResponse;
}
我将historyid和Expersion插入到数据库中,并在收到webhook调用时使用它来检查是否需要再次调用watch()
,如果从上次调用watch
已经超过24小时(如Google所建议的)。
我在实现Google Pub/Sub观看请求时也有类似的行为。
当你写邮件时,Gmail所做的是创建系统标签“发送和草稿”,并不断地用新的messageId和标签“发送和草稿”保存草稿,你订阅了对“收件箱和发送”的任何更改,所以你会在你的webhook上被击中两次或更多时间!!
来自Gmail的消息总是包含标签,你必须过滤那些有标签草稿的消息。
//Explicitly avoid further processing
bool isdraft = y.Message.LabelIds.Contains("DRAFT");
null null 谢谢!!!
任何关于我如何做到这一点的想法或任何可以帮助我的例子。谢谢你。
我是谷歌脚本的新手,不知道是否有人能帮我。 我有一个共享的谷歌电子表格,基本上是用新的员工信息更新行。 我希望只有当插入这些新员工行时,特定列(比如F列)上的“ABC”字符串匹配时,才会触发电子邮件。基本上,电子邮件触发器会让我们的团队知道如何设置新的员工帐户。 有人能帮我吗?我不知道如何进行字符串匹配,也不知道如何让它专门发送给固定的电子邮件收件人。我已经安装了Python、gspread和gd
我是php新手,我正在制作一个从数据库获取数据的计划页面。从数据库中,我选择了电子邮件的发送时间和日期。我想做的是,如果发送日期和时间已经到了,系统应该向该地址发送电子邮件。 对于电子邮件发送,我使用此API。 这是我的代码,我应该在其中添加它来执行这样的功能。我想得到三样东西。1.从已到达时间的数据库中提取数组。2.使用循环将它们存储在数组中。3.通过循环向他们发送电子邮件。这是我的密码。
我已经建立了一个谷歌表单,我的回复被记录在一个电子表格中。理想情况下,我希望回复也通过电子邮件发送。
我试图从我的应用程序发送电子邮件,我在android上的电子邮件客户端中看到了应有的链接,但当我检查电子邮件接收器时,没有链接。 这是我的代码: “文本”是html。 谢谢你。