图书馆微信公众平台服务号的设计与开发
陈刚,刘坤,刘毅,徐觉瑛,张联民
(苏州健雄职业技术学院,太仓 215411)
摘要:文章从探讨微信公众平台开发的两种模式和图书馆的契合度出发,简述开发模式的基本原理。以微信菜单的设置和创建为引子,以丰富图书馆的服务形式、增加图书馆的服务内容、拉近图书馆和读者之间的距离为目标,详述微信消息的接收和发送、图文消息的后台管理与动态更新以及图书查询、续借和荐购等功能模块的实现方法。
关键词:图书馆服务;微信;微信公众平台;服务号;开发模式
中图分类号:G250.72
基金项目:苏州健雄职业技术学院青年科研
作者简介:陈刚,男,馆员。
收稿日期:2014-10-31
Design and exploitation of the wechat public platform service in libraries
CHEN Gang, LIU Kun, LIU Yi, XU Jue-ying , ZHANG Lian-min
(Chien-shiung Institute of Technology, Taicang215411, China)
Abstract:With the rapid development of wechat, the quick response of libraries and the wide utilization of wechat public platforms, this essay expounds the basic principle of the development of the wechat public platform, probes into two models of the exploitation of the platform. The authors hold that libraries should take setting up and creating wechat menu as the starting point, increase the service forms, enrich the service contents, shorten the distance between the libraries and broad users so as to tally with their positions. Both of sending and receiving of wechat news, background management, upgrading of graphics, and the realization of functioning modules such as book-hinting, book-renewing and book recommending are also discussed in great detail in the article.
Key words: library service; wechat; wechat public platform; exploitation mode
1引言
微信(wechat)是腾讯公司于2011年1月21日推出的一款提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费(需消耗少量网络流量)语音短信、视频、图片和文字。截至2014年6月30日,微信和WeChat的合并月活跃账户数达到4.38亿,比上一季度增长11%,比去年同期增长57%[1]。
微信公众平台于2012年08月23日正式上线,是腾讯公司在微信的基础上新增的功能模块,实现微信与第三方平台的对接,提供内容更加丰富、功能更加全面的平台服务。从类型上它可以分为服务号和订阅号两种类型[2]。服务号和订阅号的主要区别在群发消息的限制和消息提醒上,以目前微信5.4版本为例,服务号每月可以群发4条消息,订阅号每天可以群发1条消息。图书馆作为服务型部门,显然对于服务功能的需求优于资讯功能,并且发送消息直接显示在微信首页,便于查看。一般情况下,图书馆可以优先选择服务号作为图书馆的首个公众号,如果有必要,可以申请第二个公众号使用订阅号做为辅助。
2国内研究现状
国内图书馆界对微信公众平台的研究最早始于2013年,其中较有影响的代表为孔云等,分析了图书馆移动信息服务开展现状和微信及微信公众平台的特点,构建基于微信公众账号的图书馆信息服务[3];武龙龙、杨小菊通过分析目前国内高校移动图书馆服务的不足,结合公众平台的特点及优势,对高校移动图书馆利用公众平台开展服务的可行性进行了分析[4];张蓓等详细讲述了开发模式下图书馆微信公众平台的设计思路、具体实现以及关注点等[5]。实践方面,不少图书馆也已经开通了自己的公众账号,高校馆如清华大学图书馆、北京大学图书馆等,公共馆如上海图书馆、南京图书馆等都开通了自己的公众帐号。截至2014年9月,通过搜狗搜索的微信公众号搜索功能,以“图书馆”为关键词,查询结果有约1234条,去除一些个人和企业开通的关于图书馆的公众帐号,粗略估计全国开通微信公众号的公共馆、高校馆以及少部分中学馆和儿童馆约有上千家,可见微信公众号已经成为了图书馆界必备的移动服务窗口之一。
虽然国内图书馆界对微信公众平台的研究正进行得如火如荼,但无论是从理论研究还是实践应用来看,都存在一些问题和不足。理论研究上主要是对微信公众平台作为图书馆新型移动信息服务模式进行了探讨性的研究,而忽略了对平台开发的具体实践研究以及开发完成后的管理和维护,未免有点虎头蛇尾;从实践方面来看,虽然全国开通微信公众平台的图书馆有上千家,但是从使用效率上来看并不高,有近 1/3 的图书馆开通账号后并未投入使用,或因没有专人负责和管理而使得服务长期处于停顿状态,形同虚设[6],这种情况亦跟平台开发时缺少周全的思虑有关。本文对图书馆微信公众平台的开发和研究,既考虑读者的使用感受,力争做到功能完善、界面友好、容易操作,又考虑平台投入后如何较容易地实现管理和维护等问题。
3服务号的设计与开发
微信公众平台有编辑模式和开发模式两种,两种模式不能共存。编辑模式简单实用,具有可视化编辑界面,无需学习编程知识就可以设置消息自动回复,自定义菜单的功能,并且消息响应速度快,不需要搭建开发者服务器。开发模式除了具有编辑模式所有的功能外,还可以通过对接数据库、调用网络API实现更深、更广的功能开发。对具有庞大数据库的图书馆来说,完美对接数据库,可以增加图书馆的服务范围。通过调用网络API,实现天气、股票、快递、笑话、音乐等信息的查询,既可以丰富图书馆微信平台的服务内容,也可以增加用户的粘性。有条件的图书馆都应该选择开发模式,暂时没条件的图书馆可以通过让一些学历比较高、学习能力强或者对这方面有兴趣的馆员参考相关书籍进行自主开发或通过外包给专业公司来实现。
3.1 开发模式的基本原理
微信公众平台开发模式的基本原理是微信服务器相当于一个消息转发器,微信用户通过手机、平板等终端发送http请求给微信服务器,微信服务器将用户请求的消息组装成XML格式通过POST方式提交给开发者服务器,开发者服务器获取消息根据自己的业务逻辑处理数据并响应给微信服务器,最后微信服务器再将数据响应给用户,如图1所示。
图1 开发模式的基本原理
基于以上原理,只要获取相关的接口权限,图书馆就可以在自己的服务器上开发合适的业务处理流程。
3.2 开发模式下的功能实现
要启用微信公众平台的开发模式,首先要登陆微信公众平台进行开发者服务器网址接入,网址接入较简单,在此不再赘述。接入成功后就可以在开发者服务器(即图书馆服务器)上进行功能的具体实现。需要注意的是,微信公众号接口目前只支持80接口。
图2 菜单的设置
3.2.1 菜单的设置和创建
首先需要设置菜单,目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
菜单的设置既要符合微信的规则,也要符合以人为本的原则。要做到命名通俗、美观整齐、层次合理、内容丰富,使读者既能很容易理解每个菜单的用途,又能有整齐舒适的感觉,同时还要留有适当的扩展余地。以我院图书馆微信服务号为例,目前开发了基础服务、信息推送和服务指南3大模块12个功能(即3个一级菜单、12个二级菜单),如图2所示,一级菜单和二级菜单全部采用4个汉字,根据功能合理规划二级菜单,例如一级菜单“我的图书”下有4个二级菜单,全部跟馆藏图书相关,放在“我的图书”菜单下就比较合理。
设计好自定义菜单后,就可以进行自定义菜单的创建。需要使用HTTP请求方式POST(使用HTTPS协议)到接口地址:
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN。
access_token是微信的全局票据,在高级接口中需要频繁地调用,有效期是7200秒,官方限制每日调用限额2000次。因此,最好的选择是把获取的access_token缓存起来,这样只要缓存没过期,就可以直接调用缓存获取。POST的菜单数据要为JSON格式,具体详见官方文档。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果[7]。
3.2.2 消息的接收和回复
图书馆的服务在微信中的呈现方式是通过消息的交互实现。目前微信支持文本消息、图片消息、语音消息、视频消息、地理位置消息、链接消息6种。当用户向公众账号发送消息时,微信服务器会将这6种消息格式包装成不同的XML数据包POST到开发者服务器上。以下是图文消息$newsTpl模板:
$newsTpl=”
”;
目前常用的实现方案有基于PHP、J2EE、.NET和其他的网络编程的技术,常用的WEB服务器有apache,tomcat,nginx,iis等。微信官方提供了基于PHP的接口实现方案,熟练的程序员可以实现基于其它网络编程技术的消息接口代码[8]。健雄职业技术学院图书馆采用官方建议的基于PHP来实现接口,获取消息的关键代码是:
步骤1:接收微信服务器POST过来的数据
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
步骤2:将$postStr载入到对象里
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
步骤3:获取消息
$from Username=$postObj->From User Name;//获取发送者账号信息
$toUsername = $postObj->ToUserName;//获取开发者账号信息
$type = $postObj->MsgType;//获取消息类型
$customevent = $postObj->Event;//获取事件类型
$keyword = $postObj->Content;//获取文本消息内容
注意对象属性区分大小写,否则获取不到消息。
获取到消息后根据不同的功能模块处理后,将结果重新封装成XML格式(消息的发送方和接收方需要调换一下),通过调用封装好的消息发送方法sendMsg返回给微信服务器,由微信服务器解析XML数据返回给用户。考虑到用户的网络和流量耗费,回复的消息格式通常为文本或图文消息,采用图文消息格式较美观、生动。
3.2.3 图书查询和续借
由于汇文馆藏书目检索系统没有提供现成的接口,如果采用直接链接PC客户端的网址,在手机上浏览字体就会很小,给用户的体验感受很不好。现在有一些工具可以帮助很方便的建立WAP站,比如百度siteapp。它可以将汇文OPAC一键转换为WAP网站,并且可以实现同步。
通过百度siteapp建WAP站只需3步:第一步,添加汇文OPAC的主域名;第二步,选择一个模板修改定制主题样式、导航以及布局,导航只要添加图书查询和续借模块即可;第三步,进行权限验证,验证通过后就生成WAP网站了。接下来只要等待审核,在提交审核的同时系统自动分配了WAP网站的访问地址,在通过审核后该域名即可访问。
建好WAP网站后,分别将图书查询和续借的地址填写在微信菜单相应的url里,用户就可以通过点击菜单访问WAP网站,实现图书的查询和续借功能了。
3.2.4 图文消息的动态更新
图书查询和续借功能一旦发布成功基本就不用维护了,但最新动态、培训讲座、阅读活动等这些需要经常更新的栏目在发布后仍然要管理者及时维护更新消息。如果管理者不具备一些编程知识,则管理维护这些栏目就存在较大困难。因此,开发者同时需要开发一个后台管理系统。管理者可以在后台很方便地对这些栏目内容进行增删改查,并且在用户点击相应的菜单后,服务器将返回给用户最新的图文消息。
实现图文消息动态更新的难点在于图片的保存和读取。管理者通过后台增加新的图文消息时,如果有新的图片被上传,被上传的图片url和消息内容将保存在数据库中的content字段中。前台在读取遍历数据库时,需要通过正则表达式从content字段中将图片url分离出来。实现图文消息动态更新的关键代码如下:
……
$result=$mysqli->query("select id,title,description,content from wx_news where pid=7 order by id desc limit 1");//按id倒序查询pid为7的最新1条消息的结果集
$rows=$result->fetch_assoc();//从结果集中获取数据赋给数组$rows
$picUrl=str_replace(array(""", "'"),array(""", "'"), $picArr[0]);
$title=$rows['title'];
$des=$rows['description'];
$url="http://localhost/weixin/index.php/news/detail/id/{$rows['id']}";
}
$resultStr = sprintf($newsTpl,$fromUsername,$toUsername,$time,$title,$des,$picUrl,$url);
echo $resultStr;
……
以上代码可以实现最新的1条消息的动态更新,如需要实现最新的几条消息的动态更新,只需要在查询数据库时通过limit限制记录数遍历结果集即可,在此不再赘述。
3.2.5 图书荐购
电子商务的快速发展也给图书馆的文献采购带来了巨大变化。我馆从2012年开始尝试面向教职工的网上购书模式,其中2012年网上购书1654册,2013年购书2668册,增长率达到60%,获得了教职工的一致赞赏。图书馆的藏书质量和借阅率也得到了大大提高。
图书荐购的实现非常简单,前台提供给读者一个表单页面,读者填写并提交图书名称、作者信息以及联系方式后,文献采访人员在后台可以根据读者提供的信息负责购买、加工,并通知读者优先借阅。一般情况下,只需2-3天时间图书就能到达读者的手中。图书荐购的后台管理页面如图3所示。
图3图书荐购后台管理
4结语
微信作为当下最热门的一款即时通讯类聊天软件,深受年轻人的喜爱。图书馆通过微信公众平台开展服务,可以轻松融入读者群,以几乎零成本的方式在读者中宣传图书馆,和读者进行互动。公众平台的开发模式可以把图书馆的服务轻松对接入微信平台,使图书馆的服务模式更加多元化,还可以对接众多的第三方API,实现诸如查天气、查快递、查公交、看笑话、和机器人聊天等功能,增加读者使用公众号的乐趣。
微信虽然功能强大,但也不是完美无缺的。首先,基于微信公众平台的第三方服务的发展权掌控在腾讯手中,腾讯对微信的态度直接影响到第三方服务的发展方向。其次,微信还在不断的完善和发展中,版本更新频繁,只从5.0版本开始至今已更新过14次之多。因此,图书馆需要有专门人员来开发和维护微信公众号,以应对版本更新可能造成的问题。
参考文献:
[1] 腾讯公布2014年第二季度及中期业绩[EB/OL].http://tech.qq.com/a/20140813/058951.htm,2014-08-13.
[2] 楼钢.“985”高校图书馆微信公众平台现状调研与分析[J].中国出版,2014,(14):34-36.
[3] 孔云,廖寅,资芸,等.基于微信公众账号的图书馆移动信息服务研究[J].情报杂志,2013,32(9):167-170,198.
[4] 武龙龙,杨小菊.基于微信公众平台的高校移动图书馆服务研究[J].图书馆学研究,2013,(18):57-61,51.
[5] 张蓓,窦天芳,张成昱,等.开发模式下图书馆微信公众平台的设计与实现[J].现代图书情报技术,2014,(1):87-91.
[6] 叶佩珍.我国高校图书馆微信服务现状调查研究[J].图书馆学研究,2014,(12):80-84.
[7] 微信公众平台开发者文档.自定义菜单创建接口[EB/OL]. http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单创建接口,2014-08-11.
[8] 孔云.图书馆微信服务平台的设计与实现[J].图书馆论坛,2014,(2):90-95.
(责任编辑:王靖雯)