简介
Slack 机器人是一个服务端程序,可以通过 Slack 和他进行交互,完成期望的一些动作。
如果你不知道什么是 Slack,可以先了解一下:
因为我最近正在学习 Rust,所以本文会使用 Rust 从零开发一个 Slack 机器人,并记录下我碰到的问题, 最终希望能够做出一个真正能够解决一些实用问题的机器人。
本篇为初章,包含一些简介和 Slack API 的认证的开发。
准备
开发 Slack 机器人需要有准备:
- Slack 帐号,并申请开通 Bot user
- 带有公网帐号的服务器
如果使用实时信息 API 可以没有公网 IP。
Slack API
Slack 提供了三种 API:
- Web hook
- 向 Slack 服务器发送 web 请求,从而发送信息到 Slack 上
- Event API
- 订阅具体事件(Event)并由 Slack 发送到指定服务器,由服务器商决定做出什么反应
- RTM API
- 实时信息 API,通过 WebSocket 连接到 Slack,连接后,会收到所有 Slack 的信息
考虑到 HTTP 服务端程序更常用,也足够满足机器人的要求,所以我们使用 Event API。
关于几种 API 的区别,可以看一下 这篇文章
Event API 定义可以看 Slack 官网:
Rust
Rust 是目前最受开发者喜爱的编程语言:Most Loved, Dreaded, and Wanted Languages
主要特点是内存安全,无需 GC,高性能。
语法相对比较特别,本文也是希望通过实践,熟悉 Rust。
实现
Rocket
认证
https://api.slack.com/docs/verifying-requests-from-slack
打印测试
let code = mac.result().code();
let s = hex::encode(&code);
println!("{}", s);