title: go-go-micro機器人bot
categories: Go
tags: [go, 微服務, bot, 機器人, slack]
date: 2019-10-10 19:30:53
comments: false
go-go-micro機器人bot
前篇
- micro bot - https://www.bookstack.cn/read/go-micro/72414279e3575e70.md
- https://medium.com/microhq/the-micro-bot-chatops-for-microservices-546ecc1a9ed8
micro bot 是一隻藏在微服務中的小馬蠅,有了它,我們可以在 Slack、HipChat、XMPP 等等聊天程式中與它對話,通過它來操控服務。
我們把消息發送給它,它基于這些消息模仿執行CLI,觸發指定的接口功能。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbwxCdh1mcvZ2LcV2Zh1Wa9M3clN2byBXLzN3btg3PuVzRjVXRUxUMFpXT6tGVNdXRE1EerRVT3lkeMRXOykVdVdUY6RWbixmUYFWd31WW0w2MMZ3bENGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
是用很簡單. Slack 為例
- 獲得 Slack 的 token. 如:
xoxb-123-123-asdasd
- 啟動 bot
$ micro bot --inputs=slack --slack_token=xoxb-123-123-asdasd 2019/10/10 19:25:06 [bot] starting 2019/10/10 19:25:06 [bot] starting input slack 2019/10/10 19:25:07 [bot][loop] starting slack 2019/10/10 19:25:07 [bot][loop] connecting to slack 2019/10/10 19:25:07 Transport [http] Listening on [::]:64084 2019/10/10 19:25:07 Broker [http] Connected to [::]:64085 2019/10/10 19:25:07 Registry [mdns] Registering node: go.micro.bot-538d4b38-d9a4-4acd-8210-6a46bf400f6e
- 在 Slack 就可以輸入指令與機器人互動
go-go-micro機器人bot
Slack
- 使用Go開發一個 Slack 運維機器人 - https://colobu.com/2015/11/04/create-a-slack-bot-with-golang/
建立流程
- 你首先建立一個Team,并且加入到這個Team中。這是使用Slack的第一步。以後你可以直接通路 http://.slack.com 登入到你的team中。
-
建立一個 bot user integration。你需要為你的機器人起一個名字. 這裡我起了 xiaoyang.
可以為它指定頭像,slack會為它生成一個 API Token。 這個API Token很重要, 以後通路slack API需要傳入這個token。如:
你也可以為你的普通登入使用者生成full-access token,網址是: https://api.slack.com/web。xoxb-123-123-asdasd
- 将你建立的 bot 加入到一個 Apps 中.
go-go-micro機器人bot - 在 Slack 就可以輸入指令與機器人互動
go-go-micro機器人bot
增加指令
方式一: 啟動一個指令服務 (推薦)
- Commands as Services - https://micro.mu/docs/bot.html#commands-as-services
參考官方 examples
- 啟動服務
f:\a_link_workspace\go\GoWinEnv_MicroExamples\src\github.com\micro\examples\command (master -> origin) $ go run main.go
- 重新整理一下 slack, 輸入 help 指令可以看到新加的指令 command.
go-go-micro機器人bot
添加多個指令服務
官方的說明一個 指令服務職能執行一個指令. 多個指令的話需要多個 指令服務.
- How does it work? - https://micro.mu/docs/bot.html#how-does-it-work
在
go.micro.bot
這個命名空間下的都可以添加到可執行的 指令清單.
實踐測試: test_cmd_service
- 添加兩個指令
// cmd1 rsp.Usage = "wilker" rsp.Description = "This is an example bot command as a micro service wilker" micro.Name("go.micro.bot.wilker"), // rsp.Usage 與 go.micro.bot. 字尾一緻 // cmd2 rsp.Usage = "yun" rsp.Description = "This is an example bot command as a micro service yun" micro.Name("go.micro.bot.yun"),
- 分别啟動兩個指令
f:\a_link_workspace\go\GoWinEnv_new\src\GoMicro\test_cmd\test_cmd_service\cmd1 (master -> origin) $ go run main.go 2019/10/11 11:37:37 Registry [mdns] Registering node: go.micro.bot.wilker-fd7da5e9-5339-402c-9dc0-b7cecb2d93e2 f:\a_link_workspace\go\GoWinEnv_new\src\GoMicro\test_cmd\test_cmd_service\cmd2 (master -> origin) $ go run main.go 2019/10/11 11:37:59 Registry [mdns] Registering node: go.micro.bot.yun-6a8f9cee-5815-48aa-939e-6763022e97f6
- 重新整理一下 slack, 輸入 help 指令可以看到新加的指令 command.
go-go-micro機器人bot
方式二: 重新編譯 micro
參考: test_cmd_compile
- 增加指令 - https://www.bookstack.cn/read/go-micro/72414279e3575e70.md#%E5%A2%9E%E5%8A%A0%E5%91%BD%E4%BB%A4
使用流程
-
cd 到 src/github.com/micro/micro 目錄下, 新增一個自定義指令檔案 my-cmd.go
增加一個 yang 的指令
package main import ( "github.com/micro/go-micro/agent/command" ) func Ping() command.Command { usage := "yang" description := "hello wilker!!" return command.NewCommand("ping", usage, description, func(args ...string) ([]byte, error) { return []byte("Returns xuan 666"), nil }) } func init() { command.Commands["^yang$"] = Ping() }
- 加入 my-cmd.go 重新編譯 micro 生成可執行檔案 myMicro.exe
F:\a_link_workspace\go\GoWinEnv_Test01 $ cd src\github.com\micro\micro F:\a_link_workspace\go\GoWinEnv_Test01\src\github.com\micro\micro (master -> origin) $ go build -o myMicro.exe main.go my-cmd.go
- 啟動機器人
$ myMicro.exe bot --inputs=slack --slack_token=xoxb-123-123-asdasd 2019/10/10 20:17:56 [bot] starting 2019/10/10 20:17:56 [bot] starting input slack 2019/10/10 20:17:57 [bot][loop] starting slack 2019/10/10 20:17:57 [bot][loop] connecting to slack
- 通路 https://app.slack.com/client, 輸入 help 指令與 yang 指令可以看到增加的指令
go-go-micro機器人bot
自定義機器人互動插件
- 增加新的輸入源 - https://www.bookstack.cn/read/go-micro/72414279e3575e70.md#%E5%A2%9E%E5%8A%A0%E6%96%B0%E7%9A%84%E8%BE%93%E5%85%A5%E6%BA%90