我正在使用以下库将机器人连接到 Google Pub/Sub 端点,以执行对卡片点击事件的简单回复。
Google.Apis.HangoutsChat.v1 1.34.0.1233
Google.Cloud.PubSub.V1 1.0.0-beta18
当我构建我的卡片时,UI 中的一切看起来都很正常,包括应该引发事件的按钮。
主题和订阅包含默认设置,遵循此处的指南
我从谷歌文档中找到了以下关于重试的信息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
有趣的是,尝试创建一条新消息以响应点击事件会导致机器人显示“无法连接到机器人。稍后再试”,但会显示 3 条新消息。此外,当指定任意线程键时,该键永远不会在机器人的响应中回显。