private static async Task HandleConversationUpdate(Activity message) { ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl)); var channelData = message.GetChannelData <TeamsChannelData>(); // Ensure that we have an entry for this tenant in the database var tenant = await Common.CheckAndAddTenantDetails(channelData.Tenant.Id); await RootDialog.CheckAndAddUserDetails(message, channelData); // Treat 1:1 add/remove events as if they were add/remove of a team member if (channelData.EventType == null) { if (message.MembersAdded != null) { channelData.EventType = "teamMemberAdded"; } if (message.MembersRemoved != null) { channelData.EventType = "teamMemberRemoved"; } } switch (channelData.EventType) { case "teamMemberAdded": // Team member was added (user or bot) if (message.MembersAdded.Any(m => m.Id.Contains(message.Recipient.Id))) { // Bot was added to a team: send welcome message message.Text = Constants.ShowWelcomeScreen; await Conversation.SendAsync(message, () => new RootDialog()); await AddTeamDetails(message, channelData, tenant); } else { // Member was added to a team: update the team member count await UpdateTeamCount(message, channelData, tenant); } break; case "teamMemberRemoved": // Add team & channel details if (message.MembersRemoved.Any(m => m.Id.Contains(message.Recipient.Id))) { // Bot was removed from a team: remove entry for the team in the database await RemoveTeamDetails(channelData, tenant); } else { // Member was removed from a team: update the team member count await UpdateTeamCount(message, channelData, tenant); } break; // Update the team and channel info in the database when the team is rename or when channel are added/removed/renamed case "teamRenamed": // Rename team & channel details await RenameTeam(channelData, tenant); break; case "channelCreated": await AddNewChannelDetails(channelData, tenant); break; case "channelRenamed": await RenameChannel(channelData, tenant); break; case "channelDeleted": await DeleteChannel(channelData, tenant); break; default: break; } }