我正在尝试创建一个可以部署到MS团队(和Skype for Business)的机器人。我看到当用户与机器人交互时,他们会提供channelData.tenant.id
,而Bot Framework文档会说这是用户的租户ID。"我想知道我是否可以使用此(或来自入站消息的另一条信息)来验证用户对我的Azure AD?此外,这是否需要我通过身份验证流程对用户进行身份验证,就像使用AuthBot一样?(https://github.com/MicrosoftDX/AuthBot)
任何帮助都会很棒!
答案 0 :(得分:0)
您tenant.id
中提供了channelData
,因此您可以使用它来制作一些海关请求,例如图谱API。
对于MS团队,您还可以通过调用GetConversationMembersAsync
并在您获得的成员上调用AsTeamsChannelAccount
方法来获取更多信息(此方法包含在{{1 NuGet包)
样品:
Microsoft.Bot.Connector.Teams
通过此次调用,您将获得其他有趣的值:// Fetch the members in the current conversation
var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
var members = await connector.Conversations.GetConversationMembersAsync(context.Activity.Conversation.Id);
// Concatenate information about all the members into a string
var sb = new StringBuilder();
foreach (var member in members.Select(m => m.AsTeamsChannelAccount()))
{
sb.AppendLine($"GivenName = '{member.Name}', Email = '{member.Email}', User Principal Name '{member.UserPrincipalName}', AAD ObjectId '{member.ObjectId}', TeamsMemberId = '{member.Id}'");
}
// Post the member info back into the conversation
await context.PostAsync($"People in this conversation: {sb.ToString()}");
和Email
(这是用户的Azure AD对象ID)。
作为结论,如果您需要执行一些经过身份验证的逻辑,您仍然需要记录您的用户,但在MS Teams案例中,您可以获得更多信息和方法。