Exemplo n.º 1
0
        public void SendUserMessage()
        {
            // initialize client with app token
            var client = new SlackWebApiClient("## api-token ##");

            // get users list
            var user = client.Users.List()
                       .FirstOrDefault(u => u.Name == "user.name");

            // find communication channel
            var channel = client.DirectMessages.Channels()
                          .FirstOrDefault(c => c.UserId == user.Id);

            // open channel if it's not created yet
            if (channel == null)
            {
                channel = client.DirectMessages.OpenChannel(user);
            }

            // post message
            client.Chat.PostMessage(channel, new MessageParameters
            {
                Message        = "this is the message",
                AsUser         = false,
                IconEmoji      = ":chart_with_upwards_trend:",
                IconUrl        = "http://lorempixel.com/48/4",
                LinkNames      = false,
                Parse          = ParseMessage.Full,
                ReplyBroadcast = false,
                UnfurlLinks    = false,
                UnfurlMedia    = true,
                UserName       = "******"
            });
        }
Exemplo n.º 2
0
        public void ClientSetup()
        {
            var client = new SlackWebApiClient("token");

            Assert.Equal("https://slack.com/api/", client.Client.BaseAddress.ToString());
            Assert.Equal("token", client.Client.DefaultRequestHeaders.Authorization.Parameter);
            Assert.Equal("Bearer", client.Client.DefaultRequestHeaders.Authorization.Scheme);
        }
Exemplo n.º 3
0
        public void GetUserList()
        {
            // initialize client with app token
            var client = new SlackWebApiClient("## api-token ##");

            // get users list
            var users = client.Users.List();
        }
Exemplo n.º 4
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var token = Environment.GetEnvironmentVariable("oauth_token");
            var api   = new SlackWebApiClient(token);

            services.AddSingleton <ISlackApiClient>(api);

            services.AddControllers().AddNewtonsoftJson();
        }
Exemplo n.º 5
0
        public void GetGroupHistory()
        {
            var client  = new SlackWebApiClient("## api-token ##");
            var groups  = client.Groups.List();
            var myGroup = groups.Single(g => g.Name == "my-group");

            // get history
            var history = client.Groups.History(myGroup);
        }
Exemplo n.º 6
0
        private async Task <ActionResult> SendApprovalMessage(SlashCommand slashCommand)
        {
            var token   = Environment.GetEnvironmentVariable("oauth_token");
            var api     = new SlackWebApiClient(token);
            var request = new PostMessageRequest
            {
                Channel = "C01C9M0DAMB",
                Text    = $"<@{slashCommand.UserId}> has requested approval for {slashCommand.Text}"
            };
            await api.Chat.Post(request);

            return(new OkObjectResult($"Your approval request for {slashCommand.Text} has been sent"));
        }
Exemplo n.º 7
0
        public void PostMessageOnGroup()
        {
            // initialize client with app token
            var client = new SlackWebApiClient("## api-token ##");

            // get group list
            var groups = client.Groups.List();

            // find specific group
            var myGroup = groups.Single(g => g.Name == "my-group");

            // post a message
            client.Chat.PostMessage(myGroup, "This is the message from bot.");
        }
Exemplo n.º 8
0
        public static Task <TResponse> CheckApi <TResponse>(
            Func <SlackWebApiClient, Task <TResponse> > requestCall,
            string url,
            Action <NameValueCollection> requestCheck,
            TResponse responseToSend)
        {
            var http = new HttpClient(new ActionHandler(async req =>
            {
                Assert.Equal("https://slack.com/api/" + url, req.RequestUri.ToString());
                Assert.Equal("application/x-www-form-urlencoded", req.Content.Headers.ContentType.MediaType);
                var dict = HttpUtility.ParseQueryString(await req.Content.ReadAsStringAsync());
                requestCheck(dict);
            }, responseToSend));
            var client = new SlackWebApiClient(http);

            return(requestCall(client));
        }
Exemplo n.º 9
0
        public static Task <TResponse> CheckApi <TResponse>(
            Func <SlackWebApiClient, Task <TResponse> > requestCall,
            string url,
            Action <JObject> requestCheck,
            TResponse responseToSend)
        {
            var http = new HttpClient(new ActionHandler(async req =>
            {
                Assert.Equal("https://slack.com/api/" + url, req.RequestUri.ToString());
                Assert.Equal("application/json", req.Content.Headers.ContentType.MediaType);
                var jobject = JObject.Parse(await req.Content.ReadAsStringAsync());
                requestCheck(jobject);
            }, responseToSend));
            var client = new SlackWebApiClient(http);

            return(requestCall(client));
        }
Exemplo n.º 10
0
        public void PostMessageOnGroupWithParameters()
        {
            var client  = new SlackWebApiClient("## api-token ##");
            var groups  = client.Groups.List();
            var myGroup = groups.Single(g => g.Name == "my-group");

            // post a message with various parameters
            client.Chat.PostMessage(myGroup, new MessageParameters
            {
                Message        = "this is the message",
                AsUser         = false,
                IconEmoji      = ":chart_with_upwards_trend:",
                IconUrl        = "http://lorempixel.com/48/4",
                LinkNames      = false,
                Parse          = ParseMessage.Full,
                ReplyBroadcast = false,
                ThreadTs       = "1234",
                UnfurlLinks    = false,
                UnfurlMedia    = true,
                UserName       = "******"
            });
        }
Exemplo n.º 11
0
        public void PostMessageOnGroupWithAttachment()
        {
            var client  = new SlackWebApiClient("## api-token ##");
            var groups  = client.Groups.List();
            var myGroup = groups.Single(g => g.Name == "my-group");

            // post a message with attachment
            client.Chat.PostMessage(myGroup, new MessageParameters
            {
                Message     = "this is the message",
                AsUser      = false,
                Attachments = new List <AttachmentRequest> {
                    new AttachmentRequest {
                        Fallback   = "Fallback message",
                        Color      = Colour.Danger,
                        Pretext    = "Pretext",
                        AuthorName = "Bobby Tables",
                        AuthorLink = "http://flickr.com/bobby/",
                        AuthorIcon = "http://flickr.com/icons/bobby.jpg",
                        Title      = "Slack API Documentation",
                        TitleLink  = "https://api.slack.com/",
                        Text       = "Optional text that appears within the attachment",
                        Fields     = new List <AttachmentFieldRequest>
                        {
                            new AttachmentFieldRequest("First field", "First field value"),
                            new AttachmentFieldRequest("Second field", "Second field value", true),
                            new AttachmentFieldRequest("Third field", "Third field value", true)
                        },
                        ImageUrl   = "http://my-website.com/path/to/image.jpg",
                        ThumbUrl   = "http://example.com/path/to/thumb.png",
                        Footer     = "Slack API",
                        FooterIcon = "https://platform.slack-edge.com/img/default_application_icon.png",
                        TimeStamp  = new DateTime(2000, 01, 01)
                    }
                }
            });
        }
Exemplo n.º 12
0
 protected void CreateMockClient(Func <string> closure)
 {
     Connector    = new MockSlackConnector(closure);
     WebApiClient = new SlackWebApiClient("##token##", Connector);
 }