基于ne的图书馆业务嵌入微信的应用研究_第1页
基于ne的图书馆业务嵌入微信的应用研究_第2页
基于ne的图书馆业务嵌入微信的应用研究_第3页
基于ne的图书馆业务嵌入微信的应用研究_第4页
基于ne的图书馆业务嵌入微信的应用研究_第5页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于ne的图书馆业务嵌入微信的应用研究

1信息传递方式随着移动互联网和智能手机的普及,微信作为一种免费的社交软件,其观众数量不断增加。微信公众平台方便快捷的信息传递方式契合了图书馆移动服务的需要。图书馆可以充分利用读者微信客户端作为APP终端,将信息服务与微信公众平台有效结合,在读者交友娱乐的同时,还可与图书馆进行信息交流,扩展了图书馆信息服务渠道,提升读者的应用体验。本文将详细介绍在微信公众平台的开发模式下,如何设计并实现图书馆微信公众平台(简称“平台”)。2需求分析和设计理念2.1系统与功能对接目前不少图书馆正在打造属于自己的微信公众平台。以“图书馆”为关键词能查找到很多微信公众号,其中有少数公众号与图书馆业务系统对接,实现了读者号的绑定、图书借阅查询、期刊查询等功能。其对接方式主要两种:一种是在微信上输入指令或关键词进行查询的整合性对接,如上海图书馆、重庆图书馆;另一种是链接到图书馆Web系统上查询的形式性对接,微信只充当浏览器功能,如上海交通大学图书馆和广州图书馆。就多数公众号而言,并未与图书馆业务系统对接,提供的功能较为简单。(2)在微信系统开发方面从平台技术上看,微信官网提供了详细的技术文档,开发者根据自己熟悉的编程技术进行开发。在CNKI上,以“微信”和“图书馆”为关键词进行检索,检出文献中的平台设计多数直接按照技术文档进行原始开发。如文献采用Dom4j解析XML消息,文献自建Java的Weixinservlet类来实现消息的接收解析等,文献自建PHP消息封装与回复函数reply($replytext)。这些文献的重点集中在如何按照技术文档一步步实现微信XML消息的解析、封装,对于获取XML数据后如何处理或与图书馆业务系统如何对接介绍较少。另外,按照技术文档开发效率低下,且编程难度较大。目前,虽然微信官方提供了SDK,但只有基于PHP环境的SDK。因此,出现了很多第三方SDK,如PHP环境的PHPSDK增强版和Wechat-php-sdk;Java环境的JavaSDK和消息接口-java-jsp;.NET环境的WeixinMpSdk、Senparc.Weixin.MPSDK和Loogn.WeiXinSDK等。虽有这么多开源SDK,但通过对CNKI中微信公众平台开发文献的检索,并未发现开源SDK的应用设计。而且这些设计类文献,主要基于Java、PHP两种环境进行设计开发,没有基于.NET环境的相关文献。2.2平台总体架构图书馆与读者交互信息较多,若通过微信APP客户端响应每个读者的需求,只能通过开发模式与图书馆各类系统进行整合性对接,利用微信公众平台自动回复消息功能,完成读者与图书馆间信息交互。根据微信公众平台信息交互的特点,平台运行过程为:接收读者发送的查询需求,将查询关键词传递给图书馆业务系统执行查询,返回查询结果并发送给读者客户端,从而完成信息的自动交互。整个平台框架如图1所示:其中Web应用系统(简称“应用系统”)是实现平台的唯一核心系统,它需要完成微信公众平台发送的XML消息解析、与图书馆业务系统建立信息查询、将获取的查询信息进行XML封装等工作。本文基于.NET环境,选择开源SDK软件,直接调用SDK相应功能完成XML消息的解析与封装等工作,从而降低程序开发难度。开发的重点是开源SDK软件的应用和平台与图书馆业务系统的对接方式。3信息查询基于上述设计思路,应用系统的具体流程如图2所示:主要实现以下功能:(1)当读者关注图书馆微信公众号时,应用系统自动向读者发送欢迎词和查询指令。(2)关注成功后,读者在微信客户端发送包含读者号和密码的指令,应用系统接收并解析指令,获取读者号、密码和微信ID,存储在数据库中,为信息查询模块调用读者号和密码做准备。(3)读者在微信客户端输入相应查询指令后,应用系统接收并解析指令,分析指令内容,启动相应的信息查询模块,与图书馆业务系统建立查询,返回查询结果。最后封装查询结果信息,并发送给微信公众平台服务器(简称“微信服务器”)。(4)若读者取消公众号的关注后,将从数据库中删除存储的读者号相关信息。4应用系统的具体应用4.1开发器安全技术.NET环境下的Senparc.Weixin.MP.dll开源SDK控件集成了URL有效性验证、接收消息、发送消息和自定义菜单等主要功能,在开发中调用相应功能即可。其中SDK包含的关键类如表1所示:(2)转化sql消息解析在程序中,主要涉及“消息接口URL有效性验证”、“发送的XML消息接收与解析”、“解析后消息类型的判断”和“回复XML消息封装与转换”这4个环节,对应SDK类或方法的调用。其整个调用流程如图3所示:4.2发送table请求在微信公众平台管理系统中,填写消息接口URL和Token参数。验证URL时,微信服务器向URL发送GET请求。获取请求的Signature、Timestamp、Nonce和Echostr参数值,并将值传递给CheckSignature.Check方法进行URL有效性检验,若确认请求来自微信服务器,则原样返回Echostr参数内容,表示验证成功。4.3enti着型的装置将微信服务器发送的XML数据包转换为XDocument对象。调用RequestMessageFactory.GetRequestEntity方法,将XDocument对象转换为Entities.RequestMessageBase实例,取得消息类型RequestMsgType的值,根据不同的值执行不同的操作。以下是程序的主要执行过程:4.4查询接口获取图书馆业务系统中有自建系统、也有第三方的系统,针对不同类型的业务系统建立不同的信息查询方式。本文主要采用以下三种方式:1从FAQ知识库获取信息将图书馆网站上常见的FAQ信息进行整理并建立知识库,其字段如表2所示。当平台接收到查询命令后,直接从知识库中返回查询结果,节约查询响应时间。2从业务系统查询接口获取信息针对自建业务系统和第三方预留数据查询接口的业务系统,建立调用接口程序,获取查询信息。3从业务系统Web页面获取信息针对第三方且未预留数据查询接口的业务系统,从Web页面提取数据。引用Winista.HtmlP开源控件,建立模拟登录程序,执行相关查询,解析查询结果页面内容,获取相关信息。(2)复合指令查询整个平台的查询指令主要分为三类:1数字指令查询。由0-9构成单一指令,主要针对FAQ知识库中的Inst字段进行查询。2关键词查询。输入关键词进行查询,主要针对FAQ知识库的FAQ标题和内容进行全文检索。3复合指令查询。由a-z单个字母+#+关键词构成的字母复合指令,主要针对图书馆业务系统信息查询。字母对应图书馆业务系统,“#”为分隔符。该类指令对应信息查询模块较多,为减少主程序代码过长和提高执行效率,将指令字母部分与对应的信息查询模块名称储存在数据库中,其字段如表3所示:将1和3的指令存储在数据库中的优势:具有良好的可扩展性,在不调整指令分析控制程序的前提下,可按照指令规则任意新增查询功能。根据读者发送指令的类型,启动相应信息查询模块,其控制流程如图4所示。4.5在essage#实例下回复读者调用ResponseMessageBase.CreateFromRequestMessage方法,创建查询结果的ResponseMessage*实例,通过EntityHelper.ConvertEntityToXmlString方法将其实例转换为文本并回复读者。以下是针对读者requestMessage会话回复文本消息的程序代码:在上述程序中,将ResponseMessageText、ResponseMsgType.Text、responseMessage.Content三项作相应修改,即可实现其他类型消息的回复。5关于登录读者号以读者“j00600”借阅情况查询为例,在图书馆业务系统上查询结果如图5所示。在微信上查询,首次需发送“f#j00600&123456”指令(读者号和密码)绑定读者号。当绑定成功后,发送“g”借阅查询指令,则收到借阅书目信息如图6所示。从两种查询方式来看结果是一致的,实现了设计目标,满足了读者对信息快速查询的需求。6为图书馆业务系统数据查询提供更多的信息查询服务,提高服务效率本文设计并实现了基于Senparc.Weixin.MP开源控件的平台,系统地介绍了设计思路、具体实现和最终实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论