2 个不稳定版本

0.1.0 2019 年 12 月 13 日
0.0.1 2019 年 12 月 13 日

13#kit

33 每月下载量

Apache-2.0

78KB
2.5K SLoC

block_kit

Actions Status crate-name at crates.io

简单的 Slack API 包装器,用于 Slack 命令和交互式组件的 Block Kit 和 Payloads。使用 serde 实现

示例

其他示例

基本

1. 加载环境变量

// export SLACK_BOT_TOKEN=xoxb-your-bot-token
// export SLACK_CHANNEL=random
let config = match from_env::<SlackConfig>() {
     Ok(val) => val,
     Err(err) => {
         error!("{}", err);
         process::exit(1);
     }
 };

2. 设置 block payload

let section = SectionBlock::new(Markdown("@here *Hello World*, `section1`".into()));
let common_payload = CommonMessagePayload::new().blocks(vec![section.into()]);
let payload = ChatPostMessagePayload::new(&config.channel, common_payload);

3. POST.

使用 reqwest 的示例

let res: PostMessageResponse = reqwest::Client::new()
    .post(CHAT_POST_MESSAGE_URL)
    .header("Authorization", format!("Bearer {}", config.bot_token))
    .json(&payload)
    .send()
    .await
    .unwrap()
    .json()
    .await
    .unwrap();

Block Kit

  • Block Kit 是 Slack 应用程序的 UI 框架,在构建消息和其他表面的体验时提供平衡的控制和灵活性。

  • 通过组合、更新、排序和堆叠块(几乎在 Slack 的任何地方都可以使用的可重复使用的组件),可以自定义信息和外观的顺序,并指导用户了解应用程序的功能。

摘自 官方文档

结构概述

应用程序表面 是应用程序可以通过通信或交互表达自己的任何地方。它可能包含一些

是一个视觉组件。块可以堆叠和排列以创建布局。在任一表面上的基本 Block Kit 建立体验是相同的。

块可能包含一些 块元素 和一些 组合对象。它可以拥有的元素数量取决于块的类型。例如,

[块元素]

  • 部分:最多 1 个。
  • 分隔符:不能有。
  • 操作:最多 5 个。

[组合对象]

  • 部分:一些 textfields 中的 文本
  • 分隔符:不能有。

块元素 是一个较小的视觉组件。元素可以在 sectioncontextactioons 块中使用。它们构成 的一部分。元素可能包含一些 组合对象

组合对象 也是一个视觉组件,但比 块元素 小。它可以在块和块元素中使用。并且,它可能包含一些 组合对象

例如,

  • 确认对话框:一些 文本 对象。
  • 选项:1 个 文本 对象。
  • 选项组:1 个 文本 对象和一些最多 100 个 选项 对象。

一些句子参考了 官方文档

支持的表面

  • 消息
  • 主页标签页
  • 模式

视图有效负载、主页标签页模式 尚未支持,但很快就会。

支持的块

  • 部分
  • 上下文
  • 操作
  • 分隔符
  • 图像
  • 文件
  • 输入

支持的块元素

  • 按钮
  • 日期选择器
  • 图像
  • 多选菜单
  • 溢出菜单
  • 纯文本输入
  • 单选按钮组
  • 选择菜单

支持的合成对象

  • 文本
  • 确认对话框
  • 选项
  • 选项组

静态链接

rust-musl-builder中所述。

alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src ekidd/rust-musl-builder'
rust-musl-builder cargo build --example interactive_server --release

依赖

~0.4–1MB
~23K SLoC