/// <summary> /// Initializes a new instance of the <see cref="FaqPlusUserBot"/> class. /// </summary> /// <param name="optionsAccessor">A set of key/value application configuration properties for bot.</param> /// <param name="logger">Instance to send logs to the Application Insights service.</param> /// <param name="botCommandResolver">Resolves bot command.</param> /// <param name="conversationService">Conversation service to send welcome card.</param> /// <param name="taskModuleActivity">Instance to call teams activity when task module is invoked in teams chat.</param> /// <param name="turnContextExtension">Turn context extension object.</param> public FaqPlusUserBot( IOptionsMonitor <BotSettings> optionsAccessor, ILogger <FaqPlusUserBot> logger, IBotCommandResolver botCommandResolver, IConversationService conversationService, ITaskModuleActivity taskModuleActivity, TurnContextExtension turnContextExtension) { if (optionsAccessor == null) { throw new ArgumentNullException(nameof(optionsAccessor)); } this.options = optionsAccessor.CurrentValue; this.appBaseUri = this.options.AppBaseUri; this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); this.botCommandResolver = botCommandResolver ?? throw new ArgumentNullException(nameof(botCommandResolver)); this.conversationService = conversationService ?? throw new ArgumentNullException(nameof(conversationService)); this.taskModuleActivity = taskModuleActivity ?? throw new ArgumentNullException(nameof(taskModuleActivity)); this.turnContextExtension = turnContextExtension ?? throw new ArgumentNullException(nameof(turnContextExtension)); }
public async Task OnBotAddedAsync(ITurnContext <IConversationUpdateActivity> turnContext) { switch (turnContext.Activity.Conversation.ConversationType) { case ChannelType: case groupChatType: var members = await turnContext.GetConversationMembers(); var teamMembers = TurnContextExtension.AsTeamsChannelAccounts(members).ToList(); await _userDetailsRepository.SaveAllUserDetailsInTeams(turnContext, teamMembers); break; case PersonalType: await this._userDetailsRepository.SaveUserDetailsAsync(turnContext); break; default: break; } }