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