public ScrumBotRepositoryTest() { _componentContext = AutofacConfig.RegisterDependancies(); _scrumBotRepository = _componentContext.Resolve <IScrumBotRepository>(); _botQuestionRepository = _componentContext.Resolve <IBotQuestionRepository>(); _mockHttpClient = _componentContext.Resolve <Mock <IHttpClientRepository> >(); _userManager = _componentContext.Resolve <ApplicationUserManager>(); _scrumDataRepository = _componentContext.Resolve <IRepository <Scrum> >(); _scrumAnswerDataRepository = _componentContext.Resolve <IRepository <ScrumAnswer> >(); _slackUserRepository = _componentContext.Resolve <ISlackUserRepository>(); _slackChannelReposiroty = _componentContext.Resolve <ISlackChannelRepository>(); _stringConstant = _componentContext.Resolve <IStringConstantRepository>(); Initialization(); }
/// <summary> /// Used for Scrum meeting bot connection and to conduct scrum meeting /// </summary> /// <param name="container"></param> public static void ScrumMain(IComponentContext container) { _logger = container.Resolve <ILogger>(); _stringConstant = container.Resolve <IStringConstantRepository>(); try { _environmentVariableRepository = container.Resolve <IEnvironmentVariableRepository>(); string botToken = _environmentVariableRepository.ScrumBotToken; SlackSocketClient client = new SlackSocketClient(botToken);//scrumBot _scrumBotRepository = container.Resolve <IScrumBotRepository>(); // Creating a Action<MessageReceived> for Slack Socket Client to get connected. MessageReceived messageReceive = new MessageReceived(); messageReceive.ok = true; Action <MessageReceived> showMethod = (MessageReceived messageReceived) => new MessageReceived(); //Connecting the bot of the given token client.Connect((connected) => { }); // Method will be called when someone sends message client.OnMessageReceived += (message) => { _logger.Info("Scrum bot got message :" + message); try { _logger.Info("Scrum bot got message, inside try"); string replyText = _scrumBotRepository.ProcessMessages(message.user, message.channel, message.text).Result; if (!String.IsNullOrEmpty(replyText)) { _logger.Info("Scrum bot got reply"); client.SendMessage(showMethod, message.channel, replyText); } } catch (Exception ex) { _logger.Error("\n" + _stringConstant.LoggerScrumBot + " " + ex.Message + "\n" + ex.StackTrace); client.CloseSocket(); throw ex; } }; //ChannelCreated channel = new ChannelCreated(); //client.HandleChannelCreated(channel); } catch (Exception ex) { _logger.Error("\n" + _stringConstant.LoggerScrumBot + " " + ex.Message + "\n" + ex.StackTrace); throw ex; } }
/// <summary> /// Used for Scrum meeting bot connection and to conduct scrum meeting. - JJ /// </summary> public void Scrum() { SlackSocketClient client = new SlackSocketClient(_environmentVariableRepository.ScrumBotToken);//scrumBot // Creating a Action<MessageReceived> for Slack Socket Client to get connected. MessageReceived messageReceive = new MessageReceived(); messageReceive.ok = true; Action <MessageReceived> showMethod = (MessageReceived messageReceived) => new MessageReceived(); //Connecting the bot of the given token client.Connect((connected) => { _scrumBotId = connected.self.id; }); // Method will be called when someone sends message client.OnMessageReceived += (message) => { _scrumlogger.Debug("Scrum bot got message :" + message); try { IScrumBotRepository scrumBotRepository = _component.Resolve <IScrumBotRepository>(); _scrumlogger.Debug("Scrum bot got message : " + message.text + " From user : "******" Of channel : " + message.channel); string replyText = scrumBotRepository.ProcessMessagesAsync(message.user, message.channel, message.text, _scrumBotId).Result; _scrumlogger.Debug("Scrum bot got reply : " + replyText + " To user : "******" Of channel : " + message.channel); if (!String.IsNullOrEmpty(replyText)) { _scrumlogger.Debug("Scrum bot sending reply"); client.SendMessage(showMethod, message.channel, replyText); _scrumlogger.Debug("Scrum bot sent reply"); } } catch (TaskCanceledException ex) { client.SendMessage(showMethod, message.channel, _stringConstant.ErrorMsg); _scrumlogger.Trace(ex.StackTrace); _scrumlogger.Error("\n" + _stringConstant.LoggerScrumBot + " OAuth Server Not Responding " + ex.InnerException); client.CloseSocket(); throw ex; } catch (HttpRequestException ex) { client.SendMessage(showMethod, message.channel, _stringConstant.ErrorMsg); _scrumlogger.Trace(ex.StackTrace); _scrumlogger.Error("\n" + _stringConstant.LoggerScrumBot + " OAuth Server Closed \nInner exception :\n" + ex.InnerException); client.CloseSocket(); throw ex; } catch (Exception ex) { client.SendMessage(showMethod, message.channel, _stringConstant.ErrorMsg); _scrumlogger.Trace(ex.StackTrace); _scrumlogger.Error("\n" + _stringConstant.LoggerScrumBot + " Generic exception \nMessage : \n" + ex.Message + "\nInner exception :\n" + ex.InnerException); client.CloseSocket(); throw ex; } }; }