是否可以使用 SDK4 通过 Bot 从 MS Teams 获取用户电子邮件?
Is it possible to get user email from MS Teams with a Bot using SDK4?
我正在使用 C# 和 Bot Framework SDK4,需要从与我的机器人的 1:1 聊天中获取用户电子邮件。可能吗?我似乎只能得到 ID 和全名。
我已经尝试过这里列出的东西 https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/bots/bots-context
但是 teamsContext 只是返回 null。
ITeamsContext teamsContext = turnContext.TurnState.Get<ITeamsContext>();
string incomingTeamId = teamsContext.Team.Id;
string incomingChannelid = teamsContext.Channel.Id;
string incomingTenantId = teamsContext.Tenant.Id;
那么是否有可能从与机器人聊天的当前用户那里获取用户电子邮件?
可以!根据 the docs,您只需执行与获取团队花名册相同的操作,但使用对话 ID。例如:
var credentials = new MicrosoftAppCredentials("<yourAppId>", "<yourAppPassword>");
var connector = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), credentials);
var conversationId = turnContext.Activity.Conversation.Id;
var userInfo = await connector.Conversations.GetConversationMembersAsync(conversationId );
注意:我尝试使用 Microsoft.Bot.Connector.Teams
包来执行此操作,但无法正常工作。必须使用上面的 connector
方法。
Private async Task GetUserProfile(TurnContext context,CancellationToken cancellationToken)
{
BotFrameworkAdapter botAdapter = (BotFrameworkAdapter)context.Adapter;
var conversation = await botAdapter.GetConversationMembersAsync(context, cancellationToken);
}
您可以访问 -
我正在使用 C# 和 Bot Framework SDK4,需要从与我的机器人的 1:1 聊天中获取用户电子邮件。可能吗?我似乎只能得到 ID 和全名。
我已经尝试过这里列出的东西 https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/bots/bots-context 但是 teamsContext 只是返回 null。
ITeamsContext teamsContext = turnContext.TurnState.Get<ITeamsContext>();
string incomingTeamId = teamsContext.Team.Id;
string incomingChannelid = teamsContext.Channel.Id;
string incomingTenantId = teamsContext.Tenant.Id;
那么是否有可能从与机器人聊天的当前用户那里获取用户电子邮件?
可以!根据 the docs,您只需执行与获取团队花名册相同的操作,但使用对话 ID。例如:
var credentials = new MicrosoftAppCredentials("<yourAppId>", "<yourAppPassword>");
var connector = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), credentials);
var conversationId = turnContext.Activity.Conversation.Id;
var userInfo = await connector.Conversations.GetConversationMembersAsync(conversationId );
注意:我尝试使用 Microsoft.Bot.Connector.Teams
包来执行此操作,但无法正常工作。必须使用上面的 connector
方法。
Private async Task GetUserProfile(TurnContext context,CancellationToken cancellationToken)
{
BotFrameworkAdapter botAdapter = (BotFrameworkAdapter)context.Adapter;
var conversation = await botAdapter.GetConversationMembersAsync(context, cancellationToken);
}
您可以访问 -