【问题标题】:How to get message id of sent message Bot Framework (Teams channel)?如何获取已发送消息 Bot Framework(团队频道)的消息 ID?
【发布时间】:2020-04-07 06:50:31
【问题描述】:

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

但我还想保存用户对我的消息的反应。这就是我使用TeamsActivityHandleronReactionsAdded 方法(link)的原因。在文档中写到turnContextreplyToId 字段是用户正在响应的消息的ID。

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

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

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

【问题讨论】:

    标签: botframework microsoft-teams messageid


    【解决方案1】:

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

    await turnContext.SendActivityAsync(reply, cancellationToken);
    
    string responseMsgId = reply.Id;
    
    

    【讨论】:

      【解决方案2】:

      实际上(经过一些尝试),turnContext.sendActivity() 返回了 ResourceIdentifier,其中包含一个字段 id,而 id 是将在 Teams 端提供给消息的 id。

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

      【讨论】:

        猜你喜欢
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-03
        • 2021-01-10
        • 1970-01-01
        • 2021-08-06
        相关资源
        最近更新 更多