我正在使用以下库将漫游器连接到Google Pub / Sub端点,以对卡点击事件进行简单回复。
Google.Apis.HangoutsChat.v1 1.34.0.1233
Google.Cloud.PubSub.V1 1.0.0-beta18
构造卡片时,UI中的一切看起来都很正常,包括应该引发事件的按钮。
遵循指南here
,主题和预订包含默认设置。我从Google文档中找到了有关重试here
的以下信息同步响应
机器人可以通过返回一个 HTTP响应中的JSON格式的消息有效负载。截止日期 同步响应是30秒。
来自机器人的同步响应总是发布在线程中 向机器人生成了事件。
点击按钮后,我的订阅者会收到 3个重复事件。这些事件对所有正确的元数据都具有正确的响应,但彼此之间是完全重复的,包括消息本身的ID。
我认为漫游器的响应没有必要有很大的延迟(此测试应该在<1秒内发生),因此我不确定为什么这些消息会重复。
我还尝试了在响应时(通过Thread
属性本身或ThreadKey
属性)来设置卡的线程ID,但是我总是在获得新的线程ID的情况下发布一条消息。
var cardMessage = MessageSender.Spaces.Messages.Create(new Message()
{
Space = new Space()
{
Name = inReplyToThisMessage.Space.Name
},
Thread = new Thread()
{
Name = inReplyToThisMessage.Thread.Name
},
Cards = new List<Card>()
{
card
},
}, inReplyToThisMessage.Space.Name);
var sendCardResult = await cardMessage.ExecuteAsync().ConfigureAwait(false);
//Thread id of sendCardResult does not match inReplyToThisMessage.Thread.Name no matter what
有趣的是,尝试创建新消息以响应click事件会导致漫游器显示“无法连接到漫游器。请稍后重试”,但显示3条新消息。另外,在指定任意线程密钥时,该密钥永远不会在机器人的响应中回显。
答案 0 :(得分:0)
确保正确返回主 event 方法。看起来正在发生的事情是您正在异步聊天,但随后聊天正在从实际事件方法本身中寻找响应。 Google传统上会在放弃前尝试 3 次(即使不需要30秒)
如果您在发出api请求后确实确实正确返回了事件调用,则您的代码中有某些内容导致Google Bot认为它没有得到响应,因此它尝试了三遍。由于问题可能是多方面的,因此我需要查看您如何接受和返回点击响应。
答案 1 :(得分:0)
此错误最终已由Google修复。