基于微信的GLI交互辅助工具
Brief
:类似GLI(命令行)交互的辅助工具,用于帮助开发者完成或者简化一些简单功能。
Acexy开发者工具
演示
功能介绍
基于微信订阅号能力,接收关注用户发送的信息实现自动回复,类似CLI交互模式。
它含有两个大模块功能:
智能AI聊天
基于图灵机器人AI智能自然语言分析回复系统,同用户完成普通智能对话。
命令执行
命令语义解析,如果匹配交互语言满足命令形式,则将输出解析成命令相关的数据调用相关命令模块进行分析执行。
系统介绍
依靠微信微信订阅号(公众号)能力,实现用户输入数据接入,系统返回数据输出。系统接收到输入文本后进行文本结构分析是否是命令,
如果是则调用命令模块进行执行,否则请求AI进行智能回复。
开发语言
NodeJs
koa2框架作为微信信息处理层
提供类似容器的基础服务框架,用于做公共操作(目前仍处于调试优化阶段,暂未开源)
文本解析,AI请求,命令插件执行
命令插件已开源至GitHub,欢迎push命令插件丰富命令库
参与贡献插件命令
语义解析
当前版本的解析规则:
所有以非中文开始并且含有空格后有容的解析
例如:"abc 内容"符合命令格式;"命令 命令"则不符合
插件执行
基础框架在解析完内容后将判定是否是命令,是否需要执行。
例如:用户第一次输入 你好,第二次输入 t 你好。第二次的解析对象如下:
{ "openid": "", // openid 可用于区分用户 "lastRequest": { // lastRequest 上次请求的内容 (第一次请求无此对象,并且5分钟内无连续回复被认为是新的第一次回复) "requestTime": 1529558495075, "rawContent": "你好", "isCommand": false }, "request": { "requestTime": 1529558530374, // 请求时间 "rawContent": "t 你好", // 原始输入内容 "isCommand": true, // 是否是命令 "command": "t", // 解析出的主命令 "args": [ // 如果符合命令将会按空格进行参数分割 "t", "你好" ] }}
插件库中查找解析出的命令
- 执行找到的插件的exec函数,传入解析对象以获取命令运行结果
基本插件代码
const program = new commandBuilder(); const commandBuilder = require('../lib/commandBuilder'); // 基础服务框架执行该exec函数 module.exports.exec = async reqData => { // program将根据命令参数自动执行相关命令 return await program.exec(reqData.request.args); }; // 向program对象注入命令 // 参数1 命令格式 '<>' 代表传入的变量 // 参数2 命令描述 用于-help命令输出描述内容 // 参数3 async Function 用于完成命令的具体处理逻辑 return String program.command("test <content>", "自定义命令描述", async function (content) { return md5(content); });
编写插件的主要步骤:
使用commandBuilder函数来定义命令,该函数会自动解析传入的上下文来执行指定的命令
编写每个命令的执行函数(必须是async函数)
exports出exec函数,接收上下文并指定program解析执行。