作者贡献声明:
郭利敏, 张磊, 赵亮: 提出研究思路, 设计研究方案;
郭利敏: 程序开发实现;
郭利敏, 张磊: 论文起草;
郭利敏, 赵亮: 最终版本修订。
【目的】尝试将图书馆服务与第三方平台(微信平台)整合, 以提高图书馆信息化服务水平。【应用背景】微信活跃用户的快速增多, 微信公众号被细分为订阅号和服务号。【方法】利用微信平台提供的接口, 结合Java Servlet、WebService技术将图书馆馆藏查询、续借、逾期提醒、咨询、活动等服务整合进微信平台。【结果】读者可通过一键操作的形式便捷地使用图书馆资源和服务。【结论】本文开发的图书馆微信服务能够丰富图书馆的移动服务, 方便读者使用图书馆服务。
[Objective] Integrating library services into WeChat public platform to improve the level of library information services.[Context] The rise of WeChat active users and the public account is divided into service account and subscription account.[Methods] Using the WeChat platform interfaces and the technology about Java Servlet, WebService to integrate the library service such as OPAC search, book renews, remind service, reference work.[Results] Users can use library resources and services in the form of one-key operation.[Conclusions] This application can enrich the service forms of the library and users can use library service comfortably.
据《艾瑞咨询: 2013Q2社交服务移动端流量增长明显, 微信、微博继续领先》[ 1]和《2013年微信商业化价值研究报告》[ 2]显示, 2013年第3季度微信/WeChat月活跃账户数为2.179亿人, 同比增长124.3%, 环比增长15.3%。其月浏览时长达到4.4亿小时, 比第二位的新浪微博高出2.7亿小时。由于微信是媒体属性与社交属性的综合性社交产品, 加上微信朋友圈的活跃, 大大提升了微信的用户黏性。
招商银行信用卡中心微信公共账号结合人机互交技术完成了90%的服务, 完成的业务项目为79项, 占总服务项目的71%, 这不仅能够降低服务成本、提升服务效率和用户体验, 还为招商银行带来了良好的美誉提升了品牌形象[ 3]。清华大学图书馆微信公众订阅号“清华图书馆”将图书馆FAQ、馆藏书目系统查询等服务嵌入微信应用[ 4]。相信将微信引入到图书馆移动服务, 在一定程度上可以提升图书馆的移动服务, 对图书馆的品牌推广也有一定的帮助。
微信5.0之后, 微信公众号被分为服务号与订阅号。
(1) 订阅号旨在用于信息推广, 如: 温州市图书馆、深圳图书馆、厦门大学图书馆、北京大学图书馆等。其中深圳图书馆利用公众订阅号推出深图活动系列来推广近期活动; 温州市图书馆利用公众订阅号来做每日的图书推荐、新闻发布等活动, 同时也兼具以命令行形式为读者提供信息绑定、图书查询、续借等图书馆服务。
(2) 服务号旨在为用户提供服务, 如: 招商银行信用卡中心、南方航空、广州公安等。其中招商银行信用卡中心利用公众服务号为用户提供个人信用卡账单的查询、还款、办卡、个人信息修改查询等服务; 南方航空则是通过公众服务号为用户提供机票预订、办理登机牌、会员服务、出行查询等服务。
上海图书馆于2013年12月推出上海图书馆微信公众服务号, 整合现有的业务系统和服务, 借助微信平台提供的定位、朋友圈等功能为读者提供中心馆网点位置查询、图书推荐、分享等新服务。具体整合功能如图1所示:
整个系统除了可以包含借还书记录查询、图书续借、馆藏书目查询、活动的发布、查询与预订、强化咨询功能等传统的图书馆服务以外, 还基于定位功能为用户提供地理位置信息服务、周边馆藏查询、进馆后的信息导航; 可以给读者实时发送个人的借还清单、逾期提醒、图书搜藏、图书推荐、图书社交网络(SNS)的分享等, 让读者随时随地使用图书馆的资源。
用户界面、功能的设计以操作简单、高效为基础。微信服务号提供了自定义菜单, 不但有助于丰富界面, 而且还能让用户更好更快地理解公众号的功能, 通过适当将读者卡与系统关联, 可以实现一键操作。按照功能将菜单设计分为“我的图书”、“活动”、“发现”三大功能块。
图2中, “我的图书”模块包含“已借图书”、“图书续借”、“图书查询”、“图书推荐”4个功能:
(1) 已借图书: 绑定过读者证的读者可借此查询自己的书目流通记录。
(2) 图书续借: 绑定过读者证的读者可借此进行图书续借操作, 在续借成功后可收到“续借清单”作为凭证。
(3) 图书查询: 提供题目和作者为关键字的书目查询, 查询结果以题名与封面所组成的图文列表的形式返回, 点击后可查看相应书目详细信息及实时的馆藏状态。
(4) 图书推荐: 根据个性化图书推荐系统(Statistical Product and Service Solutions, SPSS)有针对性地推荐8本该读者可能感兴趣的图书。
图3中, “活动”模块包含 “上图展览”、“上图讲座”、“读者培训”三个功能, 以活动图片与名称组成图文列表的形式返回最新的至多8个活动, 点击后可查询相应的详细信息, 如时间、地点等。
图4中, “发现”模块包含“附近的图书馆”、“咨询&反馈”两个功能, 将来也会添加一些体验性的功能, 如知识发现系统。
(1) 附近的图书馆: 根据读者当前位置计算最近的8个服务点的位置、距离、开放时间、联系方式等信息。
(2) 咨询&反馈: 引导读者进入反馈界面进行咨询与反馈, 待工作人员回复后, 系统会自动将回复信息及时推送给相应的读者。
除了上述菜单所提供的功能之外, 系统还为读者提供了额外的功能:
(1) 绑定读者证: 关联读者的读者卡与微信账号, 一个账号只能关联一张读者卡。关联后读者可享受更多的个性化服务。
(2) 解绑读者证: 读者在解除对服务号的关注之后, 系统会自动将其关联的读者卡信息解除绑定。另外通过输入命令“@解绑”, 系统自动将其关联信息解除绑定, 用以满足部分读者同时管理多张读者卡的需求。
(3) 消息推送: 对指定读者发送消息, 在关联读者卡之后, 会在借还书时收到“借还清单”, 在续借时收到“续借清单”, 用以及时告知读者借还情况。图书即将逾期时会收到“逾期提醒”的消息。
公众平台采用轻量级、松耦合架构, 利用平台提供的接口与自建的后台服务器来处理用户的文字、图片、语音等形式的消息, 并向用户提供相应的交互服务处理结果。微信系统服务架构如图5所示:
图5中整个系统分为响应系统和推送系统两部分。
(1) 响应系统: 微信核心处理服务用于接收和验证从微信平台发送过来的消息, 该模块由Tomcat和Servlet搭建而成。消息验证具体流程如图6所示:
其中消息验证模块, 是利用微信平台发送过来的signature、timestamp、nonce三个参数以及与平台实现约定好的令牌来进行验证。参数详细描述如表1所示:
![]() | 表1 消息参数表 |
加密签名signature是采用SHA-1对由token、timestamp、nonce三个参数按照字典排序拼接成的一个字符串进行加密而成的。系统利用token、timestamp、nonce三个参数进行加密之后与signature进行匹配, 若相同则表示消息真实可靠。除了验证参数之外, 还有消息实体内容用以后续的系统处理, 实体内容采用XML格式, 具体结构如下(以事件消息为例):
< xml >< ToUserName >< ![CDATA[toUser]] >< /ToUserName >
< FromUserName >< ![CDATA[FromUser]] >< /FromUserName >
< CreateTime >123456789< /CreateTime >
< MsgType >< ![CDATA[event]] >< /MsgType >
< Event >< ![CDATA[EVENT]] >< /Event >
< EventKey >< ![CDATA[EVENTKEY]] >< /EventKey >
< /xml >
①ToUserName为微信机构号, 服务号在微信平台号的唯一标识符。
②FromUserName为发送方的微信号(Openid), 用户的唯一标识符。
③CreateTime为消息创建时间。
④MsgType为消息类型。在微信平台共定义了文本消息(Text)、图片消息(Image)、语音消息(Voice)、视频消息(Video)、地理位置消息(Location)、链接消息(Link)以及事件消息(Event)7种, 由MsgType来描述。针对不同的消息类型, 具体的结构有细小差别。详见微信说明文档[ 5]。
⑤Event为事件类型, 仅当为事件消息时有效, 包含: 订阅(Sunbscribe)事件, 当用户关注公众号时生成; 取消订阅(Unsubscribe)事件, 当用户取消关注公众号时生成; 自定义菜单事件(Click), 当用户点击公众号界面中的菜单时生成。
⑥EventKey为事件值Key, 与自定义菜单接口中的Key值对应, 用以确定用户点击的菜单按钮。
(2) 推送系统: 由于响应系统是被动接收用户发送来的请求, 无法满足一些实时通知的功能, 如续借清单、借还清单、预期提醒等, 所以运用微信平台提供的客服接口给特定的读者发送消息。具体流程如图7所示:
系统在接收到推送事件之后, 利用Http-Client登录微信平台并获得访问令牌(Access Token), 随后将需要推送的内容打包成JSON格式发送给微信平台, 并由平台推送给读者。推送的消息格式有发送文本消息、发送图片消息、发送语音消息、发送视频消息、发送音乐消息、发送图文消息。
截至2014年2月, 上海图书馆微信公众账号累计关注人数为5 498人, 其中上海用户2 522人, 占45.87%, 部分读者在测试阶段便通过微信的查找功能自行找到并关注上海图书馆微信公众账号, 并通过微博反映微信提供的功能, 非常方便。如图8所示, 至2013年2月, 各功能使用次数统计中位列前三的分别为图书查询3 325次、图书推荐2 303次、上图讲座 2 070次。累计接受/回复读者有效咨询149次。
当然系统在运行过程中也会遇到一些问题:
(1) 响应时间短: 由于微信平台在5秒内收不到自建服务器的响应就会被视为超时, 所以要求系统处理必须在5秒内完成。但由于有些功能往往涉及到其他的系统, 有时候时间开销相对比较大。解决方法主要有两种: 采用线程池的形式来并行处理任务; 也可以适当修改原有的流程来达到性能提升的结果。以图书续借为例, 经过测试处理的时间基本都在5秒左右, 在处理完之后以异步推送消息的方式通知读者续借结果, 但读者可能不会及时看到续借的结果, 部分读者可能会认为自己已经续借但续借并没有成功, 从而导致其逾期。续借流程如图9所示:
(2) 数据收割: 目前的公众平台并没有提供太多有效的数据收割的功能, 服务号的管理者无法了解发布的信息被多少人在朋友圈分享, 因此系统无法做进一步的数据分析; 从微信客户端的功能设置和使用体验来说, 其效果在很大程度上受到微信客户端自身的约束, 例如Symbian手机系统无法使用微信服务号所提供的菜单服务, 因此系统暂时无法为此类手机用户的读者提供服务。
上海图书馆微信服务应用是图书馆业务系统与第三方开发平台对接的一次尝试, 为了符合移动服务的需求, 对部分较老的业务系统接口进行改造, 修改业务流程。下一步会运用语音识别技术来迎合部分用户语音通信的习惯, 强化基于位置的服务(Location Based Service, LBS), 加强朋友圈分享功能, 丰富活动模块的功能和体验效果。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|