图书馆微信机器人的研究与应用_罗涛
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
也将图书馆公众号由一个媒体型的消息工具转 化成提供服务的产品。
2 系统设计
2.1 工作模式 如图 1 所示,读者通过移动终端上的微信
客户端向公众号发送一条消息,客户端会首先 向微信服务器发送一个请求,公众平台的消息 接口捕捉到这个请求后会将请求的内容进行封 装,然后向微信机器人服务端发送一个 HTTP 请求,机器人服务端的 Web 应用接口接受请求 后会对其中的内容进行解码,根据解码获得的 消息内容进行分类处理,最后将结果再通过公 众平台的消息接口转发给读者 [4]。
57
和权限验证等操作,验证通过后再根据消息的
// 如 果 值 相 同 则 返 回 echoStr 参 数 的 值,
类型进行分类处理,同时也要对消息执行中的 绑定成功
各类异常情况做出相关处理。
HttpContext.Current.Response.Write
(3)数据库管理:包括读者信息的管理, (echoStr);
Array.Sort(ArrTmp);
XmlDocument doc = new XmlDocument();
String tmpStr = String.Join("", ArrTmp);
doc.LoadXml(postStr);
// 对字符串进行 sha1 加密
// 提取封装前的信息
tmpStr = FormsAuthentication.HashPassword
值,微信服务器为了验证 URL 的有效性会发送 人相关信息;资讯类消息用于获取图书馆的最
GET 请求到填写的 URL 上。GET 请求会携带四 新资讯信息;查询类消息用于“图书馆 FAQ”
个 参 数 signature、timestamp、nonce 和 echostr, 的查询;导航类消息用于“书目检索”和“文
进行校验,校验成功则原样返回 echostr 参数内 息、消息的类型、读者的微信号和机器人的微
容,接口绑定成功,否则绑定失败 [5]。
信号等内容封装成 XML 格式的数据包并发送
关键代码:
给微信机器人;②机器人在接收到数据后从中
// 获取 GET 请求中的 signature、timestamp、 提取出封装前的信息,如果是文本类消息则进
1 图书馆微信机器人的研究现状
微信公众平台是一个开放的平台,提供强 劲的 API 接口技术,公众号可根据需要在自身
的服务器上开发和接入相关应用,如自定义菜 单、对接相关业务系统等。公众平台的这些特 性催生出了微信机器人。微信机器人就是指利 用微信公众平台提供的接口通过一定的数据逻 辑和数据库实现在微信平台上的智能对话 [3]。 微信机器人可为读者提供更多、更全面且更方 便 快 捷 的 移 动 服 务 内 容, 例 如 可 接 入 图 书 馆 OPAC 系统、读者管理系统、特色数据库甚至 阅览座位管理系统等应用。
(2)消息处理:机器人只能处理特定格式 的消息,而读者发送过来的消息却有很多不确 定性。因此接收到消息后首先要进行语法检查
罗 涛 朱 莹:图书馆微信机器人的研究与应用 Luo Tao, Zhu Ying: Research and Application of Library WeChat Robot
罗 涛 朱 莹:图书馆微信机器人的研究与应用 Luo Tao, Zhu Ying: Research and Application of Library WeChat Robot
55
图书馆微信机器人的研究与应用
罗 涛(东南大学图书馆) 朱 莹(中国人民解放军理工大学)
摘 要 随着使用微信的读者数量不断增加,越来越多的图书馆利用微信开展移动服务。在对微 信公众平台研究的基础上,提出了一种图书馆微信机器人的设计方案。详细介绍了机器人的设计 和实现过程,对接口绑定、消息处理和数据管理等关键技术进行了详细的阐述,最后分析了系统 存在的问题并提出了改进方案。
// 将加密后的字符串与 signature 的值进行 Node("MsgType").InnerText;
比较
string Content = rootElement.SelectSingleNode
if (tmpStr == signature)
("Content").InnerText;
{
……
其中 signature 参数是微信加密签名,它结合了 献检索”的 WAP 网站地址导航;维护类的消
已配置的 Token 值和请求中的 timestamp 参数、 息用于读者留言以及馆员扩充知识库。消息处
nonce 参数。机器人通过检验 signature 对请求 理的工作流程:①微信服务器将读者发送的消
通 过 在 微 信 公 众 平 台 上 进 行 搜 索, 有 近 30 家国内高校图书馆注册了公众号。其中绝 大部分图书馆主要是利用公众平台推送一些本 馆的信息资讯,例如北京大学图书馆、中国人 民大学图书馆和北京师范大学图书馆等;也有 一小部分图书馆除了推送信息外,还提供了一 些交互和查询的功能,也就是具有了机器人的 自动应答功能,例如清华大学图书馆提供了本
关键词 微信机器人 微信公众平台 图书馆 语义分析
DOI: 10.13663/j.cnki.lj.2014.11.011
Research and Application of Library WeChat Robot
Luo Tao (Library of Southeast University) Zhu Ying (University of Science and Technology of People’s Liberation Army)
nonce 和 echostr 值
行下一步处理,如果是非文本类消息则回发一
String signature = HttpContext.Current. 条报错消息;③对于文本类消息要判断其合法
Request.QueryString["signature"];
性,如果合法则进一步判断消息的类型,如果
……
不合法则回发合法的消息列表;④根据消息的
// 对 Token、timestamp、nonce 三 个 参 数 类型进行分类处理,最后将处理结果回发给
进行字典序排序
读 者。
String[] ArrTmp = { Token, timestamp,
关键代码:
nonce };
// 加载收到的 XML 格式的数据包
56 ·新技术应用·
wk.baidu.com
图书馆杂志(2014年第11期 总第283期) Library Journal(Vol.33.No.11)
馆常用信息、图书及个人借阅情况以及热门期 刊与最新文章信息等内容的查询;厦门大学图 书馆提供了公告、讲座、图书和座位等信息的 查询;南京大学图书馆提供了读者信息绑定功 能,读者将证件号与微信号绑定后,就可以进 行图书查询、借阅和续借等操作;上海交通大 学图书馆和华中科技大学图书馆提供的功能都 是以菜单的形式展现给读者的,其中前者提供 了非常多的功能,包括借阅信息查询、讲座预 约、图书荐购、图书检索、文章检索、期刊导 航和常见问题等。东南大学图书馆也利用微信 公众平台进行了微信机器人的开发,一方面锁 定了读者的需求,让读者主动“上门”关注, 提高读者对图书馆公众号的依赖性;另一方面
XmlElement rootElement = doc.Document
ForStoringInConfigFile(tmpStr, "SHA1");
Element;
tmpStr = tmpStr.ToLower();
string MsgType = rootElement.SelectSingle
Server 2005。
识别。机器人会自动判断消息的合法性,并根
3.1 机器人初始化
据消息的类型进行分类响应。目前机器人所能
机器人初始化实际上就是一个接口绑定的 识别的消息可分为“验证”、“资讯”、“查询”、
过程。具体的步骤是:在微信公众平台上配置 “导航”和“维护”五种类型。验证类消息主
机器人接口 URL 地址和用作生成签名的 Token 要用于读者身份信息的绑定、解绑以及获取个
0 引言
微信是腾讯公司于 2011 年初推出的一款 快速发送文字和照片、支持多人语音对讲的手 机聊天软件 [1]。2012 年 8 月腾讯公司新增微信 公众平台模块,通过这一平台,个人和企业都 可以打造一个微信公众号,发布自己的信息和 资讯。用户通过关注微信公众号能够获得相关 推送消息,方便阅读和信息获取。截至 2013 年 11 月微信注册用户量已经突破 6 亿,而微 信公众平台的用户数量也达到了 200 万 [2]。在 这一背景下,使用微信的图书馆读者数量也在 不断增加,越来越多的图书馆利用微信和微信 公众平台开展移动服务。
图书馆微信机器人的主要功能就是接收读 者发送的消息并进行智能化的处理,最后将结 果回发给读者。因此将系统的功能划分成“机 器人初始化”、“消息处理”和“数据库管理” 三个模块。
图 2 图书馆微信机器人系统架构
(1)机器人初始化:机器人跟公众平台的 信息交互是通过特定接口完成的,只有将机器 人的 Web 应用接口与公众平台的消息接口进行 绑定,两者之间才能进行正常的通信。
Abstract With the increasing number of readers using WeChat, more and more libraries use WeChat to develop mobile services. On the basis of research on WeChat public platform, this paper puts forward a design proposal of library WeChat robot, provides the detailed description of the design and implementation process, describes the interface binding, message processing and data management, and other key technologies, and analyzes the existing problems in the system as well as putting forward the improvement plan. Key words WeChat robot, WeChat public platform, Library, Semantic analysis
图 1 图书馆微信机器人工作模式
2.2 系统架构 系统采用四层架构设计,分别是表示层、
应用层、业务层和数据层,如图 2 所示。表示 层就是指微信客户端,读者可以通过智能手机 或平板电脑等移动终端进行登录。应用层主要 由 微 信 服 务 器 构 成, 负 责 将 读 者 的 消 息 转 换 为 HTTP 请求再通过公众平台的消息接口发送 到业务层。业务层用于机器人进行业务逻辑处 理,负责对应用层的请求作出响应,通过消息 解释器对请求进行分析,根据请求的类型分发 到不同的处理器,再由处理器调用数据访问接 口对数据层中的数据进行查询、添加和修改等 操作。数据层由本地数据库和图书馆业务系统 数据库组成,负责数据的存储、组织和管理。 2.3 功能模块
本地数据的维护以及日志信息管理等。
HttpContext.Current.Response.End();
}
3 系统实现
3.2 消息处理
系统基于 ASP.NET 平台采用 C# 语言开发。
消息是读者与机器人交流的桥梁,读者发
开发工具 Visual studio 2010,数据库使用 SQL 送的消息必须符合特定的格式才能被机器人所
58 ·新技术应用·
图书馆杂志(2014年第11期 总第283期) Library Journal(Vol.33.No.11)
// 判断消息类型并对文本类消息进行处理 if (MsgType == "text") {
order mGet = new order(); // 自定义消息 处理类
int flag = mGet.Reg(Content); // 判 断 消 息合法性并返回类型编号