開源|ns4_chatbot通訊元件的工作原理

宜信技術學院發表於2019-04-22

導語:宜信於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通訊元件的工作原理。

專案開源地址:github.com/newsettle/n…

一、專案簡介

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

微信聊天機器人

使用的是開源的wxpy 機器人框架。使用@register這種python wapper機制來繫結訊息響應函式。微信機器人需要對群組進行註冊才能對訊息進行傳送。

QQ聊天機器人

採用酷Q方案。酷Q是windows下的一個程式,可以模擬QQ。在linux系統中,採用wine技術。需要單獨部署成為一個docker,然後通過一個http的介面暴露,各類http介面,用來讓我們傳送訊息。提供http訊息回撥。

二、全域性目錄結構

開源|ns4_chatbot通訊元件的工作原理

三、實現功能

  • 接受內部系統(如監控系統)的系統呼叫,從而把訊息推送給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, 進入如下頁面:

開源|ns4_chatbot通訊元件的工作原理
點選圖中的連結,進入如下頁面,密碼為COOLQ_ACCOUNT對應的密碼。
開源|ns4_chatbot通訊元件的工作原理
登入酷Q,輸入QQ密碼等。
開源|ns4_chatbot通訊元件的工作原理
登入成功介面。
開源|ns4_chatbot通訊元件的工作原理
檢視日誌。
開源|ns4_chatbot通訊元件的工作原理

五、專案配置&啟動

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://:/chat 請求引數:

開源|ns4_chatbot通訊元件的工作原理

內容來源:宜信技術學院

相關文章