Crate slack_morphism

source ·
Expand description

Slack Morphism for Rust

Slack Morphism is a modern client library for Slack Web/Events API and Block Kit.

Slack Web API client

Create a client instance:

use slack_morphism::prelude::*;

let client = SlackClient::new(SlackClientHyperConnector::new());

Make Web API methods calls

For most of Slack Web API methods (except for OAuth methods, Incoming Webhooks and event replies) you need a Slack token to make a call. For simple bots you can have it in your config files, or you can obtain workspace tokens using Slack OAuth.

In the example below, we’re using a hardcoded Slack token, but don’t do that for your production bots and apps. You should securely and properly store all of Slack tokens.


use slack_morphism::prelude::*;


let client = SlackClient::new(SlackClientHyperConnector::new());

// Create our Slack API token
let token_value: SlackApiTokenValue = "xoxb-89.....".into();
let token: SlackApiToken = SlackApiToken::new(token_value);

// Create a Slack session with this token
// A session is just a lightweight wrapper around your token
// not to specify it all the time for series of calls.
let session = client.open_session(&token);

// Make your first API call (which is `api.test` here)
let test: SlackApiTestResponse = session
        .api_test(&SlackApiTestRequest::new().with_foo("Test".into()))
        .await?;

// Send a simple text message
let post_chat_req =
    SlackApiChatPostMessageRequest::new("#general".into(),
           SlackMessageContent::new().with_text("Hey there!".into())
    );

let post_chat_resp = session.chat_post_message(&post_chat_req).await?;

Events API and OAuth support for Hyper and Axum

The library provides two different ways to work with Slack Events API:

  • Using pure Hyper-based solution
  • Using more high-level solution for axum web framework.

Also the library provides Slack events signature verifier (SlackEventSignatureVerifier) (which is already integrated in the routes implementation for you). All you need is provide your client id and secret configuration to route implementation.

Socket Mode support

The library provides Socket Mode support additionally Events API leveraging Web-sockets in cases you don’t want/need to expose publicly available HTTP endpoint.

Docs and examples

Please follow to the official website. Examples available on: github.

Re-exports

Modules

Macros

Structs

Enums

Traits

Type Aliases