1. 程式人生 > >開源|ns4_chatbot通信組件的工作原理

開源|ns4_chatbot通信組件的工作原理

per port 點擊 ofo pwd fault resources 獨立 demo示例

導語:宜信於2019年3月29日正式開源nextsystem4(以下簡稱“NS4”)系列模塊。此次開源的NS4系列模塊是圍繞當前支付系統笨重、代碼耦合度高、維護成本高而產生的分布式業務系統解決方案。NS4系列框架允許創建復雜的流程/業務流,對於業務服務節點的實現可串聯,可分布式。其精簡、輕量,實現了“脫容器”(不依賴tomcat、jetty等容器)獨立運行。NS4系列框架的設計理念是將業務和邏輯進行分離,開發人員只需通過簡單的配置和業務實現就可以實現邏輯復雜、性能高效、功能穩定的業務系統。點擊查看框架整體介紹

NS4系列包括4個開源模塊,分別是:ns4_frame分布式服務框架(詳情點擊查看:開源|ns4_frame分布式服務框架開發指南)、ns4_gear_idgen ID生成器組件(NS4框架Demo示例)(詳情點擊查看:開源|為什麽要使用ns4_gear_idgen ID生成器?)、ns4_gear_watchdog 監控系統組件(服務守護、應用性能監控、數據采集、自動化報警系統)和ns4_chatbot通訊組件。本文將重點介紹ns4_chatbot通訊組件的工作原理。

項目開源地址:https://github.com/newsettle/ns4_chatbot

一、項目簡介

ns4_chatbot是針對業務的一個聊天機器人的聊天框架,集成了qqbot、wxchat、rasa以及web服務。提供微信和QQ聊天接口,可以對某個群組發送系統監控消息等。QQ和微信聊天機器人都無法直接發消息給群組中的非好友用戶,只能通過@的的方式提醒。

微信聊天機器人

使用的是開源的wxpy 機器人框架。使用@register這種python wapper機制來綁定消息響應函數。微信機器人需要對群組進行註冊才能對消息進行發送。

QQ聊天機器人

采用酷Q方案。酷Q是windows下的一個程序,可以模擬QQ。在linux系統中,采用wine技術。需要單獨部署成為一個docker,然後通過一個http的接口暴露,各類http接口,用來讓我們發送消息。提供http消息回調。

二、全局目錄結構

技術分享圖片

三、實現功能

  • 接受內部系統(如監控系統)的系統調用,從而把消息推送給QQ或者微信用戶。內部系統調用服務的時候,需要提供以下信息
    • 發給哪個群組
    • 發給這個群組中的那個用戶
    • 發送的消息
  • 可以接受QQ、微信用戶的對話,理解其意圖,並且回應用戶。

四、項目部署&安裝

此項目主要針對linux系統,采用python2.7+環境進行部署說明。

4.1 依賴環境安裝

  • 安裝必需依賴包:取項目中的 ns4_chatbot/requirements.txt 文件,運行pip install –r requirements.txt命令
  • 安裝redis
  • 安裝mysql數據庫,導入ns4_chatbot/import_data/production/ddl.sql 文件

4.2 酷Q聊天機器人安裝

酷Q目前可以在Wine中運行,見酷Q Air / Pro on Wine,因此也就自然而然有了相應的Docker鏡像coolq/wine-coolq。
要在Docker中使用本插件,可以使用酷Q官方的Docker鏡像,然後在其中安裝本插件(下載cpk、編輯配置文件、啟用插件),也可以使用維護的已安裝並啟用了插件的鏡像 richardchien/cqhttp(基於酷Q官方的鏡像修改)。

下面介紹這個鏡像的用法。

  • docker 安裝

sudo apt-get install -y docker.io

  • 酷Q安裝
$ 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
  • 配置酷Q回調地址:
在/coolq/app/io.github.richardchien.coolqhttpapi/config/<QQ_ID>.ini 中添加 post_url=http://[IP]:8080/coolq_callback 
  • 酷Q啟動:
    在瀏覽器中輸入 http://[ip]:5700, 進入如下頁面:

技術分享圖片
點擊圖中的鏈接,進入如下頁面,密碼為COOLQ_ACCOUNT對應的密碼。
技術分享圖片
登錄酷Q,輸入QQ密碼等。
技術分享圖片
登錄成功界面。
技術分享圖片
查看日誌。
技術分享圖片

五、項目配置&啟動

5.1 配置 bot.conf 文件

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

5.2 數據庫配置

在數據庫biz_system_tree中定義所有可能用到的QQ群組ID和微信群組名稱,如果不定義的話,可能會出現找不到對應的群組的錯誤。

5.3 啟動

在ns4_chatbot目錄下面,運行nohup python Main.py進行項目的啟動。 然後到配置的郵箱進行微信掃碼。

六、接口調用說明

發送消息接口地址【post】:https://<ip>:<port>/chat 請求參數:
技術分享圖片

內容來源:宜信技術學院

開源|ns4_chatbot通信組件的工作原理