2

我正在为 Javascript 使用 Bot Framework SDK。我的机器人已连接到 Teams 频道。现在,我正在将每个来自我的机器人的传出和传入消息保存到数据库中。

但我也想保存用户对我的消息的反应。这就是我使用TeamsActivityHandlerandonReactionsAdded方法(链接)的原因。在文档中,该replyToId字段turnContext是用户正在响应的消息的 id。

但是,当我通过turnContext.sendActivity()我不知道将在Teams端提供给此消息的内部 ID 向用户发送消息时,这就是为什么我无法对存储在我的数据库中的消息配对反应。

所以我的问题是,如何在发送消息后获取消息的 id,turnContext.sendActivity()稍后将在replyToId字段中发送给onReactionsAdded处理程序?

换句话说,我想收集关于我的机器人发送给用户的消息的反馈(通过反应)并将它们保存到我的数据库(消息和反应)。

4

2 回答 2

0

实际上,事实证明(经过一些尝试)turnContext.sendActivity()返回ResourceIdentifier的内容包含一个字段id,这id就是将提供给团队端消息的 id。

编辑:当发送给 Teams 的消息是例如英雄卡时,某些 ResourceIdentifier 为空。所以这并不完全有效。

于 2019-12-14T18:22:39.483 回答
0

您可以在 await 命令之后访问活动参数以获取此 ID。因此,如果我们在变量回复(可能是文本、英雄卡等)中有我们的响应,我们可以在等待之后获取 ID(在覆盖异步任务 OnMessageActivityAsync 方法中)

await turnContext.SendActivityAsync(reply, cancellationToken);

string responseMsgId = reply.Id;

于 2020-06-30T12:49:07.737 回答