目的 开发图书馆微信平台新功能, 增加读者与图书馆的互动, 提高图书馆信息化服务水平。【应用背景】随着微信公众号的普及, 多家图书馆推出相关服务, 但多局限于传统的线下服务。方法 基于Apache+ PHP+MySQL架构, 结合微信平台新开放的接口, 通过微信与读者进行线上互动。结果 实现“趣味问答”、“闭馆音乐在线欣赏”、“照片墙”三个互动功能。结论 微信公众号可以不局限已有的功能, 增加更多互动服务。
[Objective] Develop new functions on WeChat platform to enhance interactivity between users and libraries. [Context] More and more libraries offer services with the popularity of WeChat platform. [Methods] By using Apache+PHP+MySQL architecture and new WeChat Platform interfaces, more interactive functions are developed. [Results] Three interactive functions as “Happy Quiz”, “Music Appreciation” and “Picture Wall” are realized. [Conclusions] Using WeChat Platform, libraries should offer readers more new interactive services.
随着网络发展和新媒体的崛起, 图书馆的服务日趋多元化、新颖化。国内已经有多所高校图书馆和公共图书馆通过微信公众平台, 向广大的读者用户提供服务。
上海图书馆通过微信服务平台实现了书目服务、咨询服务、消息推送、信息推广等新的借阅体验[1]。孙翌等[2]从应用实践的角度入手, 以上海交通大学图书馆应用为例, 介绍其微信公众号的功能, 如绑定学校统一认证、提供自主应答机器人等。黎邦群[3]针对当前手机输入文字不便、拼写容易出错导致用户找书体验不佳的现状, 阐述了基于微信公众平台建设图书馆公众号语音找书应用的技术思路。姚舜[4]提出了微信借书系统, 读者不用携带读者证, 即可利用该系统从图书馆借书。林泽斐[5]提出基于微信公众平台的馆内二维码定位系统运作流程。
笔者认为, 图书馆利用微信的创新服务, 不应局限于已有的功能, 随着公众号的接口开放, 图书馆利用微信能有更多作为, 提供更多互动服务, 如“ 趣味问答” 、“ 闭馆音乐在线欣赏” 、“ 照片墙” 。本文将从这三个方面详细介绍功能实现的方案和关键技术。
图书馆可以利用已有的知识资源开展网络知识竞赛, 如近年来同济大学图书馆开展的“ 搜索吧, 达人” 网络知识竞赛、“ 走近意大利网络知识竞赛” , 这是一种新颖有效的读者服务方式。然而网络竞赛受到设备限制, 一般通过电脑端来实现。利用微信公众号开展趣味问答, 通过移动设备联系图书馆和读者, 使读者不受计算机和网络的限制随时随地参与活动。传统的做法是, 由图书馆员在微信公众号后台人工批阅答案, 人工记录回复答案的时间。为了提高工作效率, 减少人工处理数据带来的误差, 通过微信公众号平台接口, 设置“ 趣味问答” 菜单, 实现新媒体时代的图书馆竞赛系统。这样能够为读者带来便利, 也能吸引更多的读者参与活动。
利用微信公众号建立的问答系统主要分为两大板块, 分别是后台的题库部分和前端的读者答题部分。整个系统的流程如图1所示:
建立微信趣味问答系统, 需要首先建立一个题库。常见的题目类型有单选题、多选题和问答题, 鉴于读者使用手机时的便捷性以及系统运行、阅卷的人力开销, 微信趣味问答系统以选择题题型为好, 尤以单选题为佳。后台题库的数据表字段如表1所示。题库由系统管理员操作, 涉及新建题目、对题目增删改的管理操作, 实现方法较为常见, 此处不再详述。
趣味问答系统的读者答题界面由微信公众号接口实现, 其一级菜单设置为“ 趣味问答” , 二级菜单设置为“ 开始答题” 、“ 历史成绩” 和“ 错题解答” 。
点击二级菜单“ 开始答题” , 开启答题功能, 系统从题库中随机选取任意道题目, 形成趣味测试卷, 供读者互动答题。回答正确则记录答题耗时、答题情况等信息; 回答错误则记录错误信息并记录答题情况等信息; 无论对错与否都给出相应提示。“ 历史成绩” 和“ 错题解答” 是基于上述信息的。因此, 答案表非常重要, 字段设计如表2所示:
在问答系统整个流程中, 微信的通信方式都是“ text” , 即文本格式。
(1) 答题环节的设定
答题是一个循环的过程, 其流程如图2 所示。系统从缓存中读取相关数据, 根据答题的顺序判断是否是最后一题。如果是最后一题, 则清空缓存, 提示相应信息, 退出系统; 如果不是最后一题, 则继续抽取下一题, 同时答题序号自增。
答题规则根据图书馆举办的活动规则定义。可以全部答完题再判断每题得分, 最后提示读者本次问答竞赛获得的分数; 也可以模拟闯关的方式, 每做完一题就判断得分, 回答正确则继续答题, 回答错误则退出本次问答竞赛。
(2) 随机抽题
从题库中随机抽取任意N道不重复题目是问答系统的关键之一。数据库本身有获取随机记录的函数, 如数据库MySQL中的RAND函数, 但效率不高, 尤其是题库题量大时, 系统运行速度会明显下降。因此可以结合SQL语句解决这一问题。以PHP+MySQL为例, 代码如下, 其中$question_nums是变量, 代表上文所说的随机抽取的N道题目。
$sql="select * from questions where question_id > =(select
floor(rand()*
((select max(question_id) from questions)-
(select min(question_id) from questions)) +
(select min(question_id) from questions)))
order by question_id limit ".$question_nums);
$question_answer_tips="";
如图3所示, 在菜单“ 趣味问答” 一栏, 下分三个二级子菜单, 分别对应不同功能。
该功能在测试阶段邀请了校内外20位读者同时参与测评, 系统可以稳定运行, 同时向多位读者的微信客户端提供服务。由于后台存取读者微信号的open_id, 所以参与“ 趣味问答” 时无须绑定汇文账号。经过测试, 系统题量在5-10题为佳。
闭馆音乐是图书馆的一道文化风景, 不仅仅是提醒读者图书馆即将闭馆的“ 暗示” , 更是一种让读者放松、转换心情的方式。
读者对闭馆音乐的关注度很高, 经常向图书馆咨询闭馆音乐的详细信息, 积极参与闭馆音乐的挑选活动。基于此, 图书馆可以利用微信做音乐的自定义菜单, 提供图书馆的闭馆音乐播放, 互动欣赏。
将闭馆音乐菜单功能设计如下: 微信一级菜单“ 闭馆音乐” (也可以命名为“ 闻音” )下分成三个子菜单— — “ 本期美乐” , “ 往期欣赏” 和“ 音乐推荐” , 分别用来向读者提供本期闭馆音乐, 以往的闭馆音乐, 以及互动功能(例如闭馆音乐推荐或者闭馆音乐投票)。
微信音乐欣赏的实现流程如图4所示:
(1) 音乐播放器的建立
利用HTML5+JS的方式建立一个音乐播放器, 定义网页播放器的类型和编码, 控制屏幕大小。
播放器控制的代码, 可以用JS实现, 集成在一个JS文件内。主要实现有关播放器的一些绑定操作, 比如播放、暂停, 检测歌曲载入和播放时间, 检测歌曲是否播放完毕等。
(2) 调用音乐
实现闭馆音乐在线欣赏的难点是, 通过微信通信接口调用后台的音乐, 实现前台的播放器操作。播放器是静态页面, 后台通过location.search获取前端页面的URL传递的参数、歌曲ID和微信用户ID。
接下来, 需要从服务器获取歌曲的详细信息, 更新播放器。
function get_song(song_id, open_id)
{
$.ajax({ //异步获取服务器数据
url: "…?t=jsonp& song_id="+song_id+-1003-3513-31-11-104"& open_id="+open_id,
//即: 播放器页面地址?歌曲ID=0& & 微信用户ID=xxx
dataType: 'jsonp', //接收数据的格式
jsonp: 'callback', //校验的变量名
timeout: 3000, //保持连接最大时间, 超过则断开
success: function(json) { //通信成功后执行事件
…
}
其中, song_id表示歌曲ID, 播放器选择本期或者往期闭馆音乐, 需要将歌曲ID传递到服务器上, open_id是微信用户ID, 用于标记读者对音乐的互动看法。获取歌曲信息的方式是, 采用Ajax异步获取, 这样可以在不刷新当前页面的情况下从服务器上获取数据。
音乐在线欣赏的测试环境设计界面如图5所示。界面设计较为简单, 在实际应用中可以通过修改前端的HTML文件, 美化读者界面, 如添加音乐的作者信息、封面信息等。
音乐欣赏的功能, 本质是在微信客户端提供一个音乐界面的链接, 读者与系统交互基于读者的微信ID实现。通过测试发现, 如果歌曲以第三方链接方式展现, 效果不好, 将音乐曲目放在本地为佳。
测试阶段邀请20位读者参与, 测试周期为5日。测试结果表明, 该功能符合读者兴趣, 能够吸引读者多次参与使用。
微信墙是读者将希望互动的内容发给公众号, 再由馆员筛选后显示到“ 墙” 。发到微信墙的内容可以是文字、图片, 甚至是语音。通过这种方式, 让读者感觉像在聊天一般, 将想要表达或是展现的内容发给公众号, 和其他读者一起分享。
图书馆可以利用微信这一新功能开展新服务, 用照片墙的形式联系读者和图书馆。利用照片墙, 读者可以向公众号发送自己和图书馆的照片, 与其他读者一起分享自己与图书馆之间的故事。这类似于微博的话题, 但操作简单, 不受字数限制。
微信照片墙的运行流程如图6所示。读者上传照片到图书馆公众号, 后端对照片进行压缩处理和审核工作。图片上传后, 读者可以在用户界面选择照片墙的实现方式, 选择自己的照片或者感兴趣的其他照片, 点击放大后显示详细图片信息。
在这一过程中, 关键点是微信的图片消息通信方式和上传图片的处理。目前微信公众号已经开放图片消息接口。当读者向图书馆公众号发消息时, 微信服务器将POST消息的XML数据包到相应服务器上, 上传的数据包内容包括: 图书馆公众号、读者微信ID、消息创建时间(整型)、读者上传图片的链接、图片媒体ID等。
在照片处理过程中, 需要保存图片、等比例缩小图片、为新图片命名等。等比例缩小图片的算法如下, 其中, $distWidth为图片目标宽度, $distHeight为图片目标高度, $percent为图片缩放比例。$new_width为图片实际宽度, $new_height为图片实际高度。
if($width/$height > = $distWidth/$distHeight)
{ if($width > $distWidth)
{ $percent = $distWidth/$width;
}
}
else
{ if($height > $distHeight)
{ $percent = $distHeight/$height;
}
}
$new_width = $width * $percent;
$new_height = $height * $percent;
“ 照片墙” 功能的菜单如图7所示。子菜单“ 上传照片” 是“ CLICK” 类型(type), 点击后系统提示读者上传照片。读者上传互动照片后, 后台自动回复提示信息。
照片墙功能在测试阶段邀请20位读者参与, 结果无延迟问题。在测试中发现, 用微信客户端欣赏照片, 显示效果与手机屏幕大小有关。因此除了提供微信客户端欣赏, 还可以提供PC端欣赏方式。
照片墙这一功能还能应用在摄影比赛等相关活动, 后期可以增加微信打分等功能。
本文利用Apache+PHP+MySQL架构, 结合微信公众平台开放的新接口, 开发了三个新的互动功能, 在测试运营阶段获得各方认可; 并根据测评反馈建议, 对每一个功能提出进一步完善的思路。三个互动功能将配合图书馆开展的各项活动, 陆续上线。
在新媒体时代, 图书馆利用新兴电子媒体提供服务是一种新“ 图书馆营销” 方式。图书馆微信公众号, 不仅仅是“ 营销” 渠道, 更要提供有价值、有意义的服务。除了传统的汇文功能绑定, 还可以提供各种新颖的微信服务, 用创新的态度开发更多功能。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|