基于开源SDK的图书馆微信公众平台设计与实现

2016-10-10 05:16陈诗琴李文江
关键词:菜单公众图书

陈诗琴, 李文江

(1.重庆文理学院图书馆, 重庆 永川 402160; 2.重庆文理学院机电工程学院, 重庆 永川 402160)



基于开源SDK的图书馆微信公众平台设计与实现

陈诗琴1, 李文江2

(1.重庆文理学院图书馆, 重庆永川402160; 2.重庆文理学院机电工程学院, 重庆永川402160)

文章介绍了图书馆微信公众平台的设计思路、具体设计过程和最终实现效果.图书馆微信公众平台开发的重点在于开源SDK控件的应用,平台接口与图书馆管理系统的对接.SDK控件的有效利用降低了平台开发的难度.

SDK控件;图书馆服务;微信公众平台;开发模式

随着移动图书馆的发展,微信作为移动服务的重要方式逐渐受到图书馆的青睐.特别是2014年以来,图书馆俨然进入“微时代”,微信在图书馆的应用研究大量出现.

虽然开通微信公众平台的图书馆越来越多,但大多数图书馆的微信公众平台仍只提供入门级服务[1-4].从时间上看,微信始于2011年,但直到2013年4月才有3所图书馆建立微信公众平台.这反映出业界对信息技术响应迟、起步晚的缺点.从功能上看,已建成的图书馆微信公众平台提供信息推送,内容以新闻公告为主,发布形式也局限于文字和图片.从读者体验看,自助或互动咨询响应慢、操作复杂、专指性较差、互动性不强[1-2,5].

对微信公众平台的具体开发仍是研究的薄弱环节.在2013—2015年的相关研究中,关于微信公众平台设计与实现方面的研究论文只占相关论文总量的5﹪(数据来源于CNKI,截止时间为2015年10月),其中阐述设计思路和策略的多,对技术实现的具体细节关注少.可见,图书馆在充分利用微信公众平台提供的第三方接口时还存在技术壁垒.本文从降低开发难度角度,详细介绍如何利用开源控件SDK在开发模式下实现图书馆微信公众平台的构建.

1 设计思路

1.1功能分析

图书馆移动服务的内容体系可以分为3类[2,6-7].一是读者信息管理,通过绑定个人账号,读者可以了解当前已借阅信息,进行图书续借、预约等业务处理;二是信息发布和推送,这类信息包括图书馆的新闻通知、资源推荐、读者培训、活动预告和专题信息等;三是信息检索和服务,微信公众平台实现OPAC检索、知识库查询、无线局域网内的数据库检索以及学科服务、定制服务等.

根据图书馆移动服务内容体系,结合图书馆管理系统特点,本文将微信公众平台设计为相应的三大功能模块(如图1所示):资源检索、我的图书和读者服务.其中前两个模块是针对图书馆管理系统进行查询,最后一模块针对图书馆网站进行查询.

1.2框架构建

针对微信公众平台的设计目标,构建以下微信公众平台框架,如图2所示.其中,重点在于整合图书馆网站、管理系统和服务内容,并分别与微信公众平台第三方接口实现对接.

图1 图书馆微信公众平台功能结构

图2 微信公众平台框架

(1)对接图书馆网站

针对在图书馆管理系统和图书馆主页等网站直接查询获取信息这一情况,采用在微信中直接打开相应网站进行查询的方式.这种方式获取信息量大,无需另建微站.

(2)对接图书馆知识库

微信公众平台将读者的提问送入智能问答系统[8],并将问题与智能问答系统中的图书馆知识库比对,找出类似问题的答案反馈给读者,从而实现常规问题的自动回复.

(3)信息查询处理系统

针对“当前借阅”“超期图书”“续借图书”建立对应的查询程序,并获取查询信息,及时自动回复给读者.对“新书推荐”“超期图书”“新闻动态”建立信息提取,将提取的信息推送给读者.

1.3技术选择

在开发模式下,WEB应用系统(以下简称“应用系统”)是搭建微信公众平台的核心内容,负责将微信公众平台发送的XML 消息进行解析、与图书馆管理系统建立信息查询、将获取的查询信息进行XML 封装等工作.

表1 Senparc.Weixin.MP关键类介绍

本文基于.NET环境选择开源WeixinMpSdk.dll SDK控件来搭建微信公众平台.WeixinMpSdk.dll开源SDK控件集成了URL有效性验证、接收消息、发送消息、自定义菜单等主要功能.SDK包含的关键类如表1所示.在程序开发时,直接调用SDK相应功能就可完成XML消息的解析与封装等工作,降低了程序开发难度.本文开发重点在开源SDK 控件的应用,以及平台与图书馆管理系统的对接.

2 应用系统的具体设计

基于上述设计思路,应用系统的具体流程如图3所示.

图3 应用系统的流程设计

平台针对3种信息整合方式,WEB应用系统需建立4个主要模块:自定义微信菜单模块、接收信息的XML解析模块、信息查询处理模块、发送信息的XML封装模块.

(1)自定义微信菜单模块

在微信公众号使用前建立如图1所示的功能菜单,并对菜单类型进行相应设置.菜单类型分为view和click两类.click型菜单通过KEY属性值,启动“借阅图书”“超期图书”“续借图书”信息处理程序.view类型的菜单通过URL链接地址与图书馆相关网站建立对接.

(2)接收信息的XML解析模块

读者点击“click类型菜单”,手动输入信息后,微信服务器将接收到的信息发送给WEB应用系统进行信息的XML解析,判断信息类别.若获取的是菜单KEY值,就调用相应处理程序;若是读者输入发送的信息类型,又将进行判断是否包含指定的指令.若包含指定的指令,则执行对应程序,否则直接将信息送入智能问答系统.

(3)信息查询处理模块

针对“当前借阅”“超期图书”“续借图书”建立对应的查询程序,并获取查询信息,及时自动回复给读者.针对“新书推荐”“超期图书”和“新闻动态”,根据需要主动推送信息,需要建立信息推送子系统.子系统在图书馆管理系统和图书馆主页网站提取相应信息,推送给读者.

(4)发送信息的XML封装模块

所有信息在发送之前需要将信息按照微信相应信息格式进行XML封装才能发送给读者.

3 应用系统具体实现

3.1获取access_token票据

access_token是微信公众号的全局唯一票据,微信公众号调用各接口时都需使用access_token.在开发模式中获取AppID和AppSecret,调用接口请求获取access_token.正常情况下access_token有效期为7 200 s,重复获取将导致上次获取的access_token失效,而且获取access_token的api调用次数非常有限.所以将其存储在Global.asax全局变量Application(“AccessToken”)中,在要结束有效期时重新获取.

3.2创建自定义菜单

“资源检索”和“ 读者服务”下的二级菜单都是view类型菜单,每个二级菜单的URL属性设置为图书馆对应的网站地址,完成了与网站的对接.这种方式的优点在于获取信息量大,读者使用方便,实现简单;缺点是比较耗费手机流量.

“我的图书”下的二级菜单都是click类型菜单,每个二级菜单的KEY属性值可自行定义,但值不能重复.如表2所示.

3.3接收信息的XML解析模块

微信服务器接收到读者消息后,将XML消息数据包推送到WEB应用系统的URL上.WEB应用系统将解析XML消息,获得读者发送的具体内容.根据内容的不同,系统将启动不同的模块程序.

(1)指令编码规则

“绑定读者号”需要输入读者号码和密码.“续借图书”需要输入续借图书索书号,所以不能用菜单启动相应程序完成具体操作,主要采用“指令JHJ文本”形式进行编码.“绑定读者号”采用“bdJHJ读者号&密码”形式,“续借图书”采用“xjJHJ图书索书号”形式.

(2)解析详细过程

根据设计要求,只需对读者部分事件(包括关注事件、点击click类型菜单事件、取消关注事件)和输入文本消息(包括“绑定读者号”“ 续借图书”编码和其他文本)进行解析.

WEB应用系统利用ConvertMsgToObject方法将XML数据包转化为ReceiveMessageBase消息基础实例,获取实例的消息类型MsgType(Event、Text)的值,进而根据值的不同执行不同的操作.解析接收信息XML的程序执行过程如图4所示.

对于事件的解析主要在于判断操作类型,而文本消息解析除了判断文本分类外,还需获取读者发送的数据.读者号和密码的获取是从TextReceiveMessage实例中获取读者微信ID和“bdJHJ读者号&密码”文本信息,再从文本信息中利用JHJ、&分隔符将“读者号”和“密码”进行分离.图书索书号利用同样的方法分离来获取.若获取其他文本信息,经整理后送入智能问答系统进行匹配查询.

3.4信息查询处理模块

信息查询主要分两类.一类是根据读者的操作发送被动响应消息:“绑定读者号”“当前借阅”“超期图书”“续借图书”“解除读者号”和“智能问答系统”.另一类是WEB应用系统主动发送客服消息:“新书推荐” “超期图书”和“新闻动态”.这两类信息来源于图书馆网站和管理系统.

图书馆主页网站和图书馆管理系统均采用SQL Server数据库.WEB应用系统选择LINQ to SQL建立数据模型.首先新建LINQ to SQL 类文件( Data-Classes.dbml) ,接着添加数据库连接,再从数据库中选择数据表、视图,拖放到类文件中自动生成ORM代码.这样就可以在程序中直接调用生成的代码,无需编写SQL查询语句.

图4 解析接收信息XML的详细程序流程

3.5发送信息的XML封装

微信服务器要求回复信息响应时间为5 s,信息内容长度不能超过2 048字节.采用线程池的形式来并行处理任务或适当修改原有的流程都可达到节约时间开销的目的[9].本文对此处理为:在执行查询时的响应时间若超过4 s,则中断查询,用完整的查询链接地址信息回复读者.若查询信息内容长度超标,只截取前面部分信息,再加上完整的查询链接地址信息回复给读者,让读者通过访问链接进行完整查询的方式避免因异步推送消息延迟造成误解.

(1)发送被动响应消息

当接收到读者信息后及时回复的读者信息.回复信息的XML封装主要应用Send*ReplyMessage方法,回复消息的发送者为WEB应用系统,消息的接收者为读者.比如,回复文本信息的程序代码如下:

SendTextReplyMessage(ReceiveMessage.ToUserName, ReceiveMessage.FromUserName, “回复消息”).其中,ReceiveMessage为WEB应用系统接收到读者发送信息实例.

(2)发送客服消息

WEB应用系统主动向读者发送消息.消息的XML封装主要是应用Send*CustomMessage方法.该方法需要获取access_token票据、读者的微信ID和发送的信息.其中,微信ID从自建微信公众平台DB中获取.比如,发送文本信息的程序代码为:SendTextCustomMessage(AccessToken, toUser, “文本客服消息”).

4 实现效果

应用系统是以Windows 2003 Server服务器、Microsoft.NET Framework 4.0框架和IIS 6.0为运行环境.

微信读者扫描平台二维码即可进行关注.整个平台的自定义菜单如图5所示.“资源检索”和“读者服务”直接链接图书馆网站.“我的图书馆”是绑定读者号后启动相应的查询程序,返回查询信息给读者.

图5 查询指令菜单

自动推送信息:“新书推荐”“超期图书”和“新闻动态”. “新书推荐”和“新闻动态”采用图文消息的形式发送.每组图文消息不能超过10条,否则无响应.

微信公众平台的应用较好地满足了图书馆和读者两大主体对信息交互的需求.确保图书馆信息发送的目标更精准、信息量更大,并使信息发送的成本降低.微信公众平台提供菜单方式的查询服务,达到信息过滤的效果,使读者按需选择、目标清晰,自助服务更易实现.

5 结语

构建开发模式的微信公众平台,其核心内容在于WEB应用系统,其难点也在于对WEB应用系统的解析、封装.采用WeixinMpSdk开源控件直接跳过编写底层代码这一环节,提高了开发效率.平台的自定义菜单设计为向导式操作,为读者使用提供导航.

由于WeixinMpSdk控件没有提供网页访问授权的Oauth功能,本文中采用指令方式完成绑定读者号和图书续借功能.“资源检索”和“读者服务”直接链接图书馆网站.使用非WIFI网络访问时流量消耗较大.下一步研究将利用微信网页访问授权开发图书馆微站,使之和微信公众平台相补充,以降低流量、加快访问速度.

[1]黄浩波. 高校图书馆微信服务现状及建议[J]. 图书馆学研究, 2014(3): 60-63.

[2]张骏毅,杨九龙,邓媛. “211工程”高校图书馆微信应用现状分析与对策研究[J]. 图书馆学研究, 2014(6): 29-34.

[3]张秋,杨玲,王曼. 高校图书馆微信公众平台服务发展现状及对策[J]. 图书馆建设, 2014(2): 61-65.

[4]陈艳. 国内图书馆微信公众平台服务现状研究[J]. 四川图书馆学报, 2014(4): 33-36.

[5]叶佩珍. 我国高校图书馆微信服务现状调查研究[J]. 图书馆学研究, 2014(12): 80-84.

[6]张蓓,窦天芳,张成昱,等. 开发模式下图书馆微信公众平台服务的设计与实现[J]. 现代图书情报技术, 2014(1): 87-91.

[7]邓媛,张骏毅,杨九龙. 高校图书馆微信资源共建系统的设计与实现[J]. 图书馆学研究, 2014(10): 41-47.

[8]李文江,陈诗琴. AIMLBot智能机器人在实时虚拟参考咨询中的应用[J]. 现代图书情报技术, 2012(7): 127-132.

[9]郭利敏,张磊,赵亮. 图书馆微信服务应用开发——以上海图书馆为例[J]. 现代图书情报技术, 2014(5): 96-101.

(责任编辑穆刚)

Design and implementation of library WeChat public platform based on open source SDK

CHEN Shiqin1, LI Wenjiang2

(1.Library, Chongqing University of Arts and Sciences, Yongchuan Chongqing 402160, China;

2.Faculty of Electromechanical Engineering, Chongqing University of Arts and Sciences, Yongchuan Chongqing 402160, China)

This article introduces the design method, design process of library WeChat public platform and the final experimental results. The development focuses on the application of open source SDK control, the docking between platform interface and library management system. The effective use of the SDK control, reduces the difficulty of development.

SDK control; library service; WeChat public platform; development mode

2015-11-12

陈诗琴( 1981—) , 女,重庆九龙坡人,馆员,主要从事图书馆信息管理、信息技术应用方面的研究.

G250.7

A

1673-8004(2016)05-0113-06

猜你喜欢
菜单公众图书
公众号3月热榜
公众号9月热榜
公众号8月热榜
图书推荐
公众号5月热榜
中国新年菜单
欢迎来到图书借阅角
班里有个图书角
本月菜单
一个“公海龟”的求偶菜单