趙旭華
(珠海城市職業技術學院,珠海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平臺課程消息