rust-slack

Travis Build Status Documentation crates.io MIT licensed Apache licensed

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:

toml [dependencies] slack-hook = "0.7"

Add the crate to your existing project:

```rust,norun extern crate slackhook; 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") .iconemoji(":chartwithupwardstrend:") .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:

```rust extern crate slackhook; use slackhook::{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:

```rust extern crate slackhook; use slackhook::{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.