예제 #1
0
        /// <summary>
        /// Slack integration redirect url
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public async Task <ActionResult> GrantSuccess([FromUri] string code)
        {
            var slackIntegrationBusiness = new SlackIntegrationBusiness();

            var oAuthResp = await slackIntegrationBusiness.OAuthAccess(code);

            var isGranted = oAuthResp.ok;

            if (isGranted)
            {
                var existingTeam      = GetTeamBySlackId(oAuthResp.team_id);
                var isSlackTeamExists = existingTeam != null;

                //if team already exists, update access token.
                if (isSlackTeamExists)
                {
                    existingTeam.BotAccessToken = oAuthResp.bot.bot_access_token; //refresh token

                    EditSlackTeam(existingTeam);
                }
                else
                {
                    SaveSlackTeam(oAuthResp);
                }

                //say hello to new team!
                var resp = await slackIntegrationBusiness.PostMessage(GetWelcomeMessage(oAuthResp.bot.bot_access_token));

                ViewBag.SlackMessage = resp.error ?? resp.message.text;
            }

            ViewBag.Error = oAuthResp.error ?? "";

            return(View(isGranted));
        }
        public async Task PostMessageViaBot()
        {
            var payload = new SlackMessage
            {
                channel = "#general",
                token   = "xoxb-290876090100-HByhoYtz4LNcADDfFZthAO0v",
                text    = SlackBotMessage.Welcome
            };
            var slackIntegrationBusiness = new SlackIntegrationBusiness();

            //say hello to new team!
            var resp = await slackIntegrationBusiness.PostMessage(payload);

            Assert.IsTrue(resp.ok);
        }