rboot
是一個使用golang
寫的,簡單、高效的聊天機器人框架,易於擴展,它可以工作在不同的聊天服務上,並透過擴展腳本可實現聊天
、工作助手
、服务监控
、警报触发
等功能。
golang v1.13+
$ go get github.com/ghaoo/ rboot
$ cd $GOPATH /github.com/ghaoo/ rboot /robot
$ go build
$ ./robot
訊息適配器是用來監聽訊息的傳入和傳出,透過訊息適配器可以將聊天客戶端的訊息傳送到機器人,經過腳本處理後返回訊息發送給客戶端。
rboot
提供了命令行cli
微信网页版
企业微信
钉钉
倍洽
聊天轉接器的簡單實作。
Plugin
並沒有提供太多開箱即用的插件,除了一個help
插件,其他的需要開發者根據自己的需求去開發。
help外掛用法:
!help <plugin>
:查看插件幫助信息,當命令不帶插件名稱時會列出所有插件幫助信息,帶插件名稱只列出此插件的幫助信息。
在資料夾
robot/plugins
下有簡單的插件案例,開發者可查看插件編寫方法。
Plugin
不僅可以使用golang編寫插件,也可以使用腳本插件來執行系統指令或使用腳本語言編寫的插件檔案。
腳本插件是用來解析腳本語言的Plugin
插件,它是rboot插件的一個擴充。透過yaml
設定檔來執行系統指令或腳本。
因為腳本插件是建立在
Plugin
基礎之上的,每個腳本都會被註冊到Plugin
之中,所以確保插件之間名稱不要重疊,否則可能先註冊的插件會被後註冊的插件替換!
PLUGIN_DIR
:腳本外掛程式設定檔存放的資料夾,若不配置預設為scripts
我們可以透過建立yaml
檔案來建立一個腳本插件,透過檔案中的設定選項來實現對腳本插件的配置。例如我們建立一個hello.yml
文件,它的內容如下:
name : hello
version : 0.1.0
ruleset :
hello : " ^hello "
usage :
hi : echo hello world and 你好
description : 脚本插件示例
command :
-
cmd :
- echo hi
- echo hello world
-
dir : plugins
cmd :
- echo 你好
這個插件使用的是系統指令echo
。它的意思是:當我們輸入「hello」後,腳本會回傳hi
, hello world
和你好
三個訊息。
配置中各個字段的含義:
配置 | 必須 | 意義 |
---|---|---|
name | 是 | 插件名稱 |
ruleset | 是 | 規則集合 |
version | 否 | 插件版本 |
usage | 否 | 插件用法 |
description | 否 | 插件簡介 |
command | 是 | 插件命令集 |
--- | --- | --- |
dir | 否 | 命令執行資料夾 |
cmd | 是 | 插件命令 |
command
可設定多個命令集,執行順序為從上到下依序執行
cmd
可設定多條指令,執行順序為從上到下依序執行
腳本插件系统命令
和脚本语言
。系統指令模式如上面的hello.yml
,只要在檔案中填寫資料夾和系統指令,當你發出指令後,機器人就會從上到下依序執行。
腳本語言是建立在系統命令模式之上的執行方式,我們可以使用系統命令呼叫語言腳本,從而執行比較複雜的腳本。例如我們使用python輸出「hello robot」。
我們的python腳本如下:
#!/usr/bin/env python
print ( "Hello, robot! i am a python script" )
我們的設定檔如下:
name : pyscript
version : 0.1.0
ruleset :
py : " ^hello python "
usage :
py : execute python script
description : python插件示例
command :
dir : script
cmd :
- ./hello.py
當我們輸入hello python
時,機器人會呼叫hello.py
腳本,腳本輸出"Hello, robot! i am a python script"並透過機器人展示給我們。
在不同作業系統下請確認
目录分隔符
是否符合目前系統設定。windows
下請使用
unix
下請使用/
本專案採用MIT 開源授權許可證,完整的授權說明可在LICENSE 文件中找到。