2018-06-21 01:52

基于微信的GLI交互辅助工具

Brief

:类似GLI(命令行)交互的辅助工具,用于帮助开发者完成或者简化一些简单功能。

Acexy开发者工具

演示

wechat.gif

功能介绍

基于微信订阅号能力,接收关注用户发送的信息实现自动回复,类似CLI交互模式。

它含有两个大模块功能:

  • 智能AI聊天

        基于图灵机器人AI智能自然语言分析回复系统,同用户完成普通智能对话。

  • 命令执行

         命令语义解析,如果匹配交互语言满足命令形式,则将输出解析成命令相关的数据调用相关命令模块进行分析执行。

系统介绍

依靠微信微信订阅号(公众号)能力,实现用户输入数据接入,系统返回数据输出。系统接收到输入文本后进行文本结构分析是否是命令,

如果是则调用命令模块进行执行,否则请求AI进行智能回复。

QQ截图20180621110445.png

开发语言

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", 
            "你好"
        ]
    }}
  • 插件库中查找解析出的命令

QQ截图20180621113742.png

  • 执行找到的插件的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);
});

编写插件的主要步骤:

  1. 使用commandBuilder函数来定义命令,该函数会自动解析传入的上下文来执行指定的命令

  2. 编写每个命令的执行函数(必须是async函数)

  3. exports出exec函数,接收上下文并指定program解析执行。


后言

“Acexy开发者工具”目的在于提供一些常用的功能来辅助工作或生活,欢迎贡献插件,GitHub地址

已实现的插件列表

欢迎使用“Acexy开发者工具”。

微信扫描关注:

                      1529559815.png