1、-I- 本科毕业论文 (20 届) 教学平台中学生信息查询的微信接口设计 所在学院 专业班级 计算机科学与技术 学生姓名 指导教师 完成日期 - II- 摘要 .I AbstractII 第一章、引言 1 1.1 研究背景和意义 .1 1.1.1 微信公共平台当前背景 1 1.1.2 微信公共平台应用价值和意义 1 1.2 主要内容、预期成果以及组织结构 .2 1.2.1 研究的主要内容 2 1.2.2 研究的预期成果 2 1.2.3 论文组织结构 3 第二章、相关理论和技术 4 2.1 现有微信公共平台技术 .4 2.2 SQL Server 数据库技术 4 2.3 C#技术与 .5 第三章
2、、需求分析与程序设计框架 7 3.1 微信公共平台用户需求分析 .7 3.2 微信公共平台接口程序设计框架 .7 第四章、设计与实现 10 4.1 微信公共平台接口设计 .10 4.1.1 接口总体功能概述 10 4.1.2 接口功能设计分析 10 4.2 微信公共平台接口实现 .11 4.2.1 微信公共平台搭建 11 4.2.1.1 注册微信公共平台账号 .11 4.2.1.2 启用开发者模式 .11 4.2.1.3 验证服务器地址有效性 .12 4.2.2 数据库连接 12 4.2.3 具体功能模块实现 14 4.2.3.1 ACCESS_TOKEN 使用方式 14 4.2.3.2 用户
3、请求消息初处理与分配 .16 4.2.3.3 用户微信账号绑定与解除绑定 .17 4.2.3.4 用户查询资料 .18 4.2.3.5 教师用户信息管理与群发消息 .20 4.2.3.6 自定义菜单事件响应 .21 第五章、总结与进一步工作 24 5.1 总结 .24 5.2 存在不足与改进方向 .24 参考文献 25 致谢 26 I 摘要 当今智能手机普及,微信已成为信息传播和交互的一个重要通道。微信公共平台在交互的实时 性,快捷性相比于网页信息平台和传统管理系统有着无与伦比的优势,同时要满足用户多样化 的操作需求和信息的安全性上也给公共平台的开发带来挑战。本文设计并开发一个面向高校师 生的
4、微信公共平台,结合 SQL server 数据库技术,能够便捷地为师生提供实时的成绩,课表, 作业,通知等信息的查询和更改操作,并在信息的隐私和安全性上给予保证。 关键词:校园信息化、微信公共平台、移动终端信息发布 II Abstract Nowadays, with the widely use of the smart mobile phone, WeChat has become an important channel fo r information dissemination and interaction. WeChat public platform has the prope
5、rty of the real- time and fast interaction which web information platforms and traditional management systems lose. Ho wever, how to hold a variety of users demand and ensure the information security are the challenges tha t the public platform development is facing. In this paper, we design and dev
6、elop a WeChat public platf orm for teachers and students in university. Combining with SQL servers and database technology, this platform can provide real- time server for teachers and students to query or update the score, schedule, homework, notifications an d other information conveniently, and a
7、lso the information privacy and security will be guaranteed. Keywords:campus information technology, Wechat Masses Platform, information publishing on mobile device 1 第一章、引言 1.1 研究背景和意义 1.1.1 微信公共平台当前背景 近几年来,智能手机的出现改变了传统信息发布和传播的方式,成为人们日常 生活中能够快速便捷地获取信息,相互交流的重要工具。随着智能手机的普及以及 用户的快速增长,传统信息发布平台也纷纷向手机端进行
8、迁移,以获取更高的使用 率和信息发布效率。然而信息发布平台在不同的手机端的兼容性经常令开发者苦恼 1。 图 1.1 微信用户数增长折线图 微信是腾讯公司于 2011 年开发的一款免费网络社交软件,其结合 QQ 及手机通 讯录建立好友关联的营销方式在短时间内迅速拉拢了千万甚至上亿的注册用户。庞 大的用户基础吸引了大量商家,媒体,企业,高校等组织机构的关注与加入。微信 提供的公共平台服务及开发功能,更是构建出一个线上线下能够良好交互的自媒体 平台。12 年 8 月起,华中科技大学推出国内首个高校官方公共平台 2,此后公共平 台也受到越来越多的高校所青睐。 作为一个新兴的平台,与传统的网站式信息发布
9、平台不同,微信公共平台更加 注重的是信息的及时更新,简洁的操作以及快速的交互。如何利用有限的交互方式 保证传统信息平台的有效性,并不只是依靠预设内容进行有限的问答式查询。这为 一个高效的平台开发带来了挑战。同时如何保证数据的实时更新与同步,以及如何 保证用户信息的隐私和安全性也是高校公共平台的开发中需要注意的问题。 1.1.2 微信公共平台应用价值和意义 2 微信公共平台利用智能手机的优势,使用户可以随时随地对信息及时进行实时 查询以及更新。相比于网页信息发布平台和传统教学管理系统,微信公共平台操作 更加简便,也方便实时交互。对于课表、作业、成绩、通知等关键信息,教师和学 生都可以通过简单的几
10、个关键字进行随时随地地查询。在智能手机普及的现在,高 校微信公共平台有着无与伦比的优势以及广阔地应用前景。 同时,微信本身作为一个便捷而广泛使用的社交工具,目前使用已经非常普及。 即使未使用的用户也可以通过手机号或 QQ 号进行快速注册与绑定。相比于传统教 学管理系统,省去了繁杂的注册步骤;对比同类的管理系统 APP,尽管微信公公平 设计上需要结合微信本身的特点,缺乏了一定的设计灵活性和专业性,然而在推广 性方面,一个限定了面向人群和内容的专业化教学用 APP 并不能达到良好的推广效 果,同时为了满足多平台手机的需要,专业 APP 在开发代价上远远超过了利用微信 公共平台进行开发的方式。 1.
11、2 主要内容、预期成果以及组织结构 1.2.1 研究的主要内容 论文将主要探讨如何为教学平台中的学生查询系统设计微信公共平台接口。用 户可以通过发送关键词到微信公共平台,微信公共平台通过关键词实现对数据库的 操作,然后将结果返回给用户。在这种简单而基础的交互方式之上,微信公共平台 的开发要提供简洁但又全面的功能,包括查询、修改、新增、删除等,即要提供可 以将用户需求准确而快速地进行转化的接口功能。 在保证操作的及时和准确性之上,用户数据的隐私性和安全性也是需要关注的 重点。用户无论老师或者学生,都应只能对自己的数据进行查询和更新,不能越权 进行操作;同时用户的信息在传输的过程中,也需要保证信息
12、的安全性,包括信息 的完整性及不被窃取。 1.2.2 研究的预期成果 论文预期实现教师和学生两种用户组的区别,在进行数据库操作时分别实现不 同的功能,包括查询、修改、新增、删除等,同时实现通过点击自定义菜单实现具 体的菜单功能。 教师可以进行资料查阅、教学信息发布、群发消息等操作; 学生可以进行资料查阅、个人信息更新等操作。 3 1.2.3 论文组织结构 文章组织结构如下: 第 1 章引言,主要讲述微信公共平台的开发背景和开发意义; 第 2 章相关理论和技术,主要讲述在开发过程中所用到的开发工具和开发技术; 第 3 章需求分析和程序设计框架,主要讲述在开发之前所做的包括用户需求分 析、程序设计
13、流程等内容的准备工作; 第 4 章设计与实现,主要讲述了微信公共平台接口的实现过程; 第 5 章结果展示,主要内容为开发完成的微信公共平台接口的使用效果截图; 第 6 章,总结与进一步工作,主要内容为总结开发过程中的经验和不足。 4 第二章、相关理论和技术 2.1 现有微信公共平台技术 微信公共平台于 2012 年 8 月 23 日正式推出,任何组织和团体都可以申请公共 账号 3,曾命名为“ 平台媒体 ”和“媒体平台”,在 2013 年微信升级的同时,微信公共 平台也跟随升级,分为服务号和订阅号两种,两种公共平台账号的权限和应用范围 都有所不同。其中服务号的主旨是为用户提供服务,仅为企业组织提
14、供申请;订阅 号的主旨则是为用户发布信息,个人和企业组织都可以申请订阅号。并且只有企业 组织申请的公共账号才可以进行认证。在实际使用上,服务号提供自定义菜单、少 量群发消息等功能,订阅号提供大量群发消息的权限。 微信同样提供开发微信公共平台接口接入第三方服务器或者新浪云的流程。第 三方服务器或新浪云通过在微信公共平台开发者模式下提交网址和密钥的方式提出 接入申请,微信服务器访问第三方服务器网址并向服务器发送验证信息,第三方服 务器将验证信息返回即可通过验证。通过验证后,微信公共平台接口需要被调用时, 微信服务器就向第三方服务器网址发送封装后的 xml 消息,微信公共平台接口接收 到消息后再进行
15、消息处理,返回的消息仍旧以 xml 格式发送给微信服务器。 图 2.1 微信 JS-SDK 调用流程 此外,微信还提供基于微信内的网页开发工具包 JS-SDK,通过使用微信 JS- SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能 力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力。 2.2 SQL Server 数据库技术 5 在计算机的各种不同的应用领域中,数据库技术非常的重要,它产生于 20 世纪 60 年代末至 70 年代初,其主要目的是高效地存取和管理海量的数据资源。数据库 技术主要研究如何存储,使用和管理数据。现如今,数据库技术已经成为计算机
16、发 展中最不可或缺的方向之一。包括微信公共平台接口在内的涉及用户信息等数据的 程序开发都要使用数据库技术。SQL Server 是微软公司推出的关系型数据库管理系 统,具有使用方便、可伸缩性好、与相关软件集成程度高等优点,采用单进程,、多 线程技术 ,。 在核心层实现数据完整性控制, 具有很强的安全保密性, ,成为目前 流行的数据库应用系统的开发工具之一。在与同为微软公司开发的 C#/ 搭配 时有着天然的优势。 2.3 C#技术与 C#是微软公司发布的一种面向对象的高级程序设计语言,它基于.net 框架,不 但继承了 C 语言和 C+的优点,还能以.net 框架作为基础,实现快速开发,在进行
17、面向对象的编程时有极大的便利性和优越性。而 是.NET Framework 的一部分, 是微软公司提供的的一种开发 Web 应用程序的类库,同时还能提供网页的处理与扩 充、Web service 框架等工作。 在使用时简单易学,使网站的大部分任务例如 消息流动、网站配置等都变得十分简单。它使用多种程序设计语言来实现三层体系 结构中的业务逻辑层设计,即使用 ASP. N ET 动态服务器页面成表示层的设计 4。 图 2.2 运行架构图 . NET 开发平台创建的应用程序在通用语言运行环境底层 CLR(Common Language Runtime ,简称 CLR)的控制下运行。它用来加载应用程序
18、,确认它们可以 6 没有错误地执行,进行相应的安全许可验证,执行应用程序,然后在运行完成后将 它们清除。类库集提供了使应用程序可以读写 XML 数据、在因特网上通信、访问 数据库等类 5。这些类都是实现微信公共平台接口所必须的。 7 第三章、需求分析与程序设计框架 3.1 微信公共平台用户需求分析 高校教学用微信公共平台作为学校教学辅助的一个载体,用户主要是两部分: 一部分是使用公共平台获取教学信息的学生,一部分是使用公共平台管理和发布教 学信息的教师。对于两种用户而言,使用微信公共平台主要的目的是实现教学信息, 包括作业、成绩、书籍、通知等的相互交流。因此,保证查看数据的流程快速畅通 是微信
19、公共平台的关键之处。而微信公共平台自身的优点是操作简单,可以随时随 地使用,比起登陆网页版数据库或者短信通知等方式成本更低,速度更快。因此, 保证微信公共平台的简单、快捷也是不容忽视的一个方面。 图 3.1 用户需求分析图 对于学生用户而言,使用微信公共平台查阅的信息繁多,包括平时作业,课程 成绩、参考书籍等,同时,因为不同学生选择的课程可能不同,所以要保证学生用 户查询到的信息既没有多余重复,也没有错误遗漏;同时,学生用户也应该能够修 改自己的个人信息,保证能够及时准确的更新个人信息;最后学生用户也要能够及 时接收到教师用户发送的群消息。 对于教师用户而言,使用微信公共平台管理的课程信息与学
20、生信息仅限于自己 所负责的科目,因此要保证教师用户能够自由操作自己负责的科目信息,无法操作 不属于自己的科目。此外,教师用户对于群发消息的功能需求也很大,所以也要保 证教师用户能够简单迅速的发送群消息。 3.2 微信公共平台接口程序设计框架 8 微信公共平台接口的设计要根据微信公共平台的消息处理原理来设计。腾讯公 司在微信开发上提供了通用的数据规范和验证流程,对于自定义接口的开发者来说, 不需要花费太多精力,只需要遵循对接规范就可以跟微信服务器实现信息交互,从 而可以将开发重点集中在自定义接口的功能实现上。 微信公共平台的消息处理包括用户终端、微信服务器、公共平台三个模块,由 用户终端( 手机
21、或者平板等设备上的 app)向微信服务器发起请求,然后微信服务器将 请求转发给公共平台,公共平台接收到消息后将消息传递到自定义接口对用户的请 求进行分析处理,处理之后将结果以同样的消息格式返回给服务器,服务器再将消 息转发给用户终端。 图 3.2 微信公共平台信息流程图 在整个消息处理过程中所使用的协议为 http6,消息在模块之间转发的格式为 xml。微信消息的 xml 格式样例(文本)如下: 1338841560 1234567890123456 其中,ToUserName 字段记录的是接收方的微信号,FromUserName 字段记录的 是发送方的微信号;CreatTime 字段记录的是
22、这条微信消息的创建时间;MsgType 字 段记录的是微信消息的格式,例如 text(文本) 、image(图片)、link(超链接)等等; Content 字段记录的则是文本消息的主体内容;MsgId 字段记录的是消息 id。 9 当接口接收到 xml 信息并且通过 ACCESS_TOKEN 验证之后,将会解析 xml, 获取信息里包含的内容(Content 字段),从而进行进一步操作。 微信公共平台要实现自己的功能需求,自定义接口的消息处理是主要部分。符 合上面所说的数据模式和流程规范的接口才能够正常的使用,所以在开发自定义接 口的时候,要严格遵循微信提供的规范。自定义接口的消息处理模式如
23、下: 请求接口。用户发送消息给微信服务器,微信服务器将 xml 格式的消息以 post 方式发送给公共平台接口,携带发送者信息、接收者信息、消息类型、消息内容等 几个方面,接口接收到消息,并反馈给微信服务器; 业务分析。微信公共平台接口根据从服务器端接收到的消息类型和消息内容的 不同,分析消息所请求的服务类型,然后将获取到的消息内容转至自定义接口中不 同的处理函数中进行具体的业务处理; 业务处理。自定义接口对具体的内容进行处理,通过包括连接数据库获取数据 库信息、连接微信服务器获取服务器信息等在内的方法得到用户需要的信息内容, 然后将反馈信息转至发送接口; 发送接口。将需要反馈给用户的信息进行
24、处理和修饰,然后转成符合格式的 xml 信息,发送到微信服务器。微信服务器接收之后根据 xml 信息中包含的接收用户信 息将内容转发给用户。 10 第四章、设计与实现 4.1 微信公共平台接口设计 4.1.1 接口总体功能概述 实现学生用户与教师用户的微信账号绑定; 实现学生用户与教师用户通过发送关键词查询数据库; 实现学生用户通过发送关键词修改个人信息; 实现教师用户通过发送关键词更新数据库; 实现教师用户通过发送关键词群发消息,并且获得消息接收人数的反馈; 实现点击自定义菜单查看帮助和个人信息; 实现点击自定义菜单跳转到其他网页。 4.1.2 接口功能设计分析 在设计具体的功能模块之前,首
25、先要设计几个基本的操作模块,其中包括消息 处理模块、数据库连接模块、消息发送模块。这几个基础模块设计完成后,在实现 具体的功能模块时就可以直接调用,极大地减少了逻辑复杂度,也加快了程序处理 的速度。 消息初处理模块是为了将用户发起的 xml 格式的请求转换成可直接操作的对象 实例,以供之后的接口功能实现处理。转换为具体的对象实例后,用户发起的请求 中所包含的元素全都转换为对象实例的参数,而利用面向对象程序设计中类的继承 的思想,不同格式的消息分别为继承了同一个消息父类的子类,根据消息格式的不 同包含不同的参数,在程序模块之间的调用和传递也会更加的方便。 数据库连接模块是将连接数据库返回数据的过
26、程封装,使之后每次要连接数据 库的时候,都直接调用数据库连接模块即可。在数据库连接模块中封装建立数据库 连接和执行 SQL 语句的程序代码,最后将查询得到的数据或者插入更新影响的行数 返回,以供之后的功能实现。 消息发送模块是为了快速有效的将需要反馈给用户的内容转换成符合微信数据 规范的 xml 消息而设置。消息发送模块中包含了文本消息发送、图片消息发送、超 链接消息发送等等多个子模块,为的是适应不同格式的数据规范。调用消息发送模 块时,将必须的参数内容传递到消息发送函数,之后经过处理将参数转变为 xml 文 件,再调用微信官方提供的消息传递接口,将 xml 消息发送到微信服务器。 11 在以
27、上几个基本模块的基础上,分别实现具体的功能模块,即对消息初处理模 块传递过来的对象实例进行判断,根据关键词确定用户请求的功能,之后根据请求 功能的不同,涉及数据库操作时编写标准 SQL 语句,然后调用数据库连接模块,得 到返回的数据后将数据处理成简单、清晰、用户体验优良的文本等格式的消息,然 后交由消息发送模块发送至微信服务器。 4.2 微信公共平台接口实现 4.2.1 微信公共平台搭建 4.2.1.1 注册微信公共平台账号 搭建公共平台一开始要申请一个微信公共平台的账号。微信公共平台的注册网 址是 。具体注册过程对照注册网站上的介绍和自己的功能需求 进行,需要身份验证等其他工序。 4.2.1
28、.2 启用开发者模式 微信公共平台有编辑模式和开发者模式两种,要开发自定义接口,就要开启开 发者模式。进入开发者模式之后要填写几个必要配置,包括 TOKEN 和服务器地址 (URL)和 EncordingASEKey。 TOKEN 为验证接口安全性所用的数字签名,可任意填写;服务器地址即为处理 微信消息和事件的接口地址,C#uid=账号;pwd=密 码;database=数据库名“); sqlcon.Open(); SqlCommand sqlcmd = new SqlCommand(query,sqlcon); SqlDataReader sr = sqlcmd.ExecuteReader(
29、); sqlcon.Close(); return sr; 之后每次需要读取数据库操作时,就调用 GetDataReader 函数。进行插入或者更 新操作需要返回的值应该是整型数,为执行 ExecuteNonQuery 函数的返回值,将 GetDataReader 稍加改写,就可以得到用于执行插入或者更新的新函数了。 尽管高校教学用微信公共平台连接的是已有的数据库,但是为了适应部分新的 需求,仍然需要增加部分内容。数据库中需要查看和修改的数据已经十分完整,需 要添加的是用户账号相关的内容。对于学生用户而言,添加一列微信号的数据位, 14 使公共平台应用后能够绑定用户微信号;对于教师用户而言,因
30、之前没有教师账号 的表,所以添加一个新的教师信息表,主要内容为教师工号、教师姓名、教师科目、 密码、微信号,以供教师绑定微信号。 调整过后的数据库关系模型如下图: 图 4.2 数据库结构图 4.2.3 具体功能模块实现 4.2.3.1 ACCESS_TOKEN 使用方式 ACCESS_TOKEN 是微信调用通用接口的通行证,必须通过 ACCESS_TOKEN 验证才能调用通用接口。验证 ACCESS_TOKEN 的方法是在向微信服务器发起调用 通用接口请求时,将 ACCESS_TOKEN 一起发送到微信服务器。通用接口是微信已 经定义好的一些常用接口,包括更改用户所在分组、文件上传等等。调用微
31、信已经 规定好的通用接口的好处是一些涉及微信服务器端的操作减少代码失误的可能,还 可以减少编程的工作量。 15 获取 ACCESS_TOKEN 的方法是以 http 协议携带几个参数发送 get 请求到固定 网址( 参数通过验证之后,微信服务器会返回一个 JSON 数据包给公共平台接口,格式为 “access_token”:”ACCESS_TOKEN”,”expires_in”:7200。其中 access_token 就是获取 到的凭证,expires_in 为凭证的有效时间,单位是秒。得到数据包之后进行解析,之 后每次调用通用接口都需要使用这个 ACCESS_TOKEN 进行验证 7。 图
32、 4.3 验证 ACCESS_TOKEN 流程图 ACCESS_TOKEN 是调用通用接口的通行证,而一个 ACCESS_TOKEN 的有效 时间是两小时,在凭证有效期内不需要重复获取,重复获取会导致之前获取的凭证 失效。所以为了保证通用接口能够正常的调用,必须保证 ACCESS_TOKEN 通过验 证。在进行 ACCESS_TOKEN 验证的时候,有两种使用方法,一种是每次进行 ACCESS_TOKEN 验证都重新获取一次,这种方法的好处是操作简单,运行速度快, 占用内存较小,缺点是 ACCESS_TOKEN 每日获取次数有上限,频繁获取可能会导 致 ACCESS_TOKEN 不可用;另一种
33、方法是将获取到的 ACCESS_TOKEN 储存在数 据库或者临时文件中,保证获取到的凭证能最大效率的利用,缺点是每次调用 ACCESS_TOKEN 都要访问数据库或者临时文件,速度慢且程序复杂。 两种方法适用范围不同,后者适用于访问人数众多、调用通用接口频繁、以主 动推送消息为主的微信公共平台(例如媒体新闻订阅号),前者适用于以特定功能为 主导、用户群体特殊的公共平台(例如网店微信平台支付)。以高校教学为目的的微 16 信公共平台的用户群体主要为学生,功能以查询教学信息、发布教学通知为主,公 共平台主动推送消息的频率低,调用通用接口的频率不高,可以选择第一种方式。 4.2.3.2 用户请求消
34、息初处理与分配 因为所有的用户请求都是以 http post 方式发送到公共平台的,而 xml 格式的消 息对于操作来说有极大的不便,因此,接收到用户发送过来的 xml 消息后,首先要 对 xml 消息进行初步处理,将 xml 消息转化为自定义的消息对象,才能进行进一步 的分析反馈。将 xml 消息转换成消息对象的优点是充分利用面向对象的思想的特点, 将对消息的判断和处理全都转变为对消息实体对象的特征的判断和处理,一方面在 操作时保证更加快捷和清晰,另一方面对象在不同模块之间的传递也变得更为简单。 图 4.4 用户请求消息初处理流程图 首先声明一个 ReceiveMessageBase 的基类
35、,包含所有类型的消息所含的共同变 量:MsgType( 消息类型)、 FromUserName(发送方 id)、ToUserName(接收方 id)、 CreatTime(创建时间)、MsgBody(消息原文)等。其中 MsgType 为枚举类型,包含 text(文本 )、imge(图片)、voice(声音)、link(超链接 )、event( 事件)等类型。创建基类 17 的目的是将所有消息类型中共通的内容提前定义,在之后继承基类的子类中不需要 重复声明共通的变量,在之后进行修改和添加时也变得更为简单。 然后根据不同的消息类型,分别声明继承了 ReceiveMessageBase 类的子类,
36、增 加具体类型所对应的变量。例如文本消息类 TextReceiveMessage 类在继承的同时, 增加了 Content 变量,储存文本消息的消息内容。 接收到微信服务器发来的 xml 消息后,首先找到 MsgType 节点,判断消息类型, 然后声明对应的对象,将解析后的 xml 节点内容分别赋给对应的变量。为了之后的 函数调用操作方便,将消息中最主要的内容(文本消息中的消息文本、图片消息中的 图片 url 等)全部存放在 MsgBody 变量中。之后将完成的消息对象传递给下一个模块, 详细的消息处理都对这个对象进行。 4.2.3.3 用户微信账号绑定与解除绑定 用户使用微信公共平台的功能之
37、前,首先要将微信账号与数据库中的学生信息 或者教师信息绑定。绑定学生信息的用户才能使用公共平台的功能,保证了数据库 中信息的安全性和用户的唯一性,即每个学生只能使用一个微信账号来访问公共平 台,每个微信账号也只能访问自己的数据,无法查阅其他学生的资料;而教师类用 户可以对数据库中具体课程的数据进行增、删、查、改的多种操作,因此在使用微 信公共平台的功能之前首先绑定账号保证了数据的安全性。 18 图 4.5 用户账号绑定流程图 因为绑定微信账号需要提交学号/工号和密码,所以选择用户发送文本消息方式 进行绑定。当用户发送“ 绑定 /解绑 学号 密码” 形式的文本消息到公共平台,公共平 台接口即可接
38、收到用户发来的绑定请求,在将 xml 消息转换成 TextReceiveMessage 消息对象的时候,就能执行绑定操作了。 xml 信息中的 Content 节点即消息的主体内容,在 TextReceiveMessage 对象中存 放在 string 格式的 MsgBody 变量里。对这个变量进行字符串分割,分离得到 “绑定/ 解绑”、“学号” 和“密码” 三个字符串。对第一个字符串判定确保当前执行的是账号绑 定(或解除绑定) 操作。账号和密码则用于与数据库中信息相匹配。 在绑定操作之前,首先在数据库中查询请求用户的微信号是否存在,即是否已 经绑定到某个学号,若尚未绑定,则判断请求消息中的学
39、号是否已经有微信号绑定, 若没有微信号绑定则判断密码是否正确。全部信息匹配完毕之后若没有错误,则将 请求用户的微信号储存在数据库中,与对应学号绑定完毕;若绑定步骤中出现问题, 则将具体问题的信息返回给请求用户。 19 解除绑定的操作类似,请求用户发送来的学号、密码、微信号必须与数据库中 的信息一一对应,之后将请求消息发来的学号对应的微信号清空,即解除绑定完毕。 教师账号和学生账号的操作基本类同。 4.2.3.4 用户查询资料 综合微信手机版的操作局限性与查询数据类型的多样化,用户使用微信公共平 台查询时,仍然是以发送文本消息的方式进行查询。用户发送“查询 内容 附加条件 (可省略 )”的文本消
40、息到公共平台,经过消息初处理之后,将得到的消息示例传递给 业务处理模块。 图 4.6 用户资料查询流程图 在业务处理模块,先使用 split 函数对消息实体内容,即 MsgBody 变量中储存的 字符串以空格字符为界限进行切割处理,得到一个新的字符串。当判断切割后的字 符串数组中的第一个值为“查询” 时,即可进入查询功能的分支模块。 进入查询模块后,即可根据用户请求中的查询内容和查询条件,编写 SQL 语句。 若是用户没有提交查询条件,则按照默认的查询条件进行处理。编写查询语句时, 直接使用用户的微信号,也就是消息对象中的 FromUserName 作为关键的查询条件。 20 因此,使用查询功
41、能之前,必须先进行微信号绑定,才能确保查询到的数据准确完 整。将标准 SQL 语句传递到数据库连接模块,从数据库返回 SqlDataReader 数据之 后,再对返回数据做进一步处理。 根据查询内容的不同,对 SqlDataReader 数据的处理也不同。若查询的数据是以 行方式返回结果的,例如作业列表,则将返回数据按照顺序排列即可;若查询的数 据是以列方式返回结果的,例如个人资料,则还要将列名所对应的中文含义与列中 的信息一一匹配。将返回数据处理后得到一个字符串,最后在数据前后分别添加友 好的客服内容,即可将数据传递到文本消息发送模块。对返回数据进行细致处理的 目的是提高用户友好性,因为数据
42、库中储存的数据的可读性不高,直接返回给用户 会造成极大地阅读困难,经过处理后的数据则十分利于阅读,方便用户获得有效信 息和进一步操作。 文本消息发送模块是一个封装好的 xml 生成类,将发送方与接收方的微信号(即 用户请求中的接收方与发送方)、发送内容一起传递到发送模块,即可生成符合微信 数据规范的 xml 文件,然后提交到微信服务器,由微信服务器发送给微信用户。作 为 xml 节点中必须的消息生成时间,则在发送模块中由时间生成函数自动生成。因 为不同类型的微信消息的 xml 格式不同,所以发送图片、图文、音频、视频、超链 接等格式的消息时,要调用其他的消息发送模块。所有消息发送模块可以被随意
43、调 用,保证其他业务消息发送时不必再考虑复杂的格式问题。 4.2.3.5 教师用户信息管理与群发消息 为了保证信息的安全性,学生用户大多数情况下都只能使用查询功能,只能修 改自己的个人资料。而与学生用户相对应的,教师用户可以修改所负责的科目的课 程信息、作业信息、成绩表等等数据,这些数据的插入和修改也可以通过微信公共 平台来实现。 21 图 4.7 教师功能流程图 与学生用户查询类似,教师用户绑定微信号之后,即可通过发送关键词的方式 操作公共平台。发送“ 插入 /修改 项目 值 条件(可省略)”的文本消息到微信公共平台, 经过消息初处理后,将 MsgBody 中的字符串切割,之后根据用户请求的
44、功能是插入 或者修改分别转至不同的功能模块。转移到具体的功能模块后,再根据用户附加的 请求条件填写 SQL 语句,调用数据库连接模块执行 SQL 语句。 执行插入或者修改功能时,数据库连接模块将会返回 SQL 语句所影响的行数, 若返回行数是 0,则证明插入数据失败或者没有符合修改条件的数据。将返回的影 响行数包装后回馈给用户,即可使用户清晰地了解数据操作是否成功,若操作失败 会提醒用户可能出现的问题,方便用户进行修改。同时,用户也可以再次发送查看 的关键词,来查看数据是否已经更新到数据库。 对于教师用户而言,发送群通知是经常使用的一项功能,可以用来发送通知和 公告,所以在微信公共平台接口中向
45、教师用户提供群发消息的功能是必要的。教师 用户利用微信公共平台发送群发消息的方法仍然是向微信公共平台发送“群发 消息 内容”的文本信息,微信公共平台接收到经过微信服务器转发来的 xml 文件后,仍旧 按照消息处理流程,将 xml 消息转化为 TextReceiveMessage 对象,然后转入文本消 22 息处理模块。在文本消息处理模块,将 MsgBody 中的文本使用 split 函数切割后, 得到一个字符串数组。当判断字符串数组的第一个值为“群发” 时,即可转入群发消 息模块,进行群发消息的操作。 在群发消息模块,首先调用数据库连接模块,查询发起群发请求的教师用户的 姓名与教授的全部学生用
46、户的微信号,得到教师姓名后对教师发来的群发消息进行 包装,增加发起请求的教师用户的姓名和发送时间。最后进入一个循环,在循环中 调用文本消息发送模块,依次向数据库连接模块返回的学生用户的微信号发送消息。 消息全部发送完毕后,向发起请求的教师用户回馈发送结果,包括是否发送成功以 及接收信息的学生人数。 4.2.3.6 自定义菜单事件响应 微信公共平台提供自定义菜单的功能,使用自定义菜单在一定程度上摆脱了只 能靠发送文字等待公共平台反馈的互动方式,直接点击菜单即可实现相关功能。将 一些常用的功能转换为自定义菜单,能够实现更好的用户友好性,也节省了响应用 户请求的条件判断程序。 微信公共平台的自定义菜
47、单有 click 和 view 两种触发方式,前者为用户点击菜 单时,向公共平台发送一个事件消息,后者则是直接跳转到事先确定的网址。两者 有不同的应用。一般来说,在微信范畴内的菜单事件或者需要提交部分数据的外网 触发事件多数以 click 方式进行,在代码编写时有更大的自由度和完善性;普通的外 网触发事件可以选择 view 方式,比起 click 方式的跳转连接,view 方式更加快捷, 减少了在服务器与公共平台之间的消息交互和接口调用,缺点是自主性不足,局限 性很大。 菜单在使用之前首先要创建。创建菜单要在微信网页版的开发者模式中执行, 使用微信提供的网页工具,按照规定的数据格式提交创建菜单
48、的代码,将菜单名、 菜单类别(click 或 view)、菜单关键值(若是 click 类型的菜单则为菜单点击事件的判 别关键词,若是 view 类型的菜单则为直接跳转的网页链接)。 23 图 4.8 自定义菜单流程图 在高校教学微信公共平台中,click 方式的自定义菜单主要用于查看帮助和个人 信息确认。点击查看菜单,就会发送一个 xml 格式的事件信息到微信公共平台。经 过消息初处理后,xml 消息会转换为 EventReceiveMessage 类的消息对象,然后会转 入事件处理模块。在事件处理模块,根据用户请求中的菜单关键值(仍然储存在 MsgBody 中) ,判断用户点击的具体菜单,
49、从而实现用户请求。若是点击“帮助” 菜单, 则直接调用文本消息发送模块,向用户发送详细的关于微信公共平台的功能介绍与 使用说明,方便用户熟悉和使用;若是点击“个人信息” 菜单,则首先要调用数据库 连接模块,在数据库中查询用户的个人信息,将返回结果进行修饰后,调用文本消 息发送模块将内容发送给用户。其他 click 类型的菜单响应流程均类似。 View 方式的自定义菜单则用来做快速连接,包括学院官网、教务处官网等超链 接,方便用户快速访问。点击 view 方式的菜单,向微信服务器直接发起请求,即可 跳转到具体网址,不需要经过公共平台,减少了程序运行时间和接口调用时间。 24 第五章、总结与进一步工作 5.1 总结 在当前信息交互频繁的互联网时代背景下,微信以其快捷、便利、迅速的特点, 占据了信息传播和交互的一个重要方面。而作为微信这个载体的一个重要应用,微 信公共平台在交互的实时性、快捷性等方面相比于论坛、贴吧等网页信息平台和传 统管理系统有着无与伦比的优势。本文所实现的面向高校师生的微信公共平台,就 是利用微信公共平台为载体,结合 SQL server 数据库技术,以为师生快速、便捷的 提供实时的成绩、课表、作业、通知等信息的查询和更改操作为目的所设计的。面 向高校教学的微信公共平台,连接课程信息数据库,当用户需要查询