赵旭华
(珠海城市职业技术学院,珠海519090)
MOODLE(Modular Object Oriented Dynamic Learning Environment)平台是国际上较为流行的开源学习管理系统LMS(Learning Management System),意为模块化面向对象的动态学习环境[1]。MOODLE 平台以其开源著称,据不完全统计全球有102504 个学习平台基于MOODLE 平台搭建,建有20910273 门课程,学习者达878597217 之多[2]。作为开源平台,MOODLE 在全球得到了广泛使用,但在中国基于MOODLE 建设的学习平台只有468 个,究其原因一是MOODLE 平台对使用者有一定的技术门槛要求,需要教师自行搭建而普通教师并不具备服务器安装和MOODLE 平台调试能力;二是MOODLE 平台缺乏与国内社交平台的整合,难以通过微信等社交平台开展课程教学从而影响了其广泛传播[3]。基于此,本研究将从MOODLE 平台与企业微信整合应用为切入点,探究其整合应用价值。
MOODLE 平台自3.3 版本后已将OAUTH2 服务作为平台的内置服务以对外提供认证整合功能。OAUTH2 是开放认证(Open Authorization)的第二个版本,于2012 年10 月颁布,是应用系统第三方登录的工业标准[4]。MOODLE 平台安装并配置好OAUTH2 服务后,可在不需要提供用户名和密码的情况下授权允许第三方应用授权访问。OAUTH2 提供了四种模式的第三方应用授权,如表1 所示,四种模式各有自己适合的应用场景。
表1 OAUTH2 授权模式表
企业微信是腾讯公司于2016 年4 月推出的一款针对企事业单位内部使用的通信和办公工具软件,其使用成员由管理员进行管理并根据用户权限进行相应授权。与微信相比,企业微信因只限于内部人员使用因而具备更好的安全性,已广泛应用于各类学校。企业微信的应用体验大致与微信相似,并在此基础上提供了更丰富的应用程序编程接口API(Application Programming Interface),能与各业务系统进行整合应用,实现单点登录、第三方消息推送等功能。
企业微信的API 接口分服务端API 和客户端API两类,服务端API 主要针对企业内部应用系统与企业微信的对接和集成,通过服务端API 接口,可以实现用户同步、无感登录、扫码登录、消息推送等功能[5]。客户端API 主要面向微信小程序应用,通过客户端API 可开发出适合企业内部场景的小程序,而且小程序可直接在企业微信上运行。本研究主要解决MOODLE 平台的企业微信的整合,需要使用的是企业微信API接口。
在MOODLE 平台的教学过程中,师生对MOODLE平台的使用反馈问题最多的是下述的二个问题,一是MOODLE 平台的登录需使用其自有的帐号,不能使用学校统一身份认证系统,多账号易混淆和容易忘记;二是MOODLE 教学平台是网页版平台,虽然也提供配套的App 但是App 的使用频率和消息弱提醒不足以教师和学习者及时掌握课程动态。根据师生教学需求,MOODLE 教学平台和企业微信的整合要实现扫码登录、消息推送功能,功能需求架构如图1 所示。
图1 MOODLE与企业微信整合架构图
根据MOODLE 平台与企业微信的整合框架图中的整合内容,本研究主要分成两块内容的整合,一是企业微信扫码登录MOODLE,并视用户是否存在进行与MOODLE 平台帐号绑定或者新建MOODLE 账号并绑定。二是根据消息类型进行推送,使教师和学习者实时掌握课程学习动态。
按照企业微信API 接口开发规范,要实现企业微信与MOODLE 教学平台的整合可按以下步骤开发实现:
(1)企业微信配置:开通企业微信,新建应用,设置开发者应用接口,将MOODLE 平台网址加入到企业微信授权登录中的授权回调域设置中。
(2)MOODLE 平台配置:启用OAUTH2 服务,在OAUTH2 管理界面中添加新的第三方应用服务,WeChat,设置Client ID 和Client Secret 以及第三方验证的基础网页Service Base URL,设置好应用图标后,开户第三方登录,即会在MOODLE 平台登录界面上显示企业微信的登录按钮,操作界面如图3 所示。如MOODLE 平台版本低于3.3 也可安装Oauth2 authentication plugin for MOODLE 插件,安装后插件配置跟图2类似,在此不再赘述。
图2 MOODLE平台添加企业微信第三方登录服务
开发平台采取广泛使用LAMP(Linux Apache MySQL PHP)架构,在MOODLE 平台根目录的servermoodleauthoauth2 文件夹内建立Wechat 目录,目录内新建wechatlogin.php 和wechatmessage.php 等文件,分别处理企来微信登录和消息推送业务。业务相关HTML 页面及PHP 逻辑代码均可写在对应文件内,实现相应功能。
(3)企业微信扫码登录MOODLE 平台实现:上述准备工作就绪后,即可开展MOODLE 平台与企业微信的整合工作,使用企业微信登录MOODLE 平台的流程如图3 所示。
考虑到企业微信账号都已实名认证是可信任的用户,因此在设计时可根据用户首次企业微信扫码API返回的userid 信息对MOODLE 平台账号进行新建、绑定、解除绑定等操作,下次登录时即可通过绑定的账号信息直接进入MOODLE 平台。
MOODLE 平台自身的数据库mdl_user 保留了MOODLE 平台的账号信息,为方便用绑定企业信息账号,需在此数据表中添加wechat_userid 字段用来存储企业微信中用户的userid 信息。师生用户通过企业微信扫码后,即可通过https://qyapi.weixin.qq.com/cgi-bin/service/get_login_info?access_token=PROVIDER_AC-CESS_TOKEN 接口获取userid 和username 等信息,将其与MOODLE 平台中的username 进行匹配后,即可在PHP 逻辑处理中执行update mdl_user set wechat_userid=‘“$userid”’where username=“$userid”’命令将企业微信帐号与MOODLE 账号绑定。
图3 使用企业微信登录MOODLE平台流程图
(4)企业微信推送MOODLE 平台消息实现:MOODLE 平台中的消息分课程消息和交流互动消息,课程消息和交流互动消息数据分别存放在mdl_event、mdl_forum_post 和mdl_chat_messages、mdl_message 数据表中。根据以上数据中的内容,可设置定时执行脚本,定时从数据库获取最新消息数据,通过企业微信的API 接口推送至用户,用户可实时获取课程消息和交流互动消息。
MOODLE 平台通过企业微信发送消息的流程如图4 所示。
图4 MOODLE平台调用企业微信API发送消息流程图
企业微信的消息共有11 种类型,使用最多的一般是文本卡片消息,文本卡片消息可通过https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token 调用,调用时,构造以下JSON 内容即可发送消息给企业微信用户。其中access_token 令通过以送get 请求https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET 获得。卡片消息JSON 内容模板如下:
MOODLE 平台与企业微信的整合打通了两平台之间的数据孤岛,通过OAUTH2 和企业微信API 接口将两平台有机结合,可充分利用各自的优势,在保障网络安全的前提下能更好的服务于移动教学,促进教学质量的提升。
企业微信扫码登录MOODLE 平台消除了多重账号带来的不利,师生用户使用内部严格认证的企业微信账号扫描MOODLE 平台生成的二维码,在企业微信客户端确认后即可登录MOODLE 平台(如图5 所示),师生可随时随地开展移动教学,实现了校园的统一身份认证。
利用企业微信服务端API 接口从MOODLE 平台多个消息数据表中获取消息,实时推送给师生,使学习活动和师生交互更为顺畅(如图6 所示)。教师发布学习活动后,学习者能及时收到通知开展学习;各类消息的即时到达也使师生间的交流互动更为频繁,师生关系更加密切,能有效促进课程教学。
MOODLE 平台与企业微信的整合充分利用MOODLE 平台的教学优势和企业微信安全社交性强的特点,消除了两平台之间的数据孤岛现象。整合企业微信后的MOODLE 平台后,能实现学校内部企业微信扫码单点登录方便了师生的使用,各类课程消息及时通过企业微信推送至师生有助于更好地开展课程教学,提升课程教学质量。
图5 企业微信扫码确认登录
图6 企业微信推送MOODLE平台课程消息