我目前正在创建一个 Azure QnA 机器人,它可以将消息从网络聊天发送到团队,然后从团队发送回网络聊天。
到目前为止一切正常,但我使用的一些信息必须通过一些弯路来设置。
例如,此团队对话 ID:
private string teamsThread = "19:[email protected]";
我发现这一点的方法是在团队频道上安装机器人。然后在团队频道中向机器人发送消息@myBot anyMessage
,它会回答我,因为我在代码中有这个:
await turnContext.SendActivityAsync(MessageFactory.Text("Conversation.Id: " + turnContext.Activity.Conversation.Id.ToString()), cancellationToken);
这就是我发现 Teams Channel_ConversationID 的方式。
有没有办法通过在频道上安装机器人来获取对话 ID?
喜欢:将机器人安装到频道 ->"19:[email protected]"
在 Azure Cosmos 表中保存对话 ID
而不是:安装 Bot -> 在 Teams 中向机器人写入消息 -> 在 Azure Cosmos 表中保存对话 ID
将机器人安装到团队后会立即生成对话 ID,您可以在OnTurnAsync()
.
使用 App Studio,我让我的机器人进入了安装过程的这一部分(在选择团队之后和选择要安装到的频道之前):
我在 OnTurnAsync 中得到了这个:
它也落到OnConversationUpdateActivityAsync()
.
但是,它只能在常规频道中进行对话,因为这是安装时与对话 ID 相关联的内容。安装到团队内的非常规频道时,不会触发任何活动。
此外,安装到团队时触发的 Activity 每个应用注册应用 ID 只会触发一次,永远。如果您想再次测试,您需要一个全新的应用程序注册。
所以要回答你的问题,“是的,如果你想要通用频道的对话 ID”,但“不,如果你想要任何其他频道的对话 ID”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句