(河北大學(xué)計(jì)算中心 河北·保定)
隨著高校信息化建設(shè)的迅速發(fā)展,多數(shù)高校已經(jīng)構(gòu)建了自己的網(wǎng)絡(luò)信息服務(wù)系統(tǒng),學(xué)校中各教學(xué)單位、管理機(jī)構(gòu)大多已經(jīng)構(gòu)建了自己的網(wǎng)站,資產(chǎn)、教務(wù)、圖書、財(cái)務(wù)等均已實(shí)現(xiàn)網(wǎng)上管理。這些網(wǎng)絡(luò)信息系統(tǒng)的使用,極大地提高了辦公效率,方便了師生獲取相關(guān)信息。但是,多數(shù)師生在使用計(jì)算機(jī)網(wǎng)絡(luò)時(shí)并不在意學(xué)校網(wǎng)站上發(fā)布的通知公告,重要通知不能在網(wǎng)站上發(fā)布,還需要使用傳統(tǒng)手段與其配合才能及時(shí)告知相關(guān)師生。另外,由于受到計(jì)算機(jī)終端數(shù)量的限制,網(wǎng)上選課、網(wǎng)上評(píng)教等工作需要分批次進(jìn)行,長(zhǎng)時(shí)間占用學(xué)校機(jī)房資源,對(duì)教學(xué)秩序和教學(xué)質(zhì)量產(chǎn)生一定的影響。本文以此作為研究背景,提出使用微信公眾平臺(tái)解決通知及時(shí)下發(fā)和操作終端不足的問(wèn)題。
(一)微信及微信公眾平臺(tái)簡(jiǎn)介。微信是騰訊公司于2011年1月21日推出的一款通過(guò)網(wǎng)絡(luò)快速發(fā)送語(yǔ)音短信、視頻、圖片和文字,支持多人群聊的手機(jī)聊天軟件。用戶可以通過(guò)微信與好友進(jìn)行類似于短信、彩信、語(yǔ)音對(duì)講等方式的聯(lián)系,截至2013年1月24日,僅用3年時(shí)間,微信用戶已達(dá)3 億,特別是在大學(xué)生群體中,微信的使用率極高,幾乎是大學(xué)生手機(jī)上必裝的應(yīng)用。
微信公眾平臺(tái)是騰訊公司在微信的基礎(chǔ)上新增的功能模塊,通過(guò)這一平臺(tái),個(gè)人和企業(yè)都可以打造一個(gè)微信的公眾號(hào),實(shí)現(xiàn)和特定群體的文字、圖片、語(yǔ)音的全方位溝通、互動(dòng)。利用微信公眾平臺(tái),公眾號(hào)可以直接推送重要的通知消息到用戶的手機(jī),還可以設(shè)定關(guān)鍵詞進(jìn)行自動(dòng)回復(fù),也可以一對(duì)一地和用戶進(jìn)行交流。除此之外,微信公眾平臺(tái)還提供了“開(kāi)發(fā)模式”,使用微信公眾平臺(tái)的開(kāi)發(fā)接口,公眾號(hào)可在自身服務(wù)器上接收用戶的微信消息,并可按需回復(fù)相應(yīng)用戶。在線翻譯、在線訂票、天氣預(yù)報(bào)等應(yīng)用已經(jīng)在微信公眾平臺(tái)上相繼上線。
(二)微信公眾平臺(tái)注冊(cè)與推廣。在使用微信公眾平臺(tái)服務(wù)之前需注冊(cè)一個(gè)微信公眾賬號(hào),微信公眾賬號(hào)需使用電子信箱進(jìn)行綁定注冊(cè),注冊(cè)過(guò)程較為簡(jiǎn)單,使用瀏覽器登錄微信公眾平臺(tái)網(wǎng)站:http://mp.weixin.qq.com/,找到“立即注冊(cè)”鏈接,點(diǎn)擊進(jìn)入注冊(cè)頁(yè)面,按注冊(cè)要求填寫基本信息,郵箱激活,進(jìn)行個(gè)人信息或單位信息登記,最后完善公眾號(hào)信息即可。
注冊(cè)成功后,登錄微信公眾平臺(tái)后臺(tái),在設(shè)置頁(yè)面中的賬號(hào)信息處會(huì)看到“微信號(hào)”和“二維碼”,通過(guò)在微信搜索微信號(hào)或掃描二維碼圖片即可關(guān)注相關(guān)公眾號(hào)。將含有微信號(hào)和二維碼的說(shuō)明信息發(fā)布到網(wǎng)站,張貼到學(xué)校海報(bào)欄,很快就會(huì)得到了學(xué)生們的關(guān)注。
(三)微信公眾平臺(tái)消息接口。公眾平臺(tái)消息接口為開(kāi)發(fā)者提供與用戶進(jìn)行消息交互的能力。對(duì)于成功接入消息接口的公眾賬號(hào),當(dāng)用戶發(fā)消息給公眾號(hào),微信公眾平臺(tái)服務(wù)器會(huì)使用HTTP 請(qǐng)求對(duì)接入的網(wǎng)址進(jìn)行消息推送,第三方服務(wù)器可通過(guò)響應(yīng)包回復(fù)特定結(jié)構(gòu),從而達(dá)到回復(fù)消息的目的。
1、網(wǎng)址接入。啟用“開(kāi)發(fā)模式”時(shí)需要提供URL 和Token 兩個(gè)參數(shù),其中URL 必須以“http://”開(kāi)頭,且只支持80 端口,Token 由開(kāi)發(fā)者任意填寫,用作生成簽名。當(dāng)公眾平臺(tái)用戶提交這兩個(gè)參數(shù)時(shí),微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的URL 上,并且?guī)弦韵滤膫€(gè)參數(shù),如表1 所示。(表1)
表1
開(kāi)發(fā)者通過(guò)檢驗(yàn)signature 確認(rèn)此次GET請(qǐng)求是否來(lái)自微信服務(wù)器,如果校驗(yàn)通過(guò),原樣返回echostr 參數(shù)內(nèi)容,接入生效,否則接入失敗。加密/校驗(yàn)流程如下:
①將token、timestamp、nonce 三個(gè)參數(shù)進(jìn)行字典序排序;
②將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1 加密;
③開(kāi)發(fā)者獲得加密后的字符串可與signature 對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信。
2、消息推送。當(dāng)普通微信用戶向公眾賬號(hào)發(fā)消息時(shí),微信服務(wù)器將POST 該消息到填寫的URL 上。以推送文本消息為例,消息xml 的結(jié)構(gòu)及相關(guān)參數(shù)說(shuō)明如下:
表2
3、消息回復(fù)。對(duì)于每一個(gè)POST 請(qǐng)求,開(kāi)發(fā)者在響應(yīng)包中返回特定xml 結(jié)構(gòu),對(duì)該消息進(jìn)行響應(yīng)(現(xiàn)支持回復(fù)文本、圖文、語(yǔ)音、視頻、音樂(lè)和對(duì)收到的消息進(jìn)行星標(biāo)操作)。微信服務(wù)器在五秒內(nèi)收不到響應(yīng)會(huì)斷掉鏈接。以回復(fù)文本消息為例,回復(fù)消息的xml 的結(jié)構(gòu)及相關(guān)參數(shù)說(shuō)明如下:
表3
4、系統(tǒng)設(shè)計(jì)
(1)系統(tǒng)架構(gòu)的選擇。通過(guò)微信“開(kāi)發(fā)模式”接口,我們看到與微信進(jìn)行信息交互的其實(shí)就是一個(gè)Web 網(wǎng)站,構(gòu)建一個(gè)Web 網(wǎng)站在操作系統(tǒng)、Web 服務(wù)器、開(kāi)發(fā)語(yǔ)言及后臺(tái)數(shù)據(jù)庫(kù)等方面有多種選擇,由于本系統(tǒng)功能較為簡(jiǎn)單,但訪問(wèn)量可能巨大,而且還可能需要經(jīng)常針對(duì)一些特殊情況增加功能,因此我們選擇LNMP(Linux+Nginx+MySQL+PHP)這種網(wǎng)站服務(wù)器架構(gòu)。
(2)程序流程和功能。程序流程如圖1 所示。(圖1)系統(tǒng)有兩個(gè)功能:數(shù)據(jù)查詢和智能聊天。在數(shù)據(jù)查詢這里我們目前實(shí)現(xiàn)了考場(chǎng)查詢、考試分?jǐn)?shù)查詢、學(xué)生課表查詢和自習(xí)室占用情況查詢。智能聊天功能使用了一套基于AIML 的PHP 開(kāi)源聊天項(xiàng)目,查詢消息以外的其他對(duì)話將由這套系統(tǒng)進(jìn)行智能答復(fù),增加了系統(tǒng)的人性化和趣味性。
經(jīng)過(guò)實(shí)際應(yīng)用,系統(tǒng)運(yùn)行良好,得到了近半數(shù)在校生的關(guān)注,通過(guò)公眾平臺(tái)發(fā)布的通知消息的瀏覽量遠(yuǎn)超傳統(tǒng)網(wǎng)站,在公布考試成績(jī)期間,日查詢峰值達(dá)12 萬(wàn)次,有效地解決了校內(nèi)查詢終端不足的問(wèn)題,達(dá)到了預(yù)期效果。
[1]百度百科-微信[EB.OL].http://baike.baidu.com/view/5117297.htm.
[2]百度百科-微信公眾平臺(tái)[EB.OL]. http://baike.baidu.com/view/9212662.htm.
[3]騰訊微信公眾平臺(tái)API 文檔[EB.OL].http://mp.weixin.qq.com/wiki/index.php.
[4]許登旺,鄒天思,潘凱華.PHP 程序開(kāi)發(fā)范例寶典[M].人民郵電出版社,2007.