【问题标题】:Get MS Teams Channel Conversation ID获取 MS Teams 频道对话 ID
【发布时间】:2019-12-19 00:24:55
【问题描述】:

我目前正在创建一个 Azure QnA 机器人,它可以将消息从网络聊天发送到 Teams,并从 Teams 发送回网络聊天。

到目前为止一切正常,但我使用的一些信息必须通过一些弯路来设置。

例如此 Teams 对话 ID:

private string teamsThread = "19:22abc7ur64z8428kg592z33p993dhen3@thread.skype";

我发现这一点的方法是将机器人安装在 Teams 频道上。 然后在 Teams 频道中向机器人发送消息,例如 @myBot anyMessage,它会回复我,因为我在代码中有这个:

await turnContext.SendActivityAsync(MessageFactory.Text("Conversation.Id: " + turnContext.Activity.Conversation.Id.ToString()), cancellationToken);

这就是我发现 Teams Channel_ConversationID 的方式。

有没有办法通过在频道上安装机器人来获取对话 ID?

赞:将机器人安装到频道 -> 在 Azure Cosmos 表中保存对话 ID "19:22abc7ur64z8428kg592z33p993dhen3@thread.skype"

而不是:安装机器人 -> 将消息写入团队中的机器人 -> 在 Azure Cosmos 表中保存对话 ID

【问题讨论】:

  • 嗯,不。在开始对话之前,您不会获得对话 ID..

标签: c# azure botframework bots


【解决方案1】:

将机器人安装到团队后会立即生成对话 ID,您可以在 OnTurnAsync() 中捕获它。

使用 App Studio,我让我的机器人完成了安装过程的这一部分(在选择团队之后,就在选择要安装到的频道之前):

我在 OnTurnAsync 中得到了这个:

它也属于OnConversationUpdateActivityAsync()

但是,它只能在常规频道中进行对话,因为这是安装时对话 ID 所绑定的内容。安装到团队中的非常规频道时不会触发任何活动。

此外,安装到团队时触发的活动仅在每个应用注册应用 ID 中触发一次,EVER。如果您想再次对此进行测试,您需要一个全新的应用注册。

所以要回答您的问题,“是的,如果您想要通用频道的对话 ID”,但“不,如果您想要任何其他频道的对话 ID”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2018-01-06
    • 2021-05-04
    相关资源
    最近更新 更多