薛艷鋒+高文蓮+王三虎



摘要:全國大學英語等級考試(CET)是教育部針對在校大學生每學期組織的一項全國性英語考試,然而因準考證號遺忘導致考生無法在線查詢成績的現象時有發生。雖然部分應用軟件通過選填所在學校信息可以彌補這一缺陷,但在相同學校相同姓名的情況下查詢無效。針對這種情況,設計了一種CET成績定制化查詢系統。領取準考證后在微信公眾平臺進行成績定制,成績揭曉后系統第一時間通過微信公眾平臺以及手機短信推送對應成績。實驗結果表明,該系統不僅可以準確推送成績結果,而且容易擴展到其它類似應用場景。
關鍵詞:微信公眾平臺;定制化;定時任務;模板消息;網頁抓取
DOIDOI:10.11907/rjdk.171145
中圖分類號:TP319
文獻標識碼:A 文章編號:1672-7800(2017)006-0070-04
0 引言
全國大學英語等級考試(College English Test Band 4 and Band 6,CET)是教育部針對高校大學生每學期舉辦的一項全國性考試。考試結束兩個月后,官網提供3個查詢入口:99宿舍網[1]、中國高等教育學生信息網(學信網)[2]以及教育部考試中心綜合查詢網[3]。一些應用軟件如支付寶及微信公眾平臺也提供類似查詢功能,但數據源都來自上述官網,查詢必填準考證號。然而在查詢時,考生常常因為忘記準考證號而無法查詢,一些應用軟件提供了補填所在學校信息以解決這一問題,但效果不佳。因考生人數眾多,如果有同名同姓出現則查詢失敗。
隨著移動互聯網技術的快速發展,智慧校園[4]興起,微信公眾平臺在大學圖書館 [5-6]、信息服務 [7]以及學習等方面的應用[8]層出不窮。微信公眾平臺作為騰訊公司在微信基礎上的新增功能模塊[9],運營者可按照開發接口規范設計與實現滿足特定功能的微信公眾號,即移動應用系統,而用戶可在微信客戶端關注該公眾號與系統互動。
該系統的主要功能與RSS的定制推送功能[10]類似,使用過程為:用戶前期通過準考證號與姓名進行成績定制,等成績公布后,通過微信公眾平臺以及驗證碼對應手機號自動收取定制成績,從而保證考試信息只需輸入一次就能及時得到成績,改變了過去被動查詢局面,擴展并具體化RSS推送內容。
1 相關技術介紹
1.1 WeUI頁面基礎樣式庫
為了與微信原生視覺體驗一致,使用戶的感知統一,本文選擇微信公眾平臺提供的WeUI頁面基礎樣式庫[11]開發成績定制及查詢結果頁面。
1.2 JQuery
jQuery是一個快速、簡潔的JavaScript框架,其設計宗旨為“Write Less,Do More”,即“寫得少,做得多”[12]。它不僅封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設計模式,而且優化了HTML文檔操作、事件處理、動畫設計和Ajax交互,并與WeUI頁面基礎樣式庫交互良好。
1.3 openid
用戶與微信公眾號交互后,公眾號可以設置網頁授權并通過獲取用戶基本信息接口得到用戶openid。該openid是微信加密后的微信號,是公眾號區分用戶的重要憑證[13]。
1.4 定時任務
定時任務[14]是新浪云推出的一項定期以HTTP方式觸發執行后臺程序的服務,定期清理和備份數據庫表中的數據、發送郵件通知等,觸發后執行應用中定義的 HTTP 回調函數。
1.5 模板消息
模板消息[15]指主動提醒、通知用戶時,在公眾平臺網站模板消息庫中選擇對應模板,再根據模板ID向用戶主動推送提醒、通知消息的一種服務。如果模板消息庫沒有對應模板,可按照模板填寫規則申請設計模板消息[16],等審核通過后即可使用。
1.6 來信碼
2012年BechTech推出來信碼,2015年1月整合IM功能,是一款專注開發者的短信API服務平臺[17]。通過它可以進行信息驗證、發送通知消息,理論信息到達率達100%。
1.7 網頁數據抓取
網頁數據抓取是通過某一種機制獲取網頁數據的過程[18]。本文通過PHP編程語言的cURL函數[19]模擬登陸學信網,利用simple_html_dom功能將數據從HTML標記符中抽離出來,再打包成JSON格式的數據返回。
2 功能實現
本系統開發的所有服務都是基于新浪推出的公有云計算平臺Sina App Engine(SAE)或與SAE有合作關系的第三方服務,具體使用服務如表1所示。
2.1 openid獲取
本系統通過微信網頁授權機制獲取微信用戶openid,具體流程為配置回調頁面域名,用戶授權并獲取code,通過code換取網頁授權access_token,獲取的數據為JSON數據包形式[21],其中包含openid鍵值對。JSON數據包如下所示:
2.2 查詢頁面定制
本系統的成績定制頁面采用WeUI頁面基礎樣式庫中部分表單頁面,如圖2所示。當輸入手機號點擊“獲取驗證碼”時,調用JQuery框架的$.getJSON( )方法獲取驗證碼,讀取手機號對應文本框的值,然后賦值給phoneInput以參數形式傳遞給getVcode.php頁面,getVcode.php頁面獲取手機號碼之后首先動態生成由4位數字字符組成的驗證碼;然后以URL模擬登陸[18]的方式,將其推送給對應的手機號并返回給回調函數參數data;再賦值給全局變量vcode以匹配用戶驗證碼是否正確,一致則匹配成功;最后點擊“確定”按鈕通過Ajax方法以“POST”方式提交表單給getCET.php頁面。提交字段包括考生姓名、準考證號、openid以及手機號。其中使用的$.getJSON( )方法代碼如下:
因為收到模板規則數限制(最多5條),所以除了這5條規則數據對應顯示外,其它數據合并在{{first.DATA}}之內,即{考生姓名}.“您好,”.{考試日期} .“全國大學”.{考試級別} .“成績現已揭曉,請查收!”,而{{remark.DATA}}照搬學信網提示“注:最終結果請以《成績報告單》為準。”;而通過URL模擬登陸調用來信碼接口發送內容模板如下所示:“{字符}您好,您{字符}CET考試成績單已經發送。學校名稱:{字符};考試級別:{字符};總成績:{數字},其中聽力:{數字}、閱讀:{數字}、寫作與翻譯:{數字}。【智普】”。
3 實驗仿真
因為每年CET次數僅為2次,且成績公布周期較長,所以實驗結果采用仿真方法,定制2016年6月全國大學英語等級成績。首先點擊微信公眾號下拉菜單彈出CET定制查詢頁面,如圖2所示,輸入對應信息通過驗證規則后,點擊“確定”按鈕。如果信息正確則跳轉到查詢成功頁面,進入CET查詢系統;假設在2016年6月輸入相同信息,由于成績未公布,則在CET定制系統得到定制成功提示頁面,如圖3所示。
定制成功后,啟動定時任務程序,只要學信網支持成績查詢,則微信用戶與手機用戶在第一時間都可收到如圖4、圖5所示的CET成績通知,系統完成CET定制成績的及時推送。
4 結語
智慧校園高校建設[23]步伐加快為本文系統實施提供了很好的條件。本系統提供的成績定制化服務不僅用于CET成績查詢,還可擴展到普通話、全國計算機等級考試以及期末考試等成績查詢定制服務中,如果顯示結果內容過多,則可通過“模板消息”點擊“詳情”進一步顯示,也可通過新浪推出的“云郵件”功能進行郵件推送[24],從被動查詢過渡到主動接收。
參考文獻:
[1]99宿舍網[EB/OL].[2016-11-15].http://cet.99sushe.com/.
[2]中國高等教育學生信息網.[2016-11-15].http://www.chsi.com.cn/cet/
[3]教育部考試中心綜合查詢網.[2016-11-15].http://chaxun.neea.edu.cn/examcenter/main.jsp.
[4]XIANG Y,CHANG D,CHEN B.A smart university campus information dissemination framework based on WeChat platform[M].LISS,2015:927-932.
[5]ZHAO Y,DENG S,GAO T,et al.Research on user needs for mobile information services in Chinese university libraries:comparison between existing user and potential users[J].The Electronic Library,2016,34(4):617-635.
[6]XU J,KANG Q,SONG Z,et al.Applications of mobile social media:WeChat among academic libraries in China[J].Journal of Academic Librarianship,2015,41(1):21-30.
[7]邱炳發,馬燕.基于微信的研究生信息服務系統的設計與實現[J].計算機技術與發展,2016(1):190-194.
[8]LANG F,ZHANG K,LI P,et al.Computer english teaching based on WeChat[M].Social Computing,2016.
[9]王明亮,閔新力,姬江濤,等.基于微信的移動外勤管理系統設計與實現[J].計算機應用與軟件,2015,32(7):82-85.
[10]HUA X,SI L,ZHUANG X,et al.Investigations about new methods of library marketing in Chinese “985” project universities[J].Library Management,2015,36(6/7):408-420.
[11]騰訊.微信網頁開發樣式庫[EB/OL].[2016-10-25].http://mp.weixin.qq.com/wiki/2/ae9782fb42e47ad79eb7b361c2149d16.html.
[12]張旭紅,劉渭濱.面向移動平臺的新聞資訊系統的設計與實現[J].計算機應用與軟件,2014(1):5-8.
[13]騰訊.獲取用戶基本信息接口文檔[EB/OL].[2016-10-25].https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839&token=&lang=zh_CN.
[14]新浪.定時任務[EB/OL].[2016-10-25].https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839&token=&lang=zh_CN.
[15]騰訊.模版消息[EB/OL].[2016-10-25].https://mp.weixin.qq.com/advanced/tmplmsg?action=faq&token=499460181&lang=zh_CN.
[16]騰訊.模版消息[EB/OL].[2016-10-25].https://mp.weixin.qq.com/advanced/tmplmsg?action=open_tmpl&lang=zh_CN&token=499460181.
[17]BechTech.來信碼[EB/OL].[2016-10-25].http://sms.bechtech.cn/Index/prointro.html?act=prointro.
[18]楊帆,沈來信.基于SS2H的微信公眾平臺賬號設計[J].計算機技術與發展,2016(1):195-199.
[19]PHP手冊.Client URL庫[EB/OL].[2016-10-25].http://cn2.php.net/manual/zh/book.curl.php.
[20]騰訊.網頁授權獲取用戶基本信息[EB/OL].[2016-10-25].https://mp.weixin.qq.com/cgi-bin/settingpage?t=setting/function&action=function&token=773721195&lang=zh_CN.
[21]方倍工作室.微信公眾平臺開發最佳實踐[M].北京:機械工業出版社,2014:72-79.
[22]肖金克,劉曉陽,陳鑫,等.基于微信公眾平臺的高校移動信息服務設計與實現[J].軟件導刊,2016,15(8):83-85.
[23]王宇,吳煒鑫,王興偉.“互聯網+”下高校信息化建設模式的探索與研究[J].計算機應用與軟件,2016,33(11):41-45.
[24]新浪.云郵件[EB/OL].[2016-10-25].https://sae.sina.com.cn/?m=newmail&a=doc&app_id=zpxue.
(責任編輯:杜能鋼)