導語:宜信於2019年3月29日正式開源nextsystem4(如下簡稱「NS4」)系列模塊。這次開源的NS4系列模塊是圍繞當前支付系統笨重、代碼耦合度高、維護成本高而產生的分佈式業務系統解決方案。NS4系列框架容許建立複雜的流程/業務流,對於業務服務節點的實現可串聯,可分佈式。其精簡、輕量,實現了「脫容器」(不依賴tomcat、jetty等容器)獨立運行。NS4系列框架的設計理念是將業務和邏輯進行分離,開發人員只需經過簡單的配置和業務實現就能夠實現邏輯複雜、性能高效、功能穩定的業務系統。點擊查看框架總體介紹python
NS4系列包括4個開源模塊,分別是:ns4_frame分佈式服務框架(詳情點擊查看:開源|ns4_frame分佈式服務框架開發指南)、ns4_gear_idgen ID生成器組件(NS4框架Demo示例)(詳情點擊查看:開源|爲何要使用ns4_gear_idgen ID生成器?)、ns4_gear_watchdog 監控系統組件(服務守護、應用性能監控、數據採集、自動化報警系統)和ns4_chatbot通信組件。本文將重點介紹ns4_chatbot通信組件的工做原理。mysql
項目開源地址:github.com/newsettle/n…linux
ns4_chatbot是針對業務的一個聊天機器人的聊天框架,集成了qqbot、wxchat、rasa以及web服務。提供微信和QQ聊天接口,能夠對某個羣組發送系統監控消息等。QQ和微信聊天機器人都沒法直接發消息給羣組中的非好友用戶,只能經過@的的方式提醒。git
微信聊天機器人github
使用的是開源的wxpy 機器人框架。使用@register這種python wapper機制來綁定消息響應函數。微信機器人須要對羣組進行註冊才能對消息進行發送。web
QQ聊天機器人redis
採用酷Q方案。酷Q是windows下的一個程序,能夠模擬QQ。在linux系統中,採用wine技術。須要單獨部署成爲一個docker,而後經過一個http的接口暴露,各種http接口,用來讓咱們發送消息。提供http消息回調。sql
此項目主要針對linux系統,採用python2.7+環境進行部署說明。docker
酷Q目前能夠在Wine中運行,見酷Q Air / Pro on Wine,所以也就天然而然有了相應的Docker鏡像coolq/wine-coolq。 要在Docker中使用本插件,可使用酷Q官方的Docker鏡像,而後在其中安裝本插件(下載cpk、編輯配置文件、啓用插件),也可使用維護的已安裝並啓用了插件的鏡像 richardchien/cqhttp(基於酷Q官方的鏡像修改)。數據庫
下面介紹這個鏡像的用法。
sudo apt-get install -y docker.io
$ docker pull richardchien/cqhttp:latest $ mkdir coolq
# 用於存儲酷 Q 的程序文件
$ docker run -ti --rm --name cqhttp-test \
# 將宿主目錄掛載到容器內用於持久化酷 Q 的程序文件
-v $(pwd)/coolq:/home/user/coolq \
-p 9000:9000 \ # noVNC 端口,用於從瀏覽器控制酷 Q
-p 5700:5700 \ # HTTP API 插件開放的端口
-e COOLQ_ACCOUNT=123456 \ # 要登陸的 QQ 帳號,可選但建議填
-e CQHTTP_POST_URL=http://example.com:8080 \ # 事件上報地址
# 容許經過 HTTP 接口訪問酷 Q 數據文件 -e CQHTTP_SERVE_DATA_FILES=yes \ richardchien/cqhttp:latest
複製代碼
在/coolq/app/io.github.richardchien.coolqhttpapi/config/<QQ_ID>.ini 中添加 post_url=http://[IP]:8080/coolq_callback
複製代碼
bot=wechat,qq #啓動微信和QQ功能
bot_chat_base_inteval=1 #設置消息的最少發送間隔,防止微信和QQ被封 bot_chat_interval=3 #在bot_chat_base_inteval的基礎上隨機停頓的時間 retry_max_num=10 #微信或者QQ掉線後嘗試從新登陸的次數
retry_interval = 60 #嘗試從新登陸的時間間隔
retry_sleep=600 #嘗試10次後,沒有登陸成功,就完全休息10分鐘
debug = True #是否打開調試日誌
[admin] email #微信二維碼和錯誤日誌發送的郵箱地址,支持多個郵箱,多個郵箱
地址以逗號隔開
[email]模塊 #配置發送郵箱的用戶名密碼等,注意,此郵箱須要開通 smtp 協議 [http]模塊
port=8080 #配置http服務監聽地址端口
[db] 模塊 #配置數據庫的用戶名、密碼等相關信息 [redis]模塊 #配置redis的ip、端口和密碼等信息 [wxbot]模塊
console_qr = True #是否在日誌窗口打印微信登陸二維碼
cache_path = .cache #緩存地址,存放系統產生的圖片,二維碼等信息 cache_file = wxpy.pkl #存放微信記住密碼等文件
qr_path = .cache/qr.png #存放微信二維碼
[coolq]模塊 #配置酷Q相關的信息 url=http://127.0.0.1:5700/ #配置登陸酷 Q 的地址
qq=12345678 #配置酷Q的登陸帳號
cache_path = [workspace]/coolqdata/image #配置酷 Q 的圖片位置,必須配 置到 coolq 的運行目錄的 data/image,這樣 CQ 碼發送的時候圖片的時候才能生效
[voice2txt] # #科大訊飛|百度的聲音轉文本配置 [rasa]
#NLU 天然語言意圖識別模型
nlu_model = rasa/model/default/latest #對話模型
dialog_model = rasa/model/dialogue
複製代碼
在數據庫biz_system_tree中定義全部可能用到的QQ羣組ID和微信羣組名稱,若是不定義的話,可能會出現找不到對應的羣組的錯誤。
在ns4_chatbot目錄下面,運行nohup python Main.py進行項目的啓動。 而後到配置的郵箱進行微信掃碼。
發送消息接口地址【post】:https://:/chat 請求參數:
內容來源:宜信技術學院