基于微信公众平台开发的学生服务系统

2015-05-30 10:48凌升杭
计算机时代 2015年8期
关键词:开发模式微信公众平台

凌升杭

摘 要: 基于微信订阅号开发了东南大学苏州研究院学生服务系统,旨在为在校学生群体建立一个全方位、立体化的校园服务平台。微信公众平台是一个很好的方式,它提供了开发模式,可以通过微信公众平台的接口,实现相应的功能。该系统应用Java语言开发了Web Servlet,提供生活服务、校园服务等功能。目前已经投入使用,深受学生的欢迎。

关键词: 微信公众平台; 学生服务; Java; 查询; 开发模式

中图分类号:TP311.1 文献标志码:A 文章编号:1006-8228(2015)08-26-03

Development of student service system based on WeChat

Ling Shenghang

(College of Software Engineering, Southeast University, Suzhou, Jiangsu 215000, China)

Abstract: WeChat supplies development mode, users can realize the corresponding functions through the WeChat public platform interface. The development of Suzhou institute of Southeast university student service system, which is based on WeChat, is intended to establish a comprehensive, three-dimensional campus service platform for students. The system is developed by using java language, providing the functions of living services, campus services and so on. Now put into use, welcomed by the students.

Key words: WeChat; student services; Java; query; development mode

0 引言

0.1 背景

微信公众平台,简称WeChat,是腾讯的微信团队在2012年8月正式上线的。公众平台最先主要面向媒体,企业等机构,通过渠道将品牌推广给上平台的作用[1]。在2013年,公众平台做了大幅调整,允许组织和个人也能申请公众平台的订阅号,通过订阅号,个人和组织也可以为用户提供信息,并实现与特定群体的文字,图片,语音的全方位沟通、互动[2]。于是就可以使用微信公众平台的订阅号,实现为校内学生提供各种服务。

0.2 微信订阅号的功能

微信公众平台的订阅号主要有以下功能。

⑴ 群发推送:每天可以发送1条群发消息,主动向用户推送文字消息或图文消息。

⑵ 自动回复:当用户给订阅号发送指定关键字,可以实现对关键字的特定回复。

⑶ 自定义菜单功能。

微信公众平台支持以下两种模式[3]。

⑴ 编辑模式:编辑模式简单实用,可以通过微信公众平台的Web页面设置和管理各种功能。

⑵ 开发者模式:可以实现微信编辑模式几乎所有的功能,同时开发更多高级功能。开发者通过可调用网络API,对接数据库实现各种功能。

基于订阅号的功能,使用开发者模式,调用网络中的API和学校网站的API,即可实现对学生的各种服务,具体实现的服务在下文中叙述。

1 开发者模式接入

1.1 开发者模式通讯机制

基于订阅号的开发者模式,开发了学生服务系统。下面简单介绍一下公众平台的通讯机制。

当微信用户向公众平台发送一条消息,实际上这条消息首先发送到微信后台,通过微信后台向我们的公众号服务器转发一个请求,我们在公众号服务器上处理后,再返回这个请求的结果,最后由微信后台放到微信客户端。图1描述了用户向公共平台发送请求的整个过程[4]。

图1 通讯机制

图1中的微信后台是腾讯公司的微信服务器,它负责与用户端数据交互,并按照对接规范将用户命令进行解析和处理。所以作为开发者,只需要面对公众号服务器,也就是常说的应用服务器。

1.2 开启开发者模式

每一个微信公众号可以在公众平台的开发者中心开启开发者模式。当开启开发者模式后,编辑模式功能就失效。所有功能必须在公众号服务器实现[5]。服务器的配置需要填写URL(服务器地址)和Token(令牌),其中Token是其微信公众平台的身份标识,开发者可以任意填写,当做身份签名。当微信用户给订阅号发送信息后,微信后台将向公众号服务器发送GET请求,并且带上四个参数(signature、timestamp、nonce、echostr),开发者通过对签名(即signature)的效验,来判断此条消息的真实性。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功;否则接入失败。

1.3 事件推送和消息回复

当用户在关注和取消关注订阅号时,微信服务器会把这个事件发送到所填写的URL。同时当微信用户向公众账号发消息时,微信服务器首先将消息转换为特定的XML结构的信息,将其转换后的信息POST到我们的微信公众号服务器上[6],然后在公众号服务器上处理信息,再返回给微信服务器。目前已经可以推送文本消息,图片消息,地理位置消息等。对于每一个POST请求,公众号服务器在响应包中返回特定XML结构,对该消息进行响应,目前已经支持回复文本、图片、图文、语言、视频等。

1.4 公众号服务器接入

在微信公众平台上配置访问微信公众号服务器的URL地址,就可以实现公众号服务器的接入。本人使用了阿里云的云引擎(ACE)作为微信公众号服务器。在ACE只需上传WAR包,即可提供服务,不需要维护任何服务器。使我们开发过程中只需关注应用程序,而不必去关心服务器的各种事物。使用JAVA语言,编写了Socket处理类,实现GET请求和POST请求。其中GET请求实现Token信息的验证,验证服务器的有效性。在POST请求中,将用户发送的消息进行解析并处理,响应处理后的结果回复,实现各种学生服务功能。其他还有各种功能相关类,在下一节具体阐述。

2 服务系统设计

2.1 系统功能设计

基于微信公众平台订阅号开发的学生服务系统主要由校园服务、生活服务和其他服务三个功能模块组成。系统功能模块图2所示。

[学生服务系统][校园服务][今日

课表][四六级

查询][学校服务网站] [其他服务][热点新闻][简易

计算器][聊天

机器人][生活服务][天气查询][快递查询][交通查询]

图2 系统功能图

校园服务模块分为:

⑴ 今日课表:为学生提供查询课表信息服务,课表包括上课时间、上课教室和授课老师等信息。

⑵ 四六级查询:为学生提供四六级查询服务。学生可以点击查询,输入相应的准考证和姓名等信息即可查询成绩。

⑶ 学校服务网站:这是登陆学校服务系统网站的入口。将网页登陆集成到微信中,方便同学使用手机登陆系统。

生活服务模块分为:

⑴ 天气查询:为同学提供当天以及之后几天的天气预报。同时现已加入pm2.5检查信息。

⑵ 快递查询:方便同学收发快件,可以随时了解快递位置。输入快递单号即可查询对应的快递信息。

⑶ 交通查询:为同学提供如火车列次和飞机航班的查询,并且支持直接跳转去哪儿网订票。

其他服务模块分为:

⑴ 热点新闻:为同学提供当天的热点新闻内容。包括时事,体育和娱乐新闻。

⑵ 简易计算器:当输入的是一个算术式,可以直接返回计算结果,可以当做计算器使用。

⑶ 聊天机器人:基于深度DeepQA系统API,实现智能回复学生的提问,是学生休闲娱乐的助手。

2.2 类功能结构设计

根据学生服务公众号的功能进行设计,将相关的逻辑功能处理抽象化为相应的类和方法。目前基本开发已经完成,项目所有代码已上传github,将作为开源项目,与其他开发者共同开发维护(项目地址:https://github.com/lingo0/WeiXin.git)。

⑴ 微信Servlet类(WeiXinServlet)

WeiXinServlet类继承自HttpServlet类。这里类拥有两个方法doGet()和doPost()。

doGet方法用于验证服务器地址的有效性。doPost方法用于接收微信后台传输给公众号服务器的消息,对于每一个消息都需要验证其来源,分析发来的信息,并将处理结果返回给微信后台。这个过程就实现了消息的自动回复。

⑵ 消息类包(package message)

Package message包中的类是微信后台传输的各类消息的格式封装类。其中类中的属性是根据微信定义的传输标准结构所设定,类BaseMessage是消息格式的基类,其中的属性包括ToUserName,FromUserName,CreateTime等,是消息传输中必须有的属性。其他的消息类均继承自BaseMessage,并添加其他消息特有的属性。比如文本消息(TextMessage)有content属性,而图片消息(ImageMessage)独有picUrl属性。将这些不同的消息都封装成类,在解析消息和发送消息的过程中就可以直接操作消息对象。

⑶ 工具类包(package Util)

package Util包中的类是各个工具类。其中CheckUtil类处理微信GET的服务器验证。MessageUtil处理微信消息的解析和封装类,提供xmlToMap()和initText()等方法。xmlToMap()方法将微信后台传给服务器的xml格式数据解析成Map类型的数据。initText()方法则是将字符串类型的数据组装成xml格式的数据,用来返回给微信后台。WeiXinUtil类处理http请求和https请求等。

⑷ 创建回复消息类(ResponseMessage)

ResponseMessage类的作用就是根据用户不同的输入提供不同的功能,也就是我们学生服务系统的功能类。通过解析用户的输入,调用不同的方法,实现上述的各种功能,比如课表查询,天气预报等。其中调用了图灵机器人的API实现各种查询服务和聊天机器人服务。

3 使用流程

3.1 关注东大苏州研究院学生服务公众微信号

学生服务系统的使用,需要一部安装了微信App应用的智能手机。可以通过三种方式对它进行关注。

⑴ 打开添加朋友界面,点击搜索号码:seu_assistant,点击关注即可。

⑵ 打开添加朋友界面,点击搜索公众号:东大苏州研究院学生服务,点击关注即可。

⑶ 打开微信,扫描东大苏州研究院学生服务公众微信号二维码即可关注。

3.2 使用各种功能服务

关注了公众号后,会出现菜单提示,回复?会调出菜单。根据菜单的内容回复相应数字,查看各种功能说明,它会告诉各个功能如何使用,如图3所示。然后根据说明,发送文字来获取不同的功能。如图4所示。

图3 功能说明菜单

目前系统拥有九个功能,今后还会根据需要增加功能。

4 结束语

在线学生服务系统是在校学生们学习和生活中的好帮手,也是校园服务的发展趋势。校园服务不再只限于通过老师和辅导员,更多的可以通过移动应用,对学生提供更多更实时的服务。本文通过Java Servlet技术,在微信公众平台上实现了校园服务系统,为在校学生提供服务。系统现已投入到东南大学软件学院使用,目前有500多人关注此订阅号,在学生使用过程中取得了良好的反响,可为学生校园生活、学习提供便利。同时,系统功能还需增强,如加入选课、教师评分等更多功能。这需要学校的大力支持,在之后进一步开发中开放更多校园服务接口,供我们使用。

猜你喜欢
开发模式微信公众平台
基于微信的大学生微型学习平台的设计与实现
基于微信公众平台的碎片化学习研究
媒体融合背景下出版社微信公众平台发展研究
微信公众平台在高校图书馆信息服务中的应用研究
浅谈乡村旅游的开发和利用
我国乡村旅游驱动机制与开发模式研究
非物质文化遗产的旅游开发模式与优化策略
邢台微营销市场前景与开发模式研究