简介

Slack 机器人是一个服务端程序,可以通过 Slack 和他进行交互,完成期望的一些动作。

如果你不知道什么是 Slack,可以先了解一下:

About 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 官网:

https://api.slack.com/events-api

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);