




免费预览已结束,剩余25页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华东师范大学信息学院计算机科学与技术专业学士毕业论文 教学平台中学生信息查询的微信接口设计WeChat interface design of teaching platform for students information query姓 名: 学 号: 专 业: 计算机科学与技术系 指导 教师: 年 月 华东师范大学学士毕业论文 教学平台中学生信息查询的微信接口设计摘要IAbstractII第一章、引言11.1 研究背景和意义11.1.1 微信公共平台当前背景11.1.2 微信公共平台应用价值和意义11.2 主要内容、预期成果以及组织结构21.2.1 研究的主要内容21.2.2 研究的预期成果21.2.3 论文组织结构3第二章、相关理论和技术42.1 现有微信公共平台技术42.2 SQL Server数据库技术42.3 C#技术与5第三章、需求分析与程序设计框架73.1 微信公共平台用户需求分析73.2 微信公共平台接口程序设计框架7第四章、设计与实现104.1 微信公共平台接口设计104.1.1 接口总体功能概述104.1.2 接口功能设计分析104.2 微信公共平台接口实现114.2.1 微信公共平台搭建 注册微信公共平台账号 启用开发者模式 验证服务器地址有效性124.2.2 数据库连接124.2.3 具体功能模块实现 ACCESS_TOKEN使用方式 用户请求消息初处理与分配 用户微信账号绑定与解除绑定 用户查询资料 教师用户信息管理与群发消息 自定义菜单事件响应21第五章、总结与进一步工作245.1 总结245.2 存在不足与改进方向24参考文献25致谢26-I-摘要当今智能手机普及,微信已成为信息传播和交互的一个重要通道。微信公共平台在交互的实时性,快捷性相比于网页信息平台和传统管理系统有着无与伦比的优势,同时要满足用户多样化的操作需求和信息的安全性上也给公共平台的开发带来挑战。本文设计并开发一个面向高校师生的微信公共平台,结合SQL server数据库技术,能够便捷地为师生提供实时的成绩,课表,作业,通知等信息的查询和更改操作,并在信息的隐私和安全性上给予保证。关键词:校园信息化、微信公共平台、移动终端信息发布 IIAbstractNowadays,withthewidelyuseofthesmartmobilephone,WeChathasbecomeanimportantchannelforinformationdisseminationandinteraction.WeChatpublicplatformhasthepropertyofthereal-timeandfastinteractionwhichwebinformationplatformsandtraditionalmanagementsystemslose.However,howtoholdavarietyofusersdemandandensuretheinformationsecurityarethechallengesthatthepublicplatformdevelopmentisfacing.Inthispaper,wedesignanddevelopaWeChatpublicplatformforteachersandstudentsinuniversity.CombiningwithSQLserversanddatabasetechnology,thisplatformcanprovidereal-timeserverforteachersandstudentstoqueryorupdatethescore,schedule,homework,notificationsandotherinformationconveniently,andalsotheinformationprivacyandsecuritywillbeguaranteed.Keywords:campus information technology, Wechat Masses Platform, information publishing on mobile device华东师范大学信息学院计算机科学与技术专业学士毕业论文第一章、引言1.1 研究背景和意义1.1.1 微信公共平台当前背景近几年来,智能手机的出现改变了传统信息发布和传播的方式,成为人们日常生活中能够快速便捷地获取信息,相互交流的重要工具。随着智能手机的普及以及用户的快速增长,传统信息发布平台也纷纷向手机端进行迁移,以获取更高的使用率和信息发布效率。然而信息发布平台在不同的手机端的兼容性经常令开发者苦恼1。图1.1 微信用户数增长折线图微信是腾讯公司于2011年开发的一款免费网络社交软件,其结合QQ及手机通讯录建立好友关联的营销方式在短时间内迅速拉拢了千万甚至上亿的注册用户。庞大的用户基础吸引了大量商家,媒体,企业,高校等组织机构的关注与加入。微信提供的公共平台服务及开发功能,更是构建出一个线上线下能够良好交互的自媒体平台。12年8月起,华中科技大学推出国内首个高校官方公共平台2,此后公共平台也受到越来越多的高校所青睐。作为一个新兴的平台,与传统的网站式信息发布平台不同,微信公共平台更加注重的是信息的及时更新,简洁的操作以及快速的交互。如何利用有限的交互方式保证传统信息平台的有效性,并不只是依靠预设内容进行有限的问答式查询。这为一个高效的平台开发带来了挑战。同时如何保证数据的实时更新与同步,以及如何保证用户信息的隐私和安全性也是高校公共平台的开发中需要注意的问题。1.1.2 微信公共平台应用价值和意义微信公共平台利用智能手机的优势,使用户可以随时随地对信息及时进行实时查询以及更新。相比于网页信息发布平台和传统教学管理系统,微信公共平台操作更加简便,也方便实时交互。对于课表、作业、成绩、通知等关键信息,教师和学生都可以通过简单的几个关键字进行随时随地地查询。在智能手机普及的现在,高校微信公共平台有着无与伦比的优势以及广阔地应用前景。同时,微信本身作为一个便捷而广泛使用的社交工具,目前使用已经非常普及。即使未使用的用户也可以通过手机号或QQ号进行快速注册与绑定。相比于传统教学管理系统,省去了繁杂的注册步骤;对比同类的管理系统APP,尽管微信公公平设计上需要结合微信本身的特点,缺乏了一定的设计灵活性和专业性,然而在推广性方面,一个限定了面向人群和内容的专业化教学用APP并不能达到良好的推广效果,同时为了满足多平台手机的需要,专业APP在开发代价上远远超过了利用微信公共平台进行开发的方式。1.2 主要内容、预期成果以及组织结构1.2.1 研究的主要内容论文将主要探讨如何为教学平台中的学生查询系统设计微信公共平台接口。用户可以通过发送关键词到微信公共平台,微信公共平台通过关键词实现对数据库的操作,然后将结果返回给用户。在这种简单而基础的交互方式之上,微信公共平台的开发要提供简洁但又全面的功能,包括查询、修改、新增、删除等,即要提供可以将用户需求准确而快速地进行转化的接口功能。在保证操作的及时和准确性之上,用户数据的隐私性和安全性也是需要关注的重点。用户无论老师或者学生,都应只能对自己的数据进行查询和更新,不能越权进行操作;同时用户的信息在传输的过程中,也需要保证信息的安全性,包括信息的完整性及不被窃取。1.2.2 研究的预期成果论文预期实现教师和学生两种用户组的区别,在进行数据库操作时分别实现不同的功能,包括查询、修改、新增、删除等,同时实现通过点击自定义菜单实现具体的菜单功能。教师可以进行资料查阅、教学信息发布、群发消息等操作;学生可以进行资料查阅、个人信息更新等操作。1.2.3 论文组织结构文章组织结构如下:第1章 引言,主要讲述微信公共平台的开发背景和开发意义;第2章 相关理论和技术,主要讲述在开发过程中所用到的开发工具和开发技术;第3章 需求分析和程序设计框架,主要讲述在开发之前所做的包括用户需求分析、程序设计流程等内容的准备工作;第4章 设计与实现,主要讲述了微信公共平台接口的实现过程;第5章 结果展示,主要内容为开发完成的微信公共平台接口的使用效果截图;第6章 ,总结与进一步工作,主要内容为总结开发过程中的经验和不足。26第二章、相关理论和技术2.1 现有微信公共平台技术微信公共平台于2012年8月23日正式推出,任何组织和团体都可以申请公共账号3,曾命名为“平台媒体”和“媒体平台”,在2013年微信升级的同时,微信公共平台也跟随升级,分为服务号和订阅号两种,两种公共平台账号的权限和应用范围都有所不同。其中服务号的主旨是为用户提供服务,仅为企业组织提供申请;订阅号的主旨则是为用户发布信息,个人和企业组织都可以申请订阅号。并且只有企业组织申请的公共账号才可以进行认证。在实际使用上,服务号提供自定义菜单、少量群发消息等功能,订阅号提供大量群发消息的权限。微信同样提供开发微信公共平台接口接入第三方服务器或者新浪云的流程。第三方服务器或新浪云通过在微信公共平台开发者模式下提交网址和密钥的方式提出接入申请,微信服务器访问第三方服务器网址并向服务器发送验证信息,第三方服务器将验证信息返回即可通过验证。通过验证后,微信公共平台接口需要被调用时,微信服务器就向第三方服务器网址发送封装后的xml消息,微信公共平台接口接收到消息后再进行消息处理,返回的消息仍旧以xml格式发送给微信服务器。图2.1 微信JS-SDK调用流程此外,微信还提供基于微信内的网页开发工具包JS-SDK,通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力。2.2 SQL Server数据库技术在计算机的各种不同的应用领域中,数据库技术非常的重要,它产生于20世纪60年代末至70年代初,其主要目的是高效地存取和管理海量的数据资源。数据库技术主要研究如何存储,使用和管理数据。现如今,数据库技术已经成为计算机发展中最不可或缺的方向之一。包括微信公共平台接口在内的涉及用户信息等数据的程序开发都要使用数据库技术。SQL Server是微软公司推出的关系型数据库管理系统,具有使用方便、可伸缩性好、与相关软件集成程度高等优点,采用单进程,、多线程技术 ,。 在核心层实现数据完整性控制, 具有很强的安全保密性, ,成为目前流行的数据库应用系统的开发工具之一。在与同为微软公司开发的C#/搭配时有着天然的优势。2.3 C#技术与C#是微软公司发布的一种面向对象的高级程序设计语言,它基于.net框架,不但继承了C语言和C+的优点,还能以.net框架作为基础,实现快速开发,在进行面向对象的编程时有极大的便利性和优越性。而是.NET Framework的一部分,是微软公司提供的的一种开发Web应用程序的类库,同时还能提供网页的处理与扩充、Web service框架等工作。在使用时简单易学,使网站的大部分任务例如消息流动、网站配置等都变得十分简单。它使用多种程序设计语言来实现三层体系结构中的业务逻辑层设计,即使用ASP. N ET动态服务器页面成表示层的设计4。图2.2 运行架构图. NET开发平台创建的应用程序在通用语言运行环境底层CLR(Common Language Runtime ,简称CLR)的控制下运行。它用来加载应用程序,确认它们可以没有错误地执行,进行相应的安全许可验证,执行应用程序,然后在运行完成后将它们清除。类库集提供了使应用程序可以读写XML数据、在因特网上通信、访问数据库等类5。这些类都是实现微信公共平台接口所必须的。第三章、需求分析与程序设计框架3.1 微信公共平台用户需求分析高校教学用微信公共平台作为学校教学辅助的一个载体,用户主要是两部分:一部分是使用公共平台获取教学信息的学生,一部分是使用公共平台管理和发布教学信息的教师。对于两种用户而言,使用微信公共平台主要的目的是实现教学信息,包括作业、成绩、书籍、通知等的相互交流。因此,保证查看数据的流程快速畅通是微信公共平台的关键之处。而微信公共平台自身的优点是操作简单,可以随时随地使用,比起登陆网页版数据库或者短信通知等方式成本更低,速度更快。因此,保证微信公共平台的简单、快捷也是不容忽视的一个方面。图3.1 用户需求分析图对于学生用户而言,使用微信公共平台查阅的信息繁多,包括平时作业,课程成绩、参考书籍等,同时,因为不同学生选择的课程可能不同,所以要保证学生用户查询到的信息既没有多余重复,也没有错误遗漏;同时,学生用户也应该能够修改自己的个人信息,保证能够及时准确的更新个人信息;最后学生用户也要能够及时接收到教师用户发送的群消息。对于教师用户而言,使用微信公共平台管理的课程信息与学生信息仅限于自己所负责的科目,因此要保证教师用户能够自由操作自己负责的科目信息,无法操作不属于自己的科目。此外,教师用户对于群发消息的功能需求也很大,所以也要保证教师用户能够简单迅速的发送群消息。3.2 微信公共平台接口程序设计框架微信公共平台接口的设计要根据微信公共平台的消息处理原理来设计。腾讯公司在微信开发上提供了通用的数据规范和验证流程,对于自定义接口的开发者来说,不需要花费太多精力,只需要遵循对接规范就可以跟微信服务器实现信息交互,从而可以将开发重点集中在自定义接口的功能实现上。微信公共平台的消息处理包括用户终端、微信服务器、公共平台三个模块,由用户终端(手机或者平板等设备上的app)向微信服务器发起请求,然后微信服务器将请求转发给公共平台,公共平台接收到消息后将消息传递到自定义接口对用户的请求进行分析处理,处理之后将结果以同样的消息格式返回给服务器,服务器再将消息转发给用户终端。图3.2 微信公共平台信息流程图在整个消息处理过程中所使用的协议为http6,消息在模块之间转发的格式为xml。微信消息的xml格式样例(文本)如下: 1338841560 1234567890123456其中,ToUserName字段记录的是接收方的微信号,FromUserName字段记录的是发送方的微信号;CreatTime字段记录的是这条微信消息的创建时间;MsgType字段记录的是微信消息的格式,例如text(文本)、image(图片)、link(超链接)等等;Content字段记录的则是文本消息的主体内容;MsgId字段记录的是消息id。当接口接收到xml信息并且通过ACCESS_TOKEN验证之后,将会解析xml,获取信息里包含的内容(Content字段),从而进行进一步操作。微信公共平台要实现自己的功能需求,自定义接口的消息处理是主要部分。符合上面所说的数据模式和流程规范的接口才能够正常的使用,所以在开发自定义接口的时候,要严格遵循微信提供的规范。自定义接口的消息处理模式如下:请求接口。用户发送消息给微信服务器,微信服务器将xml格式的消息以post方式发送给公共平台接口,携带发送者信息、接收者信息、消息类型、消息内容等几个方面,接口接收到消息,并反馈给微信服务器;业务分析。微信公共平台接口根据从服务器端接收到的消息类型和消息内容的不同,分析消息所请求的服务类型,然后将获取到的消息内容转至自定义接口中不同的处理函数中进行具体的业务处理;业务处理。自定义接口对具体的内容进行处理,通过包括连接数据库获取数据库信息、连接微信服务器获取服务器信息等在内的方法得到用户需要的信息内容,然后将反馈信息转至发送接口;发送接口。将需要反馈给用户的信息进行处理和修饰,然后转成符合格式的xml信息,发送到微信服务器。微信服务器接收之后根据xml信息中包含的接收用户信息将内容转发给用户。第四章、设计与实现4.1 微信公共平台接口设计4.1.1 接口总体功能概述实现学生用户与教师用户的微信账号绑定;实现学生用户与教师用户通过发送关键词查询数据库;实现学生用户通过发送关键词修改个人信息;实现教师用户通过发送关键词更新数据库;实现教师用户通过发送关键词群发消息,并且获得消息接收人数的反馈;实现点击自定义菜单查看帮助和个人信息;实现点击自定义菜单跳转到其他网页。4.1.2 接口功能设计分析在设计具体的功能模块之前,首先要设计几个基本的操作模块,其中包括消息处理模块、数据库连接模块、消息发送模块。这几个基础模块设计完成后,在实现具体的功能模块时就可以直接调用,极大地减少了逻辑复杂度,也加快了程序处理的速度。消息初处理模块是为了将用户发起的xml格式的请求转换成可直接操作的对象实例,以供之后的接口功能实现处理。转换为具体的对象实例后,用户发起的请求中所包含的元素全都转换为对象实例的参数,而利用面向对象程序设计中类的继承的思想,不同格式的消息分别为继承了同一个消息父类的子类,根据消息格式的不同包含不同的参数,在程序模块之间的调用和传递也会更加的方便。数据库连接模块是将连接数据库返回数据的过程封装,使之后每次要连接数据库的时候,都直接调用数据库连接模块即可。在数据库连接模块中封装建立数据库连接和执行SQL语句的程序代码,最后将查询得到的数据或者插入更新影响的行数返回,以供之后的功能实现。消息发送模块是为了快速有效的将需要反馈给用户的内容转换成符合微信数据规范的xml消息而设置。消息发送模块中包含了文本消息发送、图片消息发送、超链接消息发送等等多个子模块,为的是适应不同格式的数据规范。调用消息发送模块时,将必须的参数内容传递到消息发送函数,之后经过处理将参数转变为xml文件,再调用微信官方提供的消息传递接口,将xml消息发送到微信服务器。在以上几个基本模块的基础上,分别实现具体的功能模块,即对消息初处理模块传递过来的对象实例进行判断,根据关键词确定用户请求的功能,之后根据请求功能的不同,涉及数据库操作时编写标准SQL语句,然后调用数据库连接模块,得到返回的数据后将数据处理成简单、清晰、用户体验优良的文本等格式的消息,然后交由消息发送模块发送至微信服务器。4.2 微信公共平台接口实现4.2.1 微信公共平台搭建 注册微信公共平台账号搭建公共平台一开始要申请一个微信公共平台的账号。微信公共平台的注册网址是。具体注册过程对照注册网站上的介绍和自己的功能需求进行,需要身份验证等其他工序。 启用开发者模式微信公共平台有编辑模式和开发者模式两种,要开发自定义接口,就要开启开发者模式。进入开发者模式之后要填写几个必要配置,包括TOKEN和服务器地址(URL)和EncordingASEKey。TOKEN为验证接口安全性所用的数字签名,可任意填写;服务器地址即为处理微信消息和事件的接口地址,C#&开发即使用接口的default.aspx的服务器地址;EncordingASEKey是加密消息体所用的密钥,可手动填写或自动生成。图4.1 启用开发者模式 验证服务器地址有效性首次提交信息时,微信会验证提交的服务器地址的有效性,将发送GET请求到填写的服务器地址上,请求中包含四个参数:signature(微信加密签名)、timestamp(时间戳)、nonce(随机数)、echostr(随机字符串)。首先将token、timestamp、nonce三个参数进行字典序排序,然后将三个参数字符串拼接成一个字符串进行sha1加密,将获得加密后的字符串可与signature对比,标识该请求来源于微信,然后将echostr字符串使用Response.Write函数原样返回,微信验证成功则代表接入成功。之后就进行正式的接口开发。4.2.2 数据库连接C#连接SQL SERVER有多种方法,为了达到性能最优的效果,要根据微信连接数据库的特点来选择。在微信公共平台接口开发中,进行数据库连接的特点有:建立的数据库连接是一次性的,即此次读取数据库与下次读取数据库之间是完全独立的,因此,建立一次数据库连接并且得到需要查询的数据之后,即可立即关闭数据库连接,不需要保存连接以供下一次操作;因为用户只能够查询或者更改自己的数据,所以无论是数据库的读取还是写入,涉及的数据量都很小,因为对数据的操作比较小,多以简单的查询、更新为主,不需要牺牲内存换取更快的连接速度;微信公共平台接口运行在服务器端,不涉及大数据操作时,应以运行速度为第一优先,就用户体验而言,使用微信公共平台进行查询等操作时,查询速度为第一要务。因为以上几个特点,选择连接式连接数据库,即使用SqlConnection类建立数据库连接,然后使用SqlCommand类执行sql命令,将执行命令后得到的结果(查询得到的数据或更新影响的行数)返回给其他类,随后关闭数据库连接。这种方法的好处是使用标准化sql语句,对内存的占用较小,虽然每进行一次数据库连接就要占用带宽,但是因为得到数据之后马上关闭连接,所以实际上并不会造成资源浪费。而另一种使用SQLAdapter类的连接方法,基于缓存技术,即将数据操作在内存中完成之后提交到数据库,牺牲内存换取连接速度,在大数据操作时比较合适,微信公共平台接口这种操作小数据量的Web应用,还是SqlConnection类加SqlCommand类的连接方式更合适。示例代码如下:public SqlDataReader GetDataReader(string query)SqlConnection sqlcon = new SqlConnection(server=IP地址;uid=账号;pwd=密码;database=数据库名);sqlcon.Open();SqlCommand sqlcmd = new SqlCommand(query,sqlcon);SqlDataReader sr = sqlcmd.ExecuteReader();sqlcon.Close();return sr;之后每次需要读取数据库操作时,就调用GetDataReader函数。进行插入或者更新操作需要返回的值应该是整型数,为执行ExecuteNonQuery函数的返回值,将GetDataReader稍加改写,就可以得到用于执行插入或者更新的新函数了。尽管高校教学用微信公共平台连接的是已有的数据库,但是为了适应部分新的需求,仍然需要增加部分内容。数据库中需要查看和修改的数据已经十分完整,需要添加的是用户账号相关的内容。对于学生用户而言,添加一列微信号的数据位,使公共平台应用后能够绑定用户微信号;对于教师用户而言,因之前没有教师账号的表,所以添加一个新的教师信息表,主要内容为教师工号、教师姓名、教师科目、密码、微信号,以供教师绑定微信号。调整过后的数据库关系模型如下图:图4.2 数据库结构图4.2.3 具体功能模块实现 ACCESS_TOKEN使用方式ACCESS_TOKEN是微信调用通用接口的通行证,必须通过ACCESS_TOKEN验证才能调用通用接口。验证ACCESS_TOKEN的方法是在向微信服务器发起调用通用接口请求时,将ACCESS_TOKEN一起发送到微信服务器。通用接口是微信已经定义好的一些常用接口,包括更改用户所在分组、文件上传等等。调用微信已经规定好的通用接口的好处是一些涉及微信服务器端的操作减少代码失误的可能,还可以减少编程的工作量。获取ACCESS_TOKEN的方法是以http协议携带几个参数发送get请求到固定网址(/cgi-bin/token?grant_type=0&appid=1&secret=2),参数通过验证之后,微信服务器会返回一个JSON数据包给公共平台接口,格式为“access_token”:”ACCESS_TOKEN”,”expires_in”:7200。其中access_token就是获取到的凭证,expires_in为凭证的有效时间,单位是秒。得到数据包之后进行解析,之后每次调用通用接口都需要使用这个ACCESS_TOKEN进行验证7。图4.3 验证ACCESS_TOKEN流程图ACCESS_TOKEN是调用通用接口的通行证,而一个ACCESS_TOKEN的有效时间是两小时,在凭证有效期内不需要重复获取,重复获取会导致之前获取的凭证失效。所以为了保证通用接口能够正常的调用,必须保证ACCESS_TOKEN通过验证。在进行ACCESS_TOKEN验证的时候,有两种使用方法,一种是每次进行ACCESS_TOKEN验证都重新获取一次,这种方法的好处是操作简单,运行速度快,占用内存较小,缺点是ACCESS_TOKEN每日获取次数有上限,频繁获取可能会导致ACCESS_TOKEN不可用;另一种方法是将获取到的ACCESS_TOKEN储存在数据库或者临时文件中,保证获取到的凭证能最大效率的利用,缺点是每次调用ACCESS_TOKEN都要访问数据库或者临时文件,速度慢且程序复杂。两种方法适用范围不同,后者适用于访问人数众多、调用通用接口频繁、以主动推送消息为主的微信公共平台(例如媒体新闻订阅号),前者适用于以特定功能为主导、用户群体特殊的公共平台(例如网店微信平台支付)。以高校教学为目的的微信公共平台的用户群体主要为学生,功能以查询教学信息、发布教学通知为主,公共平台主动推送消息的频率低,调用通用接口的频率不高,可以选择第一种方式。 用户请求消息初处理与分配因为所有的用户请求都是以http post方式发送到公共平台的,而xml格式的消息对于操作来说有极大的不便,因此,接收到用户发送过来的xml消息后,首先要对xml消息进行初步处理,将xml消息转化为自定义的消息对象,才能进行进一步的分析反馈。将xml消息转换成消息对象的优点是充分利用面向对象的思想的特点,将对消息的判断和处理全都转变为对消息实体对象的特征的判断和处理,一方面在操作时保证更加快捷和清晰,另一方面对象在不同模块之间的传递也变得更为简单。图4.4 用户请求消息初处理流程图首先声明一个ReceiveMessageBase的基类,包含所有类型的消息所含的共同变量:MsgType(消息类型)、FromUserName(发送方id)、ToUserName(接收方id)、CreatTime(创建时间)、MsgBody(消息原文)等。其中MsgType为枚举类型,包含text(文本)、imge(图片)、voice(声音)、link(超链接)、event(事件)等类型。创建基类的目的是将所有消息类型中共通的内容提前定义,在之后继承基类的子类中不需要重复声明共通的变量,在之后进行修改和添加时也变得更为简单。然后根据不同的消息类型,分别声明继承了ReceiveMessageBase类的子类,增加具体类型所对应的变量。例如文本消息类TextReceiveMessage类在继承的同时,增加了Content变量,储存文本消息的消息内容。接收到微信服务器发来的xml消息后,首先找到MsgType节点,判断消息类型,然后声明对应的对象,将解析后的xml节点内容分别赋给对应的变量。为了之后的函数调用操作方便,将消息中最主要的内容(文本消息中的消息文本、图片消息中的图片url等)全部存放在MsgBody变量中。之后将完成的消息对象传递给下一个模块,详细的消息处理都对这个对象进行。 用户微信账号绑定与解除绑定用户使用微信公共平台的功能之前,首先要将微信账号与数据库中的学生信息或者教师信息绑定。绑定学生信息的用户才能使用公共平台的功能,保证了数据库中信息的安全性和用户的唯一性,即每个学生只能使用一个微信账号来访问公共平台,每个微信账号也只能访问自己的数据,无法查阅其他学生的资料;而教师类用户可以对数据库中具体课程的数据进行增、删、查、改的多种操作,因此在使用微信公共平台的功能之前首先绑定账号保证了数据的安全性。图4.5 用户账号绑定流程图因为绑定微信账号需要提交学号/工号和密码,所以选择用户发送文本消息方式进行绑定。当用户发送“绑定/解绑 学号 密码”形式的文本消息到公共平台,公共平台接口即可接收到用户发来的绑定请求,在将xml消息转换成TextReceiveMessage消息对象的时候,就能执行绑定操作了。xml信息中的Content节点即消息的主体内容,在TextReceiveMessage对象中存放在string格式的MsgBody变量里。对这个变量进行字符串分割,分离得到“绑定/解绑”、“学号”和“密码”三个字符串。对第一个字符串判定确保当前执行的是账号绑定(或解除绑定)操作。账号和密码则用于与数据库中信息相匹配。在绑定操作之前,首先在数据库中查询请求用户的微信号是否存在,即是否已经绑定到某个学号,若尚未绑定,则判断请求消息中的学号是否已经有微信号绑定,若没有微信号绑定则判断密码是否正确。全部信息匹配完毕之后若没有错误,则将请求用户的微信号储存在数据库中,与对应学号绑定完毕;若绑定步骤中出现问题,则将具体问题的信息返回给请求用户。解除绑定的操作类似,请求用户发送来的学号、密码、微信号必须与数据库中的信息一一对应,之后将请求消息发来的学号对应的微信号清空,即解除绑定完毕。教师账号和学生账号的操作基本类同。 用户查询资料综合微信手机版的操作局限性与查询数据类型的多样化,用户使用微信公共平台查询时,仍然是以发送文本消息的方式进行查询。用户发送“查询 内容 附加条件(可省略)”的文本消息到公共平台,经过消息初处理之后,将得到的消息示例传递给业务处理模块。图4.6 用户资料查询流程图在业务处理模块,先使用split函数对消息实体内容,即MsgBody变量中储存的字符串以空格字符为界限进行切割处理,得到一个新的字符串。当判断切割后的字符串数组中的第一个值为“查询”时,即可进入查询功能的分支模块。进入查询模块后,即可根据用户请求中的查询内容和查询条件,编写SQL语句。若是用户没有提交查询条件,则按照默认的查询条件进行处理。编写查询语句时,直接使用用户的微信号,也就是消息对象中的FromUserName作为关键的查询条件。因此,使用查询功能之前,必须先进行微信号绑定,才能确保查询到的数据准确完整。将标准SQL语句传递到数据库连接模块,从数据库返回SqlDataReader数据之后,再对返回数据做进一步处理。根据查询内容的不同,对SqlDataReader数据的处理也不同。若查询的数据是以行方式返回结果的,例如作业列表,则将返回数据按照顺序排列即可;若查询的数据是以列方式返回结果的,例如个人资料,则还要将列名所对应的中文含义与列中的信息一一匹配。将返回数据处理后得到一个字符串,最后在数据前后分别添加友好的客服内容,即可将数据传递到文本消息发送模块。对返回数据进行细致处理的目的是提高用户友好性,因为数据库中储存的数据的可读性不高,直接返回给用户会造成极大地阅读困难,经过处理后的数据则十分利于阅读,方便用户获得有效信息和进一步操作。文本消息发送模块是一个封装好的xml生成类,将发送方与接收方的微信号(即用户请求中的接收方与发送方)、发送内容一起传递到发送模块,即可生成符合微信数据规范的xml文件,然后提交到微信服务器,由微信服务器发送给微信用户。作为xml节点中必须的消息生成时间,则在发送模块中由时间生成函数自动生成。因为不同类型的微信消息的xml格式不同,所以发送图片、图文、音频、视频、超链接等格式的消息时,要调用其他的消息发送模块。所有消息发送模块可以被随意调用,保证其他业务消息发送时不必再考虑复杂的格式问题。 教师用户信息管理与群发消息为了保证信息的安全性,学生用户大多数情况下都只能使用查询功能,只能修改自己的个人资料。而与学生用户相对应的,教师用户可以修改所负责的科目的课程信息、作业信息、成绩表等等数据,这些数据的插入和修改也可以通过微信公共平台来实现。图4.7 教师功能流程图与学生用户查询类似,教师用户绑定微信号之后,即可通过发送关键词的方式操作公共平台。发送“插入/修改 项目 值 条件(可省略)”的文本消息到微信公共平台,经过消息初处理后,将MsgBody中的字符串切割,之后根据用户请求的功能是插入或者修改分别转至不同的功能模块。转移到具体的功能模块后,再根据用户附加的请求条件填写SQL语句,调用数据库连接模块执行SQL语句。执行插入或者修改功能时,数据库连接模块将会返回SQL语句所影响的行数,若返回行数是0,则证明插入数据失败或者没有符合修改条件的数据。将返回的影响行数包装后回馈给用户,即可使用户清晰地了解数据操作是否成功,若操作失败会提醒用户可能出现的问题,方便用户进行修改。同时,用户也可以再次发送查看的关键词,来查看数据是否已经更新到数据库。对于教师用户而言,发送群通知是经常使用的一项功能,可以用来发送通知和公告,所以在微信公共平台接口中向教师用户提供群发消息的功能是必要的。教师用户利用微信公共平台发送群发消息的方法仍然是向微信公共平台发送“群发 消息内容”的文本信息,微信公共平台接收到经过微信服务器转发来的xml文件后,仍旧按照消息处理流程,将xml消息转化为TextReceiveMessage对象,然后转入文本消息处理模块。在文本消息处理模块,将MsgBody中的文本使用split函数切割后,得到一个字符串数组。当判断字符串数组的第一个值为“群发”时,即可转入群发消息模块,进行群发消息的操作。在群发消息模块,首先调用数据库连接模块,查询发起群发请求的教师用户的姓名与教授的全部学生用户的微信号,得到教师姓名后对教师发来的群发消息进行包装,增加发起请求的教师用户的姓名和发送时间。最后进入一个循环,在循环中调用文本消息发送模块,依次向数据库连接模块返回的学生用户的微信号发送消息。消息全部发送完毕后,向发起请求的教师用户回馈发送结果,包括是否发送成功以及接收信息的学生人数。 自定义菜单事件响应微信公共平台提供自定义菜单的功能,使用自定义菜单在一定程度上摆脱了只能靠发送文字等待公共平台反馈的互动方式,直接点击菜单即可实现相关功能。将一些常用的功能转换为自定义菜单,能够实现更好的用户友好性,也节省了响应用户请求的条件判断程序。微信公共平台的自定义菜单有click和view两种触发方式,前者为用户点击菜单时,向公共平台发送一个事件消息,后者则是直接跳转到事先确定的网址。两者有不同的应用。一般来说,在微信范畴内的菜单事件或者需要提交部分数据的外网触发事件多数以click方式进行,在代码编写时有更大的自由度和完善性;普通的外网触发事件可以选择view方式,比起click方式的跳转连接,view方式更加快捷,减少了在服务器与公共平台之间的消息交互和接口调用,缺点是自主性不足,局限性很大。菜单在使用之前首先要创建。创建菜单要在微信网页版的开发者模式中执行,使用微信提供的网页工具,按照规定的数据格式提交创建菜单的代码,将菜单名、菜单类别(click或view)、菜单关键值(若是click类型的菜单则为菜单点击事件的判别关键词,若是view类型的菜单则为直接跳转的网页链接)。图4.8 自定义菜单流程图在高校教学微信公共平台中,click方式的自定义菜单主要用于查看帮助和个人信息确认。点击查看菜单,就会发送一个xml格式的事件信息到微信公共平台。经过消息初处理后,xml消息会转换为Eve
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 尽职调查员岗位安全技术规程
- 公司加气混凝土配料浇注工合规化技术规程
- 铸造造型(芯)工防护知识考核试卷及答案
- 风力发电机检修工产品服务标准掌握考核试卷及答案
- 溶剂蒸馏工岗位工艺作业技术规程
- 公司模型制作工工艺作业技术规程
- 变压器铁芯叠装工设备安全技术规程
- 公司矿灯和自救器管理工岗位标准化技术规程
- 公司珍珠岩加工工岗位标准化技术规程
- 2025年人保财险陕西省分公司招聘(57人)模拟试卷有完整答案详解
- 编码安全培训课件
- 郴州精轧螺纹钢施工方案
- 2025年中华人民共和国治安管理处罚法知识竞赛考试练习题库(160题)
- 2025中国半钢轮胎市场白皮书
- 2024-2025学年人教版8年级数学上册《三角形》专项测试试卷(含答案详解版)
- 2025年人教版8年级数学上册《三角形》章节练习试卷
- 金缕玉衣教学课件
- 2025年孕产科产前检测技术应用考核答案及解析
- 第3章立体的投影及表面交线
- 绿色低碳人才培养体系构建:环境工程硕士教育模式创新研究
- 产业园园区发展专题汇报
评论
0/150
提交评论