是否可以使用 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);
}

您可以访问 -