文档章节

开源|ns4_chatbot通信组件的工作原理

宜信技术学院
 宜信技术学院
发布于 04/22 11:35
字数 1776
阅读 37
收藏 1

导语:宜信于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 请求参数:

内容来源:宜信技术学院

© 著作权归作者所有

宜信技术学院

宜信技术学院

粉丝 212
博文 132
码字总数 440021
作品 5
东城
私信 提问
专注业务逻辑的轻量级服务框架 - nextsystem4

nextsystem4(NS4)系列模块是宜信开源的围绕当前支付系统笨重、代码耦合度高、维护成本高而产生的分布式业务系统解决方案。NS4系列框架允许创建复杂的流程/业务流,对于业务服务节点的实现可...

宜信技术学院
04/12
660
0
宜信开源专注业务逻辑的轻量级服务框架 nextsystem4

宜信于2019年3月29日正式开源nextsystem4(以下简称“NS4”)系列模块。此次开源的NS4系列模块是围绕当前支付系统笨重、代码耦合度高、维护成本高而产生的分布式业务系统解决方案。NS4系列框...

宜信技术学院
04/15
1K
10
link和@import的区别

页面中使用CSS的方式主要有3种:行内添加定义style属性值,页面头部内嵌调用和外面链接调用,其中外面引用有两种:link和@import。外部引用CSS两种方式link和@import的方式分别是: XML/HTML...

_大雁
2013/09/26
120
0
Web前端面试指导(十一):样式导入有哪些方式?

样式导入方式 link import 使用方式 link的使用 [css] view plain copy import的使用 [css] view plain copy 不同点 link除了引用样式文件,还可以引用图片等资源文件,而import只引用样式文...

智学无忧1
2017/05/05
0
0
《React Native 精解与实战》书籍连载「React Native 底层原理」

此文是我的出版书籍《React Native 精解与实战》连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理、React Native 组件布局、组件与 API 的介绍与代码实战,以及 ...

Parry
2018/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot 操作ActiveMQ

一、消息队列中间件介绍 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的...

zw965
21分钟前
3
0
本地化存储Storage

为什么会引入Storage(sessionStorage,localStorage,globalStorage) Web storage的目的是克服由cookie带来的限制,当数据需要严格控制在客户端上时,无须持续将数据发回服务器。主要是提供一...

五公里
29分钟前
6
0
Qt编写自定义控件57-直方波形图

一、前言 直方波形图控件非原创控件,控件大全中大概有20-30个控件非自己原创,而是参考了网上开源的代码,自己加以整理和完善,新增了插件的代码使得可以直接集成到QtDesigner或者QtCreator...

飞扬青云
30分钟前
2
0
或许你不知道的10条SQL技巧

这几天在写索引,想到一些有意思的TIPS,希望大家有收获。 一、一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不...

mskk
36分钟前
5
0
IntelliJ IDEA (Mac) 运行速度优化(JVM+localhost)

1.1. JVM 参数配置 打开 idea,菜单 –> help –> edit custom vm options,调整参数,重启即可。 具体调整参数: -Xms2g -Xmx2g -XX:ReservedCodeCacheSize=1024m -XX:+UseCompressedOops 1......

指尖Coding
45分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部