微信馆情通报服务
黎邦群
惠州学院图书馆 惠州 516007
通讯作者: 黎邦群 E-mail: seek@hzu.edu.cn
摘要

【目的】通过图书馆微信公众号向读者及馆员实时地通报馆情。【应用背景】读者在入馆之前很难了解馆情, 馆员的资源维护任务日益繁重, 而微信深受读者的关注, 成为通报馆情的重要渠道。【方法】利用微信公众平台提供的接口, 连接图书馆的各类业务系统与平台, 结合模拟HTTP请求、读者身份鉴权、定时发送消息等技术和方法, 将各类馆情发送给读者和管理员。【结果】实现了读者点击菜单返回馆情消息、点击消息链接返回数据统计与分析详情页面、回复查询命令字检测网络资源的可用性状态等功能。【结论】馆情通报服务能够方便读者实时地了解馆情, 提升图书馆管理与服务绩效与质量。

关键词: 图书馆微信公众号; 微信公众平台; 公众号开发; 馆情通报
中图分类号:G250.7
Situation of Library Report Service by WeChat
Li Bangqun
Huizhou University Library, Huizhou 516007, China
Abstract

[Objective] To report the situation of library for readers and librarian by WeChat in real time.[Context] It is difficult for readers to understand the situation of library before entering library, the resources maintenance tasks of librarian is onerous increasingly. WeChat is deeply given much attention by readers, and becomes the important channels for situation of library report.[Methods] Using WeChat platform interfaces and technology of simulating HTTP request, identity authentication of readers and regularly sending messages, and connect all kinds of service system and platform of library, then send it to readers and administrator.[Results] WeChat public account developed in this paper provides the situation of library, the detail pages of data statistics and the usability status of network resource for readers.[Conclusions] Situation of library report service by WeChat is convenient to users, increases efficiency and quality of library manage and service.

Keyword: WeChat public account for library; WeChat platform; Public account development; Situation of library report
1 引言

目前, 微信的全球用户数已近8亿。企业、商家、媒体、政府及事业单位、其他组织等各类主体纷纷开发、建设公众号, 积极探索微信公众平台的应用与服务模式, 满足用户“轻应用” 、“轻内容” 及“微服务” 的需求。第三方调查结果显示: 80%以上的读者认为微信馆情通报服务“有用” 或“非常有用” [1]。惠州学院图书馆进行了微信馆情通报服务的相关实践, 取得了一定的成效, 业内同行亦对其技术思路及实现方案颇感兴趣, 已有多人次联系、咨询惠州学院图书馆。鉴于此, 本文采用调查分析、探索实验、个案研究等方法, 详细分析和研究微信馆情通报服务的设计思想、实现细节及应用效果, 以总结开发经验, 供同行交流参考。

2 需求及技术思路
2.1 相关研究

微信馆情通报是指以手机为终端、以微信为媒体, 准确、全面、系统、动态地向读者实时通报图书馆的服务现状、业务情况、资源状态等数据及信息。近年来, 国内外实时通报服务具有两个显著特征: 一是多用于非常需要即时了解内部动态信息与数据的行业, 如电网分析[2]、车站现车[3]、海洋战场[4]等; 二是通报的终端一般安装于特定地理位置的电子显示屏上, 如华东交通大学图书馆[5]使用入口处所建的大显示屏实时反映各阅览室、借还书处的在馆读者人数、尚能容纳的读者人数等信息。除了新书通报及通知公告等服务, 图书馆领域的相关研究多偏重于馆藏资源监控[6, 7, 8]方面, 服务对象多为馆员而非普通读者。

2.2 应用现状

美国爱丁堡罗大学(Edinboro University) 图书馆利用OPAC实时通报最新的学术资源[9], 是馆情通报服务的有益尝试。2014年6月15日, 以“图书馆” 为关键词查找微信公众号, 结果为132家。笔者逐一关注这132家公众号并进入会话, 以调查微信馆情通报服务的应用现状。结果未发现任何一家专门设置了“馆情通报” 类似菜单, 多以“开放时间” 、“服务指南” 、“动态公告” 等原PC时代的传统栏目替代, 存在弊端如下。

(1) 不够系统全面: 仅能通报开放时间、服务项目或资源简介等部分信息, 读者需要在各个分散的应用中查看、收集各类馆情;

(2) 不够实时深入: 仅能静态地反映基本的馆情, 未能深入挖掘业务数据库并动态呈现。

总之, 读者尚需进一步分析思考、归纳总结, 才能获知部分详细馆情, 十分不便。

2.3 实际工作中的应用需求

手机早已融入人们的日常生活, 成为主要的上网终端, 而微信更是用户人数多、影响大。为便于读者快捷、全面、准确地了解馆情, 图书馆有必要以手机为终端、以微信为媒体对内部情况进行全方位、权威、实时的信息披露。

(1) 读者需求。在入馆之前, 读者很难便捷地了解真实馆情并准确判断, 以合理规划、科学安排到馆学习时间。对于入馆人次、服务状况、业务情况等情形, 读者往往只能通过口口相传、电话咨询、通知公告等途径了解, 获取的是片面的或不准确的信息, 导致不能高效、均衡地利用图书馆的各项资源与服务。例如, 读者不了解最近的入馆人次及流通部门的值班人员安排情况, 未能避开入馆高峰时段, 结果增加了在借还图书时排队等候的机率, 出现图书馆人满为患的现象。

(2) 馆员需求。馆员可以根据馆情变化及时调整工作, 灵活地调配业务与资源, 合理地安排工作人员, 为读者提供更好的服务资源、服务环境与服务体验。

(3) 管理员需求。在实际工作中, 图书馆的资源与服务日益增加、规模逐渐庞大, 维护任务与日俱增, 故障率随之上升。管理员每天不得不花费大量的时间与精力远程登录与测试, 以验证其可用性, 甚至需要前往机房逐一检查。通过手机屏幕、微信界面轻松便捷地获取相关资源与服务的可用性状态信息, 可以满足管理员全天候监控资源与服务的工作需求, 极大地降低了管理与维护成本。

2.4 技术思路及方法

调用微信接口接收读者发送的消息, 根据消息的数据特征判断读者行为, 通报开放状态、业务情况、资源可用性等馆情。连接各类业务与馆藏数据库, 查询馆情数据, 创建浏览器对象模拟HTTP请求访问网络资源, 调用微信接口发送客服消息, 封装特定结构的XML或JSON数据包向读者推送实时馆情, 如图1所示:

图1 微信馆情通报技术思路

图1为读者版的馆情通报流程图, 省略了调用微信接口向读者发送消息的环节。管理员版的馆情通报原理为: 模拟浏览器HTTP请求逐一访问图书馆的各类业务服务器与网络资源, 获取可用性状况信息; 调用微信公众平台的发送客服消息接口, 定时向管理员微信号主动发送可用性状况报告。

3 具体实现方案
3.1 设计方案

(1) 预期设计目标

①读者能通过通报服务获取实时馆情, 更有针对性地到馆学习; 尽量减少图书馆各类资源与服务利用不均衡的现状, 缓解读者在流通服务台排长队借还书、期刊阅览室人满为患的状况。

②管理员能通过微信自动接收图书馆各类资源与服务可用性状况的消息, 包括服务异常的报警消息。

(2) 采用的方案

根据微信公共平台订阅号和服务号的区别(① 服务号可直接拥有菜单, 订阅号认证后才可申请; 服务号每月可群发4条信息, 订阅号每天可群发1条; 服务号群发消息有提醒, 订阅号群发仅放入订阅号文件夹; 服务号可申请高级接口权限, 订阅号不能。)、区域读者群体的需求与特定图书馆实际情况, 系统采用接口更丰富的服务号的实现方案, 并选择微信公众平台开发模式。图书馆服务器端的程序则采用ASP+HTA设计方案。

3.2 建设实现过程

(1) 前期准备工作。熟悉馆藏与业务数据库表结构: 包括门禁、馆藏、资源等数据库的表结构、数据结构与特征。配置回调服务器: 配置网络与服务器、设置Web动态语言的开发与运行环境等。申请接口权限: 注册微信公众号、选择开发模式, 申请微信认证、获取高级接口权限。

(2) 数据结构。为了将读者的微信openid与借书证号关联, 需要设计关系表“weixin_User” , 数据结构如表1所示:

表1 读者微信号与账户数据表weixin_User

(3) 实现步骤。依据读者请求服务的流程和程序执行的先后顺序, 微信馆情通报服务应用的实现大致可分如下8步:

①分析信息类型。先创建DOMDocument对象, 载入并解析微信推送的XML文档, 获取消息发送者openid的值“FromUserName” 、消息类型“MsgType” 、事件Key值“EventKey” 及消息内容“Content” , 并将其值保存为同名变量; 再根据变量“MsgType” 分析读者行为是点击菜单或输入字符: 若值为字符“event” , 且变量“EventKey” 为菜单“馆情” 的Key值, 则执行步骤②; 否则判断变量“Content” 是否为字符“?” , 是则执行步骤⑦, 否则执行公众号的其他应用。

②查询是否为假期。连接图书馆书目数据库假期设置表, 并用SQL查询假期字段, 判断今日是否处于节假日, 否则执行步骤③; 是则提示假期设置与还书日期的顺延天数, 如图2(a)所示。

图2 微信馆情通报实现步骤

③判断是否为开放时段。比较现在时间与图书馆的开放时段“08:00-22:00” , 如处于开放时段则执行步骤④; 否则提示“目前闭馆” 与“现在时间” , 并提示距离开馆倒计时等信息, 如图2(b)所示。

④获取馆情信息。连接门禁、馆藏、通知等业务数据库表, 查询并获取今日的入馆人数、流通借还量、编目数据、期刊登到与订购数据、电子资源与纸本图书统计等信息。

⑤被动响应点击菜单事件。如读者点击菜单“发现” → “馆情” , 则通过封装特定结果的XML文档供微信服务器读取, 向读者推送步骤④获取的馆情通报图文消息。

⑥响应点击消息行为。读者点击步骤⑤中的消息, 将先进行网页授权, 如图2(c)所示, 以获取读者的微信昵称、openid等基本信息, 再根据openid查询表weixin_ User及读者账户表, 获取读者的真实姓名、借还记录等账户信息, 最后返回个性化的馆情数据统计与分析详情网页, 包括今日门禁分时实时统计图、最新登到期刊、今年新增资源、最近出借图书等馆情详情。其中, 今日门禁分时实时统计图的生成步骤如下: 采用冒泡法通过两次循环找出今日最大入馆人次数(zuidashu)与最高峰时段(gaofeng); 定义统计图的高度为height; 使用height除以zuidashu获得数值h; 将h分别与各统计时段的入馆人次数h1, h2…h15相乘, 获得直条图的每个直方长条图高的数值, 进行颜色填充, 最后将这些直方长条组成开放时段内的门禁分时统计图。

⑦模拟访问网络资源。使用模拟浏览器HTTP请求(GET)的方法先后依次访问数字图书馆本地镜像站、随书附件下载网站、各类电子资源网站, 获取图书馆各类服务与资源的可用性状态数据并赋值给相应的变量。

⑧主动发送客服消息。微信服务器在5秒内收不到响应会断掉连接而丢失XML数据包, 将导致消息发送失败。如等待步骤⑦访问完所有的资源, 耗时极可能超过5秒时限。因此, 只能使用模拟浏览器HTTP请求(POST)的方法调用微信客服接口, 将资源可用性状态变量值依次实时地发送给读者。步骤⑧与步骤⑦是交叉执行的: 步骤⑦每访问一个网络资源站点, 即执行步骤⑧; 再执行步骤⑦, 访问下一个站点; 直到循环检测完所有的资源。

其中步骤②至步骤⑥为被动响应读者点击自定义菜单“发现” → “馆情” 的事件, 以及点击推送的馆情图文消息, 返回馆情数据统计与分析详情网页; 步骤⑦至步骤⑧为响应读者回复命令“?” 而推送的客服消息。

3.3 关键方法与技术

(1) 模拟HTTP请求

在获取access_token(调用微信接口的全局唯一票据)、主动发送客服消息、模拟访问网络资源等场景中, 需用模拟浏览器HTTP的GET或POST请求的方法, 向微信、资源、图书馆等服务器发送或请求XML、JSON或HTML数据包, 以调用微信接口、向读者推送消息或获取资源的可用性状态信息。如用XMLHTTP协议检测电子资源“中国知网” 的服务器通讯并获取可用性状态信息, 关键代码如下:

Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
’ 创建模拟浏览器对象

xmlhttp.setTimeouts 1000, 1000, 1000, 3000
’ 设置解析、连接、发送、接受数据时间

xmlhttp.Open "GET", "http://www.cnki.net", False
’ 建立通讯连接

xmlhttp.Send ’ 发送通讯请求

status=xmlhttp.Status ’ 获取远程服务器的HTTP状态码

变量“status” 即“中国知网” 的HTTP Header状态码(① HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的三位数字代码, 由 RFC 2616 规范定义, 并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。), 体现网站的通信状态, 通过解析返回的状态码可以评估资源的可访问状况。在HTTP规范中, 状态码分为成功、重定向、错误等5大类45小类[10], 其中最常见的有三种, 如表2所示:

表2 HTTP状态码(节选)

使用模拟HTTP请求的方法不仅可以检测网络资源的DNS解析、页面的HTTP及服务器的运行等状态, 还可以获取access_token, 并发送服务与资源的可用性状态消息给读者; 或定时、循环、依次执行如上关键代码, 即可检测图书馆的所有资源, 并在发生故障时立即发送告警信息到管理员微信号。

(2) 读者身份鉴权

读者点击馆情通报消息后, 将返回馆情数据统计与分析详情网页。在返回网页之前, 先进行读者身份鉴权: 调用微信网页授权接口, 获取读者的昵称、openid、性别等基本信息, 并查询表weixin_ User以鉴别身份, 判断读者是否已绑定借书证号与微信号, 最后返回个性化的移动网页。假定配置的授权回调域名为“URL” , 根据微信公众平台开发者文档[11]规定, 网页授权的步骤如下:

①判断URL的参数code是否为空, 否则执行步骤②, 是则引导读者访问微信授权页面, 如图2(c)所示。读者点击链接“允许” 执行步骤②, 点击链接“取消” 则返回非个性化的馆情通报网页。

②读者同意授权后, 用Request(“code” )函数获取参数code的值, 并利用模拟HTTP请求的方法调用微信网页授权接口, 通过code换取access_token及openid。

③利用模拟HTTP请求的方法调用微信userinfo接口, 使用Split()、Mid()、InStr()等函数分析微信返回的JSON数据包, 获取读者的微信昵称、性别、头像等基本信息。

网页身份鉴权技术可以避免要求已经绑定借书证号与微信号的读者再次输入借书证号与密码进行二次登录, 减少了读者与系统的交互频次, 将手机Web图书馆与微信无缝集成, 方便了关注者, 增强了读者的使用黏性。

(3) 定时发送消息

微信并未提供定时发送消息给用户的接口。在获取资源的可用性状态信息后, 可用网页自动刷新浏览器的方法来定时发送消息到管理员微信号, 方法如下:

①编写动态网页, 调用微信发送客服消息的接口发送消息到管理员微信号, 并使用HTML的刷新标记“Meta Refresh” 自动刷新动态网页。

②创建HTA(HTML Application, HTML应用程序)文件“程序.Hta” , 使用内联框架“Iframe” , 并包含动态网页网址。

在服务器上打开“程序.Hta” 即可自动刷新动态网页。使用这种折衷的方法, 可以快速实现主动、定时发送各类服务与资源的可用性状态消息到管理员微信号。

3.4 建设中出现的主要问题及解决方法

性能问题是建设之初出现的主要问题: 当图书馆连接外网速度变慢、业务数据库并发用户过多或资源服务器反应太慢时, 性能将明显降低, 甚至导致超过通讯时限而被微信服务器断掉连接的情况, 造成读者无法成功接收消息或需等待较长时间。采用以下解决方法可以显著优化性能、提升读者的使用体验:

(1) 提升查询速度。提升馆藏与业务数据库的连接速度, 优化Web服务器配置、查询算法及SQL语句, 多用簇聚索引。

(2) 节省系统资源。将不需要实时更新的如下数据存储于服务器内存以供随时调用: 昨天门禁统计、今日已过时段入馆人次、今年或本月的编目、期刊订购、新增资源、纸本图书统计、假期设置等。这些数据每天仅查询一次即可, 无须实时更新。避免耗时过长的频繁查询, 可以极大地节省服务器资源。

(3) 减少交互次数。公众号每次向读者发送客服消息或进行身份鉴权时, 均须向微信服务器发送动态请求以获取access_token。可以充分利用access_token的有效期为7 200秒的规定, 在成功获取后将其赋值给应用级的Application变量, 以在失效期前供全体读者重复使用, 等待失效后再重新获取、保存、调用。读者基本信息则可保存在用户级的Session变量中, 以在网页Session有效期内鉴别特定读者的身份, 避免每次刷新均需调用微信接口而重复请求读者授权。

3.5 实现结果

(1) 实现功能

通过设计微信馆情通报的自定义菜单与移动网页, 响应读者点击菜单或消息的事件, 根据回复的命令字检测图书馆各种服务与资源的可用性状态, 基本达到了预期的设计目标, 实现了馆情通报服务, 如图3所示:

图3 微信馆情通报界面

读者点击菜单“发现” → “馆情” , 返回馆情通报消息, 如图3(a)所示; 点击消息链接跳转至馆情数据统计与分析的详情页面, 如图3(b)所示; 点击详情页面中的链接, 访问手机Web图书馆的书目详情页面; 回复检测命令字符“?” , 向读者推送各类服务与资源的可用性状态消息, 如图3(c)所示。

(2) 与其他系统的比较

本文设计的馆情通报服务, 与其他类似服务相比, 主要具备以下特征:

①实时性。门禁、业务或资源等馆情, 均从数据库表中动态读取或在线即时检测;

②准确性。程序自动获取各类馆情, 并非人工编辑加工或干预的结果, 信息准确;

③全面性。图书馆所有应对外公开的数据与信息均已分门别类地全面展示给读者;

④便携性。以手机为终端、以微信为媒体, 操作简单, 极具交互性、便捷性、移动性。

4 应用效果评估
4.1 开发环境

(1) 服务端环境: IBM eServer X365 8862+ Windows Server 2003 Enterprise Edition+ASE 12.5+IIS 6.0+ASP 3.0+微信公众平台Beta。

(2) 客户端环境: iPhone 5S+IOS 7.1.1+Safari+微信 5.3+图书馆局域网无线宽带。

4.2 应用效果及评估

经过筹备、规划、注册与设计, 惠州学院图书馆于2014年3月15日推出了微信公众号“SULCMIS” , 并设计了“找书” 、“服务” 及“发现” 等自定义菜单及应用[12], 其中“馆情通报” 服务广受欢迎。馆情通报服务形式新颖, 尤其能吸引大量的年轻读者。自上线以来, 运行稳定, 效果良好, 反响不错, 统计数据如表3所示:

表3 2014年3月-2014年6月微信馆情通报服务应用效果

在正常情况下, 读者点击馆情通报的自定义菜单及网页, 或者输入检测命令字符, 系统的响应时间平均在1秒左右。目前, 馆情通报已成为图书馆微信公众号不可或缺的一项重要服务, 许多读者已习惯于在来馆之前先花几秒钟查询一下馆情, 看看是否人满为患, 或关注新到的图书、期刊或资源。在流通部借还书处, 读者排长队的现象明显减少, 就连图书馆的服务热线电话也明显减少。

5 结语

本文对微信馆情通报服务的需求及技术思路、具体的实现方案进行了详尽研究。服务的成功应用, 使得ILS、业务数据库、网络资源和微信成功地对接与集成, 将文献与信息服务无缝地延伸到微信与手机图书馆, 从理论上改变了传统的服务模式, 验证了图书馆利用微信开展馆情通报服务的可行性, 从实践上进行了有益的尝试, 提供了图书馆依托第三方开放接口开展实时服务的应用案例, 并为后续建设积累了宝贵的设计经验。微信公众平台使图书馆能够放松UI的设计布局, 减少技术开发投入, 更专注于功能的实现与完善, 从而带给读者全新的体验。提升推送消息的速度, 扩大馆情通报的范畴与深度, 将是下一步研究的方向。

参考文献
[1] 微信公众平台[EB/OL]. [2014-06-15]. http: //mp. weixin. qq. com/s?__biz=MjM5NDE4Nzc2OQ==&mid=200476442&idx=1&sn=b06d26aa080d7c24fe485d10d760b562.
( WeChat Public Platform[EB/OL]. [2014-06-15]. http://mp.weixin.qq.com/s?__biz=MjM5NDE4Nzc2OQ==&mid=200476442&idx=1&sn=b06d26aa080d7c24fe485d10d760b562 [本文引用:1]
[2] See J D, Latham S, Shirek G, et al. Report on Real-Time Grid Analysis Pilots[J]. IEEE Transactions on Industry Applications, 2012, 48(4): 1170-1176. [本文引用:1] [JCR: 1.672]
[3] 梅良琨. 车站现车信息实时显示的设计与实现[J]. 上海铁道科技, 2009(2): 65-66.
(Mei Liangkun. Design and Implementation of the Current Car Information Real-time Display[J]. Shanghai Railway Science & Technology, 2009(2): 65-66. ) [本文引用:1]
[4] 戴竞, 翟永翠, 姜丰落, . 虚拟海洋战场信息动态实时显示技术研究[J]. 现代电子技术, 2013, 36(12): 38-41.
(Dai Jing, Zhai Yongcui, Jiang Fengluo, et al. Dynamic Real-time Display Technology for Virtual Ocean Battlefield Information[J]. Modern Electronics Technique, 2013, 36(12): 38-41. ) [本文引用:1] [CJCR: 0.5199]
[5] 华东交通大学图书馆 [EB/OL]. [2014-06-15]. http: //lib. ecjtu. jx. cn.
( East China Jiaotong University Library [EB/OL]. [2014-06-15]. http://lib.ecjtu.jx.cn [本文引用:1]
[6] 彭晓庆. 高校图书馆电子资源服务监控系统设计与实现[J]. 现代图书情报技术, 2011(4): 82-88.
(Peng Xiaoqing. Design and Realization of the Library Electronic Resources Service Monitoring System[J]. New Technology of Library and Information Service, 2011(4): 82-88. ) [本文引用:1] [CJCR: 1.073]
[7] 马越. 数字馆藏服务绩效监控系统的分析与设计[J]. 大学图书馆学报, 2010, 28(6): 102-106, 115.
(Ma Yue. On the Analysis and Design of Digital Collections Performance Monitoring System [J]. Journal of Academic Libraries, 2010, 28(6): 102-106, 115. ) [本文引用:1] [CJCR: 3.739]
[8] 吴振新, 付鸿鹄, 马海收, . 长期保存系统监控服务内容框架研究[J]. 图书情报工作, 2014, 58(3): 51-57, 94.
(Wu Zhenxin, Fu Honghu, Ma Haishou, et al. Study on Monitoring Service Frameworks of Digital Preservation Systems [J]. Library and Information Service, 2014, 58(3): 51-57, 94. ) [本文引用:1] [CJCR: 1.193]
[9] McMullen A, Gray B. From Static to Dynamic: Using the OPAC to Generate Real-time Lists of Departmental Acquisitions for Library Current Awareness Service[J]. Library Hi Tech, 2012, 30(4): 673-682. [本文引用:1]
[10] HTTP/1. 1: Status Code Definitions [EB/OL]. [2014-06-15]. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. [本文引用:1]
[11] 微信. 公众平台开发者文档 [EB/OL]. [2014-06-15]. http: //mp. weixin. qq. com/wiki.
( WeChat. WeChat PlatForm Doc [EB/OL]. [2014-06-15]. http://mp.weixin.qq.com/wiki [本文引用:1]
[12] 惠州学院图书馆微信公众号 [EB/OL]. [2014-06-15]. http: //m. hzu. edu. cn/weixin. html.
( WeChat Public Account of Huizhou University Library [EB/OL]. [2014-06-15]. http://m.hzu.edu.cn/weixin.html [本文引用:1]