又见面了!前面的几个教程主要是基于简单的概念,而我们现在要看的是一个更实际的例子--用Go建立一个定制的Slack机器人
我们现在将创建我们自己的Slack机器人,它可以向一个频道推送消息,通知所有订阅该频道的用户。
让我们开始吧!
设置Slack令牌
在我们进行主程序之前,我们需要做一些设置。
我们首先需要在Slack上创建一个新的Bot用户。要在slack上这样做,你需要创建一个新的Slack应用程序,并创建你的新Bot用户。
在你创建应用程序后,你可以选择为你的机器人用户生成OAuth令牌的选项。你需要为此添加一些OAuth作用域。一旦我们授权在我们的工作区使用这个OAuth令牌,我们就可以(最终)开始与Go客户端的API集成。
安装Slack的Go包
我们将使用客户端的slack-go 包。要安装它,我们将使用go get 。
go get -u github.com/slack-go/slack
在GoLang中构建我们的Slack机器人
我们将让机器人在工作区的一个新频道中发布信息。
要做到这一点,我们需要为这个新频道使用一个CHANNEL_ID 。
为了得到这个频道的ID,从你的浏览器中打开slack工作区,然后进入新频道。URL必须是这种格式。
复制URL中的CHANNEL_ID 部分。
package main
import (
"log"
"github.com/slack-go/slack"
)
func main() {
OAUTH_TOKEN := "OAUTH_TOKEN" // Paste your bot user token here
CHANNEL_ID := "CHANNEL_ID" // Paste your channel id here
api := slack.New(OAUTH_TOKEN)
attachment := slack.Attachment{
Pretext: "Pretext",
Text: "Hello from GolangDocs!",
}
channelId, timestamp, err := api.PostMessage(
CHANNEL_ID,
slack.MsgOptionText("This is the main message", false),
slack.MsgOptionAttachments(attachment),
slack.MsgOptionAsUser(true),
)
if err != nil {
log.Fatalf("%s\n", err)
}
log.Printf("Message successfully sent to Channel %s at %s\n", channelId, timestamp)
}
最后,在你开始你的go程序之前,我们必须明确地邀请我们的Slack机器人到这个频道。否则,你会得到一个类似这样的错误。
Error: not_in_channel
这表明机器人在该频道中仍然不存在,所以我们需要邀请机器人/应用程序。
我们可以在Slack GUI中使用/invite @YOUR_APP_NAME Slack命令来做。
一旦你最终让这个机器人运行起来,你可以探索其他各种事情,例如从API端点给予定期更新,或通过命令与真正的用户实际互动。
直到下一次!