乐澳祺1龚鸣敏2
1.武汉学院 信息工程学院,湖北 武汉 430212
摘 要:设计一种以QQ聊天为核心的机器人,由腾讯QQ与机器人服务框架组成,通过QQ平台用户向机器人发送指令与云服务交互,可以用于课程表提醒、天气推送、成绩单查询等,通过使用多线程技术防止聊天服务在高并发场景下阻塞消息处理任务,分解服务功能模块以达到高拓展性。用户界++面为QQ聊天界面,无其他杂乱广告信息,简洁明了。
关键词:聊天机器人;腾讯QQ;易语言;多线程;Socket
中图分类号:TP319 文献标识编码:A
Design and implementation of university information service based on chat robot
Le Aoqi 1 GongMingmin2
(1. School of information engineering, Wuhan University, 430000, Hubei)
Abstract: design a robot with QQ chat as the core, which is composed of Tencent QQ and robot service framework. Through QQ platform, users send instructions to robots to interact with cloud services, which can be used for course schedule reminder, weather push, report card query, etc. multi thread technology is used to prevent chat service from blocking message processing tasks in high concurrency scenarios, and decompose service function modules To achieve high expansibility. User interface for QQ chat interface, no other messy advertising information, simple and clear.
1.引言
当代青年处处与互联网信息高度关联,及时地,便携地,全面地获取学习及生活所需信息成为学生们的高度需求。在学生信息服务方面,涵盖了网络教学,课表查询,题库搜索,文章检索等大领域,还包涵校园电子图书馆,校园电子食堂,校园快递送达服务等小服务项目。诸如常见的APP有“中国大学MOOC”,“网易公开课”,“超级课程表”,“猿题库”等。虽种类多样,使用便携,但也有不少不足之处,如五花八门的网络课程,使课程的检索及选择存在困难,如各课程表管理软件,不够精简,社区复杂,又如题库软件存在依赖性,不满足于题库本身作为联系的软件本质需求。而随着信息个性化及普适化的快速发展,这类需求的地位也急速升高,成为学生生活信息服务的重要因素。
2.系统功能分析与总体设计
2.1.系统功能分析
基于腾讯QQ平台的问答式服务机器人[2]针对大学生生活主要需要实现以下功能:
(1)QQ绑定教务系统:
将QQ账号与教务系统学生账户绑定,通过服务机器人内部程序逻辑,将教务信息准确无误投递至目标学生QQ号,通过这种方式将消息传递效率最大化,借助QQ消息通道等核心能力,实现用户与机器人之间的互通互联。
(2)查询用户近期课程:
用户可以通过主动请求与被动接收两种方式接收由机器人派送的消息,消息主要来源是校内教务系统,通过爬虫软件对特定信息就行过滤并存至数据库服务器。
(3)对指定教务系统继续数据分析:
通过使用爬虫技术从校内教务系统中获取的学生课程表、成绩单信息等。使用正则对教务系统展示的数据就行过滤分类,存至不同的数据库表中。
(4)统计成绩:
通过对已获得的数据进行分析,对数据库内数据使用图形化技术,将成绩直观的展现在用户手中。
(5)娱乐放松:
通过接入第三方接口,向用户提供笑话、土味情话、彩虹屁等娱乐文本。
(6)语音互动:
用户可以向机器人发送语音,机器人通过语音识别技术,对语音内容进行分析并给出相应的回复。
2.2.系统总体设计框架
根据系统功能要求,设计本系统的总体框图如图1所示。系统由中心服务程序,后端程序组成。中心服务程序负责QQ消息派送至客户手中,同时负责接收、处理由后端程序输出的JSON[6],通过解析JSON向指定用户发送主要内容。后端程序主要由数据收集软件、数据处理软件、数据服务中间件、与第三方接口组成。数据收集软件使用易语言编写[4],
对需要分析数据的用户进行排队并逐一分析。数据处理软件需求以归类有效信息为主,使用正则查找等技术。数据服务中间件主要功能是将文本格式化并以JSON的格式发送给中心服务程序。第三方接口主要是一些天气查询、拍马屁、随机笑话等网络API。
3.系统软件设计以及实现
3.1.系统初始化.
系统初始化主要分为中心服务程序初始化以及后端程序初始化两部分。正常初始化后开放用户使用。
(1)中心服务程序初始化:启动Socket客户端,启动线程池中的子业务线程,启动QQ机器人框架,登录机器人账户。管理员通过向机器人发送命令对这些子模块执行重启、关闭、启动等维护操作。Socket客户端与后端Socket服务端连接,通过Socket技术与后端程序进行通讯。线程池中的子线程主要用于批量发送消息,线程池类与子线程业务流程图如图2所示。QQ机器人框架使用第三方QQ机器人框架。
(2)后端程序初始化:启动Socket服务端程序,开放Socket消息端口,启动数据库,运行数据处理软件、数据服务中间件、数据收集软件。
3.2.系统程序设计
(1)中心服务程序设计
中心服务程序作为用户与总体系统沟通的桥梁,需要对用户输入的命令进行准确的解析并向后端发送事件消息。具体结构如图3所示。用户向服务机器人发送消息,框架对消息进行接收,判断是否属于业务命令范围,是则拦截此次消息并创建事件并发送至后端,否则放弃继续处理消息。
(2)数据服务中间件设计
数据派发中间件主要实现数据库交互,通过定时器触发定时推送事件,并以JSON[6]的形式与中心程序进行通信,主要结构如图4所示。定时器用于设定时间触发特定任务,例如在晚上八点推送明天的课程表。数据监听/发送接口即时接收来自中心访问程序的JSON,使用Socket通信技术心服务程序只需向指定服务器接口发送数据即可。事件响应模块负责对事件请求进行处理,返回正确的响应信息。
(3)数据收集软件设计
数据收集软件从数据处理软件取得用户教务账户信息,通过HTTP访问登录教务网站,并对网站返回的网页源码进行分析,将分析的数据返回至数据处理软件处理,如图5所示。
(4)数据处理软件设计
连接数据收集软件与数据库之间的桥梁,即数据处理软件,通过管道技术与数据收集软件进行通信,具体结构如图6所示。管道就是连接一个程序的输出和另一个程序的输入的单向通道[1]。
4.系统测试
4.1.数据收集软件
测试如图7所示,正常取得课程表信息、天气信息,并通过数据处理软件保存至数据库。采用测试的方法:向数据管道发送一次任务数据,能正确取得相应账户的课程表信息,并将数据返回至管道,数据处理软件从管道取回信息并将数据上传至数据库,数据库内成功新建数据条目。
4.2.中心服务程序
正常识别管理员命令,启动线程池,正确发送课表天气信息。并对用户发出的命令进行了正确的响应,用户发送“土味情话”、“夸我”、“今日运势”时正确返回相应文本,向程序发送指定时间段推送时,可以真确推送指定时间所设定的任务。发送“明天天气”、“今天天气”消息时,正确返回天气信息。
5.结语
本文完成了针对大学生活基于QQ聊天服务机器人的系统设计。该系统具有以下优点
(1)可重复利用性:
本设计方案将数据获取模块从中心服务软件分离,在部署到新校园教务系统时,只需改写数据收集软件中访问教务网站的地址,以及用于匹配课程表信息的正则表达式即可适应新教务系统。
(2)可拓展性:
本作品可以通过在中心服务程序中挂载应用程序拓展文件(dll文件)以达到主服务不停止的情况下实现功能挂载与卸载。
本设计可以广泛应用大学信息平台,通过QQ或其他方式推送学生所选择的信息,具有高可拓展性,维护简单,如果将本设计继续优化,功能将更加完善,其适用范围也将更加广阔。
(3)多线程处理消息:
使用线程池技术解决同一时刻大量消息同时推送引起的消息阻塞问题,具有较好的高并发性能。
参考文献
[1]杜楠. Linux进程间的管道通信[J]. 电脑编程技巧与维护, 2005, 000(002):35-37.
[2]李典蔚. 和QQ机器人聊天[J]. 电脑爱好者:普及版, 2007, 000(003):62-62.
[3]王华, 马亮, 顾明. 线程池技术研究与应用[J]. 计算机应用研究, 2005, 22(11):141-142.
[4]易语言教材编委会. 易语言编程系统[M]. 西安地图出版社, 2005.
[5]祁新安, 侯清江. SQL Server数据库的运用研究[J]. 制造业自动化, 2010(14):36-38.
[6]龚建华. JSON格式数据在Web开发中的应用[J]. 办公自动化, 2013(20):46-48.
作者简介:乐澳祺(1999-),男,武汉学院本科,研究方向为电子信息工程。