基于微信公众平台和Moodle的微课堂系统的设计与实现
2018-03-29高曼如
摘要:在调研国内用户对移动学习需求的基础上,利用Moodle系统在课程管理和教学管理中丰富完善的功能,综合考虑国内用户的实际使用需求与现有技术,设计了基于微信公众平台的微课堂系统。通过使用微信公众平台的开放接口和WEB开发技术,应用MVC框架和B/S架构进行系统实现,与Moodle系统进行了对接,良好的扩展了Moodle系统PC端的功能,满足了用户通过微信在移动端对Moodle系统的便利化使用的需求。
关键词:微课堂系统;Moodle微信端;微信公众平台;Moodle与微信整合;
中图分类号:TP311.5 文献标识码:B DOI:10.3969/j.issn.1003-6970.2017.08.018
本文著录格式:高曼如.基于微信公众平台和Moodle的微课堂系统的设计与实现[J].软件,2017,38(8):88-92
引言
近年来,随着高性能智能手机和平板电脑等移动终端设备的迅速普及,人们可以随时随地进行社交化的移动学习。
Moodle是一个开源课程管理系统(CMS),以免費、开源、基础功能完善的特点,在全球的e-learning系统市场中具有较高的占有率。Moodle可以实现在各种学习情境中创建在线学习,包含测试、论坛、作业、聊天等模块,并具有大量功能丰富的第三方插件。PC端浏览器一直是Moodle的
各功能使用的最佳体验端,Moodle2.2版本开始,对移动设备访问的支持进行了提升,可以根据访问终端的不同呈现出不同的界面布局,后续推出了APP应用,但由于IOS的APP更新限制,以及国内用户与西方用户的使用习惯不同,在移动端的使用仍然不便利,使得Moodle在国内用户的移动端中一直无法得到很好的应用。
微信是腾讯公司在2011年1月推出的在手机、平板、PC等设备端使用的即时通讯软件,目前在国内的同类软件中市场占有率最大。微信已不单单只是一个充满创新功能的手机应用,它已成为中国电子革命的代表,覆盖90%以上的智能手机,并成为人们生活中不可或缺的日常使用工具。微信公众平台是建立在微信基础上的一种全新的自媒体和服务平台,利用微信提供的功能可以实现信息的推送及与用户多种形式的交互功能,实现微信与其他应用的对接。
微信在人们生活中使用的便利性早已深入人心,微信公众号的数量已超过百万级,同时微信公众平台的各类功能接口越发完善和创新,服务领域也在不断拓展,因此,基于Moodle系统,整合微信公众平台,充分利用两者的优势,研究和开发出服务于移动学习领域的一体化系统,具有很高的价值。
1 系统支撑平台
Moodle系统作为全球市场占有率最大的E-LEARNING系统,它在PC浏览器端的功能是非常全面强大的,不仅拥有完善的基础功能,还拥有大量行业内领先的教学相关插件,如,在线考试插件、论文查重插件、流媒体应用插件等等,在行业里都被广泛应用。
微信公众平台为开发者提供了第三方开发接口,基于此平台,企业和个人均可根据自身功能需求制定适合自身的公众号,可开发出媒体传播、电子商务或企业信息化管理等多种类型的第三方应用,进而实现以文字、图片、语音、视频、图文消息对其特定群体的管理,并可与其进行有效的互动与沟通。
基于微信公众平台和Moodle系统研发的课程学习平台的优势:
(1)易用性强。微信近几年已成为了我们中国人最为熟悉的应用,在微信公众平台中呈现Moodle系统中的各类教学资源与交互式的教学活动,对学习者来说,是非常的习惯与便利的。又由于我们中国人几乎每天,甚至时时刻刻都开启着微信,将Moodle系统中各类消息提醒通过微信公众平台进行信息推送提醒,它们能够及时的提醒到用户。
(2)跨平台性。目前微信支持iOS、Android、Windows Phone、Symbian、Black Berry等智能手机操作系统,这几乎囊括了全球用户所使用的各种移动终端设备,因此,通过微信内置浏览器来使用微课平台,能够保障学习内容在不同移动终端上呈现出基本相同的结果和操作方式,这为用户带来方便,也节省了为不同操作系统开发单独软件的大量成本和时间。
(3)优秀的可扩展性。基于微信公众平台的应用,其核心使用的是微信内置浏览器,并结合微信公众平台第三方接口提供的丰富的用户交互功能,所开发的B/S结构的系统,因此可以充分利用移动Web技术对平台的功能进行扩展,实现更加强大的功目巨。
(4)对现有资源的充分利用。鉴于Moodle作为一款开源的移动学习平台己经在各种领域得到了广泛的利用,在Moodle的基础上己经有了很多高质量的教学资源。因此在开发移动学习平台的过程中,必须对现有资源进行有效的利用,避免重复劳动。
(5)便于运维、更新升级。对于手机APP应用来说,一旦系统功能需求变动,用户就必须要进行下载更新升级,虽然目前用户可以在进入APP时就能够自动进行更新,但仍然需要一定的等待时间,特别是对于用户量较大的IOS系统,APP的每一次更新,都需要开发者先提交更新代码到苹果公司官网进行审核,这都需要一定的周期,运维成本较大。而基于微信公众平台的应用,采用的是B/S结构,只需要对自己的服务器端进行更新,很大限度的节省了运维管理上的成本。
2 系统总体设计
2.1 系统整体框架
如图1所示,本系统由微信客户端、微信公众平台、系统WEB服务端、Moodle系统服务端、Moodle数据库五部分构成。微信客户端作为用户使用本系统的统一入口,以微信内置浏览器对系统进行访问使用,同时向公众平台发送和接收各类超媒体信息(文字、图片、音频、视频);系统WEB服务器主要功能有,展示和操作Moodle的资源、活动和信息,调用和接收微信公众平台的接口,完成相应的功能,调用和接收Moodle服务端的Mobile接口,对Moodle数据库做相应的操作。
2.2 系统体系结构
系统采用B/S三层架构,服务器采用LAMP(Lmux+Apache+My SQL+PHP)环境,三层架构如图2所示。
表示层:通过采用Bootstrap+jquery+Html+JS等
相关技术,为用户提供友好便利的交互式操作界面。
业务逻辑层:主要在服务器端使用PHP语言完成业务逻辑的处理,部分在微信内置浏览器端使用JavaScript技术进行处理。响应表示层的业务操作请求,调用数据访问层的构件来操作相关数据,对返回的结果数据通过表示层展现。
数据访问层:本系统采用MySQL数据库来实现数据的存取。
2.3 系统功能
根据用户需求、Moodle系统的业务操作逻辑和微信公众平台提供的开发接口,本系统可分为四大功能模块,如图3所示:用户帐户模块、课程与资源活动处理模块、消息处理模块、学生考勤模块。
用户帐户模块包含微信授权登录(即绑定登录)、解绑、退出,个人信息的获取、修改等功能;课程与资源活动处理模块主要对Moodle系统中的各类教学资源和活动按移动端的界面进行展示,并接收处理用户的相应操作;消息处理模块主要利用微信公众平台的消息管理类别中的接口,通过微信端向用户推送消息,和接收用户在微信端的超媒体消息;学生考勤模块主要用于在微信端实现对学生上课的自动考勤,包含通过微信公众平台的GPS定位考勤和扫码考勤,以及直接通过本系统实现的密码考勤。
3 关键模块实现
3.1 课程与资源活动处理模块
Moodle系统将教学中的各种电子材料按照文件、音频、视频、URL、网页、SCORM课件等资源进行分类或在课程首页混合展示,同时提供了测验、作业、讨论区、互动评价、问卷、投票等丰富的活动。课程与资源活动处理模块按照移动端的用户操作习惯,对各类资源、活动进行展示,包含①课程列表界面;②进入课程后的首页界面;③课程资源、活动的分类界面;④进入活动后的各操作界面。以作业活动为例,教师可先在PC端建立作业活动,系统向学生微信端发送相关提醒,学生则可通过PC端或微信端浏览,然后提交自己的作业,则教师在PC端Moodle系统中查看列表和进行批改,相应的批改结果提醒将推送到学生微信端,该过程的时序图如图4所示:
3.2 消息处理模块
消息处理模块主要利用微信公众平台的消息管理类别中的接口,通过微信端向用户推送消息,以及接收用户在微信端的超媒体消息。当Moodle系统接收到相应的消息推送业务时,向消息处理构件服务器提交相应数据,消息处理构件服务器储存并调用微信公众平台相应的消息推送接口,并记录调用结果,然后微信公众平台会向用户微信端推送提醒,这是本系统向用户推送提醒的过程;而接收用户信息的过程是,当用户向微信公众平台发送超媒体消息时,微信公众平台会主动向消息处理构件提交用户的信息,消息处理构件再根据这些信息去调用Moodle系统相应接口完成业务处理,其时序图如图5所示:
3.3 考勤模块
考勤模块用于师生在课堂教学时,通过手机等移动端设备快速的完成考勤。该模块包含GPS定位考勤、扫码考勤、限时密码考勤功能块。以GPS定位考勤为例,教师通过微信进入微课堂系统,新建学生考勤,微课堂系统则通过消息处理模块调用微信公众平台的消息推送接口,向学生微信端发送考勤提醒,学生通过消息链接或直接登录系统进入考勤界面,考勤界面通过调用微信公众平台的GPS定位接口,进行位置的对比判断完成考勤,教师最后查看整体的考勤情况,时序图如图6所示。
4 关键技术实现
4.1 微信接口的调用凭据获取
公众号的全局唯一接口调用凭据的变量名为access_token,每次的接口调用都需要使用access_token,应用系统需要预留512个字符空间进行妥善保存。access_token的有效期目前为2个小时,需要定时的刷新,新获取的将导致上一次获取的access_token失效。
本系统通过curl扩展调用HTTPS的GET请求,来获取access_token,核心代码如下:
$url=
https://api.weixin.qq.com/cgi-bin/token7grant—type=client_credential&appid;=APPID&secret;=APPSECRET?f;$ch=curl_init();
curl_setopt($ch,CURLOPTURL,$url);
curl_setopt($ch,CURLOPT—RETURNTTRANSFER^1);curl_setopt($ch?CURLOPTHEADER,0);
$res=curl_exec($ch);curl_close($ch);
代碼中用到的两个参数APPLD、APPSECRET,
在“微信公众平台--开发--基本配置”页中获取,同时,需要提前将服务器IP地址添加到IP白名单中。
调用获取access_token成功时,微信公众平台
服务器会返回下述JSON包:
{ffaccesstoken":ffACCESSTOKENn;fexpiresinM:7200}
access_token为获取到的凭证,expires_in为凭证有效时间(单位:秒);获取失败时则有相应的错误代码和错误信息。
本系统按照微信公众号的开发要求与建议,采用中控服务器统一获取和刷新access_token,来避免各自的调用刷新,同时考虑到极少数由于网络稳定性问题而无法获取到access_token的情况,加入了多次尝试获取与故障提醒,整体的代码逻辑实现流程如图7所示。
4.2 GPS定位考勤的實现
该功能需要通过微信公众平台的JS-SDK来实现,微信JS-SDK是微信公众平台面向WEB开发提供的基于微信的开发工具包。使用JS-SDK,需要按以下步骤进行:1.绑定域名2.引入JS文件3.通过config接口注入权限验证配置。成功通过后,即可开始使用JS-SDK相应的功能。
获取地理位置与位置提交的前端代码如下:
wx.getLocation({type:wgs84,//默认为wgs84的gps坐标,如果要返
回直接给openLocation用的火星坐标,可传入gcj02success:function(res){
varlatitude=res.latitude;//讳度,浮点数,范围为90?-90
varlongitude=res.longitude;//经度,浮点数,
范围为180?-180。
varspeed=res.speed;//速度,以米/每秒计
varaccuracy=res.accuracy;//位置精度$.ajax({
method:POSTurl:/index.php/locat/handle,data:{latitude:latitude,longitude:longitude,speed:speed?accuracy:accuracy}
});
}
});
代码中的success函数中,加入JQUERYAJAX,
以提交前端获取到的坐标数据到服务器。服务器端接收位置数据,并与相应教师开启的GPS考勤的位置数据进行经纬度的对比验证,从而完成考勤验证。
5 结语
本系统是基于微信公众平台和Moodle系统设计实现的移动端微课堂系统,利用Moodle系统在课程管理和教学管理中丰富完善的功能和微信公众平台强大的开放接口,为用户在进行移动学习时提供了便利化的方式。同时系统实现了基于微信公众平台的消息推送收取和定位考勤等功能,扩展了Moodle系统的功能,使得师生用户能够及时的接收相关的提醒、快捷的参与教学活动,极大地提升了师生对学习系统的使用效果。该系统在某高校实施后,运行良好,完成了项目初期的需求,未来以期加入对师生教与学的大数据分析预测、课程评价、人工智能教学等模块功能,进一步挖掘移动端师生行为数据的价值。