Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/frostly/rust-slack
A rust crate for sending messages to Slack via webhooks
https://github.com/frostly/rust-slack
rust slack webhook
Last synced: 3 months ago
JSON representation
A rust crate for sending messages to Slack via webhooks
- Host: GitHub
- URL: https://github.com/frostly/rust-slack
- Owner: frostly
- License: other
- Created: 2014-08-07T02:02:50.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2022-09-03T12:05:25.000Z (about 2 years ago)
- Last Synced: 2024-07-06T03:37:08.109Z (4 months ago)
- Topics: rust, slack, webhook
- Language: Rust
- Homepage: https://docs.rs/slack-hook/
- Size: 3.63 MB
- Stars: 168
- Watchers: 7
- Forks: 49
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# rust-slack
[![Travis Build Status](https://img.shields.io/travis/frostly/rust-slack.svg)](https://travis-ci.org/frostly/rust-slack)
[![Documentation](https://img.shields.io/badge/docs-latest-C9893D.svg)](https://docs.rs/slack-hook/)
[![crates.io](https://img.shields.io/crates/v/slack-hook.svg)](https://crates.io/crates/slack-hook)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE-MIT)
[![Apache licensed](https://img.shields.io/badge/license-Apache-blue.svg)](./LICENSE-APACHE)A rust crate for sending messages to Slack via webhooks.
[Slack](https://slack.com/) is a messaging platform for team collaboration.
Upgrading? See the [CHANGELOG](./CHANGELOG.md).
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,no_run
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:
```rust
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:```rust
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](https://google.com), nice to know you.
This technique can be used for any function that has the `Into` 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-APACHE), [LICENSE-MIT](LICENSE-MIT), and [COPYRIGHT](COPYRIGHT) for details.