rust-slack
                                
                                 rust-slack copied to clipboard
                                
                                    rust-slack copied to clipboard
                            
                            
                            
                        A rust crate for sending messages to Slack via webhooks
rust-slack
A rust crate for sending messages to Slack via webhooks.
Slack is a messaging platform for team collaboration.
Upgrading? See the CHANGELOG.
Requires rust 1.17 or newer.
Usage
Add this to your Cargo.toml:
[dependencies]
slack-hook = "0.7"
Add the crate to your existing project:
extern crate slack_hook;
use slack_hook::{Slack, PayloadBuilder};
fn main() {
    let slack = Slack::new("https://hooks.slack.com/services/abc/123/45z").unwrap();
    let p = PayloadBuilder::new()
      .text("test message")
      .channel("#testing")
      .username("My Bot")
      .icon_emoji(":chart_with_upwards_trend:")
      .build()
      .unwrap();
    let res = slack.send(&p);
    match res {
        Ok(()) => println!("ok"),
        Err(x) => println!("ERR: {:?}",x)
    }
}
Attachments
To create a payload with just an attachment:
extern crate slack_hook;
use slack_hook::{PayloadBuilder, AttachmentBuilder};
fn main() {
  let _ = PayloadBuilder::new()
    .attachments(vec![AttachmentBuilder::new("my text").color("#b13d41").build().unwrap()])
    .build()
    .unwrap();
}
Text with Links
Slack messaging API permits you to send links within text. However, given the different formatting rules, these text fragments need to be specified as follows:
extern crate slack_hook;
use slack_hook::{PayloadBuilder, SlackTextContent, SlackLink};
use slack_hook::SlackTextContent::{Text, Link};
fn main() {
  let _ = PayloadBuilder::new()
    .text(vec![
      Text("Hello".into()),
      Link(SlackLink::new("https://google.com", "Google")),
      Text(", nice to know you.".into())
    ].as_slice())
    .build()
    .unwrap();
}
Sending this payload will print the following in slack (note: each element of the Vec has been
space-separated):
Hello Google, nice to know you.
This technique can be used for any function that has the Into<SlackText> trait bound.
License
This library is distributed under similar terms to Rust: dual licensed under the MIT license and the Apache license (version 2.0).
See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.