基于Moodle 与微信的协作式泛在学习环境构建与应用

2021-03-08 08:08
关键词:网关协作消息

陈 彦

(永州职业技术学院, 湖南 永州 425100)

1 前言

泛在学习 (U-Learning) 即无时无刻地沟通、 无处不在的学习, 是一种支持学习者在任意时间 (Any Time)、 任意地点 (Any Place), 以任意方式 (Any Way) 和任意设备 (Any Device)进行的学习。 本文所指 “协作式泛在学习”, 强调其协作性, 即通过无时无刻地沟通, 跨越时空限制形成虚拟学习共同体, 使得学习者之间的协作知识建构成学习的主要形式。 协作式泛在学习环境是一个拥有泛在学习资源、 提供泛在学习和交流工具、 支持泛在的协作学习活动的学习环境。

Moodle (Modular Object-Oriented Dynamic Learning Environment 模块化面向对象的动态学习环境) 作为一种基于建构主义学习理论的在线教学平台, 不仅在技术层面支持构建网络学习共同体, 而且也注重从社会性交互维度来推动网络学习共同体, 以实现协作式学习[1]。 然而并不能达到协作式泛在学习环境的要求, 原因有二: 一是Moodle 系统对移动应用支持弱, 二是Moodle系统本身对用户的黏合度低。 为此, 我们基于Moodle 系统和微信进行二次开发, 以Moodle 作为学习资源平台及电脑客户端, 以微信作为课程移动客户端, 构建一个协作式泛在学习系统, 借助于Moodle 平台的学习资源管理优势与微信平台的社交化优势, 增强系统对学习者的黏合度,以提高学习者的学习兴趣和参与度, 并将系统应用于教学实践, 评价学习成果, 提出有效的泛在学习模式。 通过推广应用, 最终促进泛在、 移动、 个性化学习方式的形成。

2 系统设计

本系统主要是开发一个 “泛在学习” 微信公众平台 (以下简称泛在学习平台), 在其中集成Moodle 在线学习功能, 打造协作式泛在学习环境。

2.1 系统需求分析

Moodle 本身的功能完备, 支持系统管理员、课程管理员、 教师、 学生等几种主要角色。 在Moodle 的Web 端, 系统管理员可以进行网站管理、 课程与教学资源管理; 教师可以进行教学设计和教学管理; 学生可以进行在线学习、 评价和交流。 而 “泛在学习平台” 专注构建协作式泛在学习环境, 并不涉及Moodle 网站管理、 课程管理、 资源管理和用户管理。 因此主要是针对学生角色进行二次开发, 主要包含以下功能: 一是我的微学, 如学习账号登录、 微信账号绑定、 学习者账号信息显示与编辑、 学习者活动轨迹等; 二是学习资源管理, 如学习者所选课程及学习进度、 课程成绩报告、 课程列表查询与选择等; 三是学习活动管理, 如学习活动提醒、 作业、 测试、 专题讨论、 论坛等。

2.2 系统架构设计

根据微信公众平台的通信机制、 Moodle 服务器工作原理以及 “泛在学习平台” 的功能需求, 可以设计系统总体架构如图2 所示:

图2 系统总体架构

(1) 应用层: 包含 “Web 应用端” 和 “微信应用端” 两个部分。 Web 应用端访问的是表示层的web 网站平台。 微信应用端通过微信公众平台来访问Moodle 中的课程等各种资源。 微信向微信公众平台发出请求、 接收消息都由腾讯微信服务器转发, 必须符合微信公众平台的通信机制。在移动互联日益普及的今天, 微信已经成为一种数字化生活方式, 不仅改变了人们沟通交流的方式, 甚至改变了商业模式、 工作模式, 自然也能成为最好的泛在学习环境, 我们将 “泛在学习”公众平台集成微信中, 让学习者关注, 借此实现生活、 学习、 交流讨论的自然切换。

(2) 表示层: 包含 “Moodle Web 网站平台”和 “泛在学习平台” 两个部分。 其中 “Web 网站平台” 是Moodle 的原生平台, 主要的功能是为学习者提供在线学习环境, 同时还包括各种管理功能, 如网站管理、 课程资源的管理、 用户角色管理、 学习活动管理等。 为支持移动应用, 我们利用响应式网站技术重构Moodle Web 网站平台, 使之自适应支持PC、 平板和手机等各种终端设备。 “泛在学习平台” 是基于微信公众平台的通信机制, 利用Moodle 提供的Web service 接口对Moodle 系统进行二次开发, 以实现 “泛在学习平台” 的功能需求。 它接受来自应用层的请求, 这一请求发自微信客户端, 经腾讯服务器转发, 符合微信公众平台接口规范, 在微信网关中进行处理和转发。

(3) 业务逻辑层: 业务逻辑层是表示层和数据服务层之间的桥梁, 是系统架构的核心部分,用来处理业务逻辑, 进行数据传输。 本研究是基于微信和Moodle 的二次开发, 并不重构Moodle的业务逻辑。 但是要充分利用Moodle 系统提供的Web Service API 接口, 调用Moodle 的业务逻辑来实现微信 “泛在学习平台” 的各项功能。 因此, 需要在Moodle 中启用Web Service 功能。

3 系统实现

3.1 moodle 服务器部署

Moodle 是 PHP 系统, 我们采用 LAMP 服务架构 (Linux+Apache+MySQL+PHP 架构) 部署Moodle 服务器。 针对Apache 服务器静态页面执行效率较低下, 页面缓存效率不高等不足, 特别引入 Nginx (engine x) 反向代理 web 服务器,来处理静态的HTML 页面, 进行PHP 页面缓存与转发。 为接入微信公众平台, Moodle 服务器需支持外网web 访问, 且仅支持80 端或443 端口 (分别对应 http 和 https。)。

3.2 微信公众平台开发接入

微信公众平台提供编辑模式和开发模式两种方式。 微信 “泛在学习平台” 要接入 Moodle 服务器, 并进行深度定制和开发, 因此采用开发模式。 开发模式需要先进行有效性验证, 验证过程如下: 在微信公众平台管理界面填写服务器配置, 包括 URL、 Token、 EncodingAESKey 等参数 (其中URL 即是图1 所示 “微信消息处理器”的访问地址)。 微信公众平台配置完成之后就会向URL 发送一个有效性验证请求, URL 服务器端需进行验证并返回结果。 有效性验证请求包含如下参数。

图1 泛在学习平台功能模块设计

表1 接入验证消息参数

续表

“微信消息处理器” 应包含如下验证代码。

验证无误, 需原样返回echostr 参数内容,即完成微信公众号的接入。

3.3 微信网关

微信网关 (图1 所示) 负责微信端与服务器端的交互通信。

(1) 消息接收。 微信网关接收来自微信端的消息请求, 该消息实际上是由微信服务器以POST 请求方式转发而来。 微信服务器基于一定的规则将消息封装成XML 形式。 格式如下

上述代码省略号部分, 由具体的消息类型决定, 消息类型分为普通消息和事件推送消息2 大类。 其中普通消息包括: 文本消息、 图片消息、语音消息、 视频消息、 地理位置消息、 链接消息6 种。 事件推送消息包括: 关注/取消关注事件、扫描带参数二维码事件、 上报地理位置事件、 自定义菜单事件、 点击菜单拉取消息时的事件推送、 点击菜单跳转链接时的事件推送6 种。

(2) 消息有效性验证。 当微信网关接收到消息时, 首先需要验证消息的有效性, 通过验证消息中的 token、 timestamp、 nonce 三个参数, 来确认其来自微信公众平台服务器。 验证方法与上节微信公众平台开发接入验证相同。 微信网关完成消息有效性验证之后, 即可获取XML 消息中的内容, 对消息内容处理, 并根据情况交给相应的程序进行处理。

(3) 消息回复。 服务器回复给用户的消息,也要先提交给微信网关进行处理。 微信公众平台支持的6 种回复消息: 文本消息、 回复图片消息、 语音消息、 视频消息、 音乐消息和图文消息。 这6 种消息的XML 格式与上述请求消息类似。 微信网关需接格式要求, 对回复消息进行XML 封闭, 完成之交再回复给微信用户端。

3.4 微信Moodle 模块

微信Moodle 模块主要实现 “泛在学习平台”的各项功能。 微信网关根据用户请求调用微信Moodle 模块中相应的模块进行处理, 并将处理结果返回微信网关进行XML 封装, 再返回给微信客户端。 微信Moodle 模块实现的功能主要包括三个部分: 账号信息功能, 如登录、 微信绑定等; 学习资源管理, 如课程列表、 成绩报告等;学习活动管理, 如学习活动提醒、 在线课堂、 作业等。 返回的消息部分以微信图片信息返回、 部分以网页形式返回。

(1) Moodle 网络服务 (Web Services)。 微信Moodle 模块需通过Moodle 提供的网络服务调用底层的业务处理逻辑进行处理 (如图2 所示)。在本系统中用到的Moodle 网络服务有: 用户API (core_user)、 权限 PAI (core_auth)、 日期API (core_calendar)、 课程 API (core_course)、课程完成进度 API (core_completion)、 课程成绩API (core_grades) 等。

(2) 微信用户注册、 绑定与登录。 泛在学习平台需要实现微信账号和Moodle 账号的关联。为此首先要建一个账号关联数据表mdl_user_wx。其字段设为: id、 userid (Moodle 用户账号) 和openid (微信用户), 并将 userid 设置为主键。 利用userid 跟Moodle 的用户数据表mdl_user 建立连接。 在微信中进行用户注册时, 系统要自动将微信 openid 与新注册用户 userid 写入 mdl_user_wx 数据表。 Moodle 用户第一次登录泛在学习平台时, 系统引导用户与微信绑定, 即将Moodle 账号的 userid 与微信 openid, 写入 mdl_user_wx数据表。 之后可以用微信账号直接登录泛在学习平台。 代码实现时需要用到Moodle 网络服务的用户 API (core_user) 和权限 PAI (core_auth)。其他模块功能的实现在此不再赘述。

(3) 响应式 Web 界面实现。 响应式 Web 技术即是自适应不同终端的网站开发技术, 同样的网页内容会以与终端屏幕相适应的形式显示出来。 在本系统中我们使用Bootstrap 框架实现响应式Web 界面。 为微信中访问网页, 需通过公众号的微信网页授权机制, 来获取用户基本信息, 进而实现业务逻辑。

4 系统应用

基于Moodle 和微信开发协作式泛在学习环境, 不仅有效降低了技术难度, 缩短了开发周期, 而且兼容学校前期已建成Moodle 网络课程平台, 教师和学生均可平滑过渡到新系统, 很好地解决跨平台学习的一致性问题。 通过Moodle实现学习内容的泛在性、 利用微信实现学习活动的泛在性, 在学习应用实践中, 可以看到新平台的优势, 学习者不需要安装新的应用APP, 仅使用最熟悉微信就能进行在线学习, 提升的在线学习资源使用频率, 提高了学习效率。 这种将在线学习自然融入学生微信生活之中, 利用微信的社交功能构建跨越时空的学习共同体, 通过成员之间的交流、 协作与竞争以及解决问题的多视角共享, 激发学习兴趣、 培养协作素质、 发展解决真实问题的能力, 这无疑是一种数字化学习理念的创新。

猜你喜欢
网关协作消息
基于FPGA的工业TSN融合网关设计
一种主从冗余网关的故障模式分析与处理
鲁渝扶贫协作进行曲
扶贫协作中的山东力量
一张图看5G消息
监督桥 沟通桥 协作桥
天地一体化网络地面软网关技术及其应用
晚步见道旁花开
车联网网关架构的设计
协作