我当前正在创建一个Azure QnA机器人,该机器人可以将消息从Webchat发送到团队,然后从Teams发送回Webchat。
到目前为止,一切正常,但是我所使用的某些信息必须经过一些弯路。
例如此团队对话ID:
private string teamsThread = "19:22abc7ur64z8428kg592z33p993dhen3@thread.skype";
我发现此问题的方法是将机器人安装在Teams Channel上。
然后在团队频道中向机器人发送消息,例如@myBot anyMessage
,它会回答我,因为我在代码中有此提示
await turnContext.SendActivityAsync(MessageFactory.Text("Conversation.Id: " + turnContext.Activity.Conversation.Id.ToString()), cancellationToken);
这就是我找到有关Channel_ConversationID团队的方式。
是否可以通过仅在频道上安装漫游器来获取会话ID?
例如:将Bot安装到频道->在Azure Cosmos表中保存会话ID "19:22abc7ur64z8428kg592z33p993dhen3@thread.skype"
代替:安装Bot->在团队中向机器人写入消息->在Azure Cosmos表中保存会话ID
答案 0 :(得分:1)
将机器人安装到团队后,就会生成一个对话ID,您可以在OnTurnAsync()
中捕获它。
使用App Studio,我的机器人已进入安装过程的这一部分(选择团队之后,然后选择要安装的渠道之前):
我在OnTurnAsync中得到了这个
它也落入OnConversationUpdateActivityAsync()
。
但是,它只能在“常规”频道中交谈,因为这是安装后对话ID所绑定的内容。将其安装到团队中的非常规渠道后,不会触发任何活动。
此外,每个应用程序注册应用程序ID EVER仅将一次安装到团队中的活动触发一次。如果要再次测试,则需要全新的应用程序注册。
因此回答您的问题,“是的,如果您想要通用频道的会话ID”,但是“否,如果您想要任何其他频道的会话ID”。