3

I'm using C# and Bot Framework SDK4 and need to get the user email from a 1:1 chat with my bot. Is it possible? All I can seem to get is ID and full name.

I have tried the things listed here https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/bots/bots-context but the teamsContext is just returning null.

ITeamsContext teamsContext = turnContext.TurnState.Get<ITeamsContext>();

string incomingTeamId = teamsContext.Team.Id;
string incomingChannelid = teamsContext.Channel.Id;
string incomingTenantId = teamsContext.Tenant.Id;

So is it even possible to get the user email from the current user chatting with the bot?

JJ_Wailes
  • 2,207
  • 1
  • 9
  • 17
agentq15
  • 105
  • 2
  • 5

2 Answers2

6

You can! Per the docs, you just do the same as if you were getting the team roster, but use the conversation id, instead. For example:

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 );

Note: I tried using the Microsoft.Bot.Connector.Teams package to do this, but couldn't get it to work. Had to use the connector method above.

mdrichardson
  • 7,141
  • 1
  • 7
  • 21
0
Private async  Task GetUserProfile(TurnContext context,CancellationToken cancellationToken)
{
    BotFrameworkAdapter botAdapter = (BotFrameworkAdapter)context.Adapter;           
    var conversation = await botAdapter.GetConversationMembersAsync(context, cancellationToken);
}

You can visit - How get user email from MS Teams with a Bot using SDK4?

Samadhan
  • 389
  • 1
  • 5
  • 18