go-go-micro機器人bot


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,觸發指定的接口功能。

是用很簡單. Slack 爲例

  1. 獲得 Slack 的 token. 如: xoxb-123-123-asdasd

  2. 啓動 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
    
  3. 在 Slack 就可以輸入命令與機器人交互


Slack

  • 使用Go開發一個 Slack 運維機器人 - https://colobu.com/2015/11/04/create-a-slack-bot-with-golang/

創建流程

  1. 你首先創建一個Team,並且加入到這個Team中。這是使用Slack的第一步。以後你可以直接訪問 http://.slack.com 登錄到你的team中。

  2. 新建一個 bot user integration。你需要爲你的機器人起一個名字. 這裏我起了 xiaoyang.

    可以爲它指定頭像,slack會爲它生成一個 API Token。 這個API Token很重要, 以後訪問slack API需要傳入這個token。如: xoxb-123-123-asdasd

    你也可以爲你的普通登錄用戶生成full-access token,網址是: https://api.slack.com/web。

  3. 將你創建的 bot 加入到一個 Apps 中.

  4. 在 Slack 就可以輸入命令與機器人交互


增加命令

方式一: 啓動一個命令服務 (推薦)

  • Commands as Services - https://micro.mu/docs/bot.html#commands-as-services

參考官方 examples

  1. 啓動服務

    f:\a_link_workspace\go\GoWinEnv_MicroExamples\src\github.com\micro\examples\command (master -> origin)
    $ go run main.go
    
  2. 刷新一下 slack, 輸入 help 指令可以看到新加的指令 command.

添加多個命令服務

官方的說明一個 命令服務職能執行一個命令. 多個命令的話需要多個 命令服務.

  • How does it work? - https://micro.mu/docs/bot.html#how-does-it-work

go.micro.bot 這個命名空間下的都可以添加到可執行的 命令列表.

實踐測試: test_cmd_service

  1. 添加兩個命令

    // 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"),
    
  2. 分別啓動兩個命令

    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
    
  3. 刷新一下 slack, 輸入 help 指令可以看到新加的指令 command.


方式二: 重新編譯 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

使用流程

  1. 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()
    }
    
  2. 加入 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
    
  3. 啓動機器人

    $ 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
    
  4. 訪問 https://app.slack.com/client, 輸入 help 指令與 yang 指令可以看到增加的命令


自定義機器人交互插件

  • 增加新的輸入源 - 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章