張濤
(國能(北京)商務(wù)網(wǎng)絡(luò)有限公司 北京 100056)
國家能源e購網(wǎng)上商城(以下簡稱商城)是國家能源集團進行物資、工程、服務(wù)等項目非招標(biāo)采購的電力產(chǎn)品專屬商城,是基于阿里云技術(shù)打造的,包含電力專區(qū)、電子超市、詢比價、競價等板塊的一體化電子采購平臺。商城系統(tǒng)的運維工作主要包括業(yè)務(wù)技術(shù)支持、IT 基礎(chǔ)設(shè)施管理及集成、網(wǎng)絡(luò)安全管理等工作。國能(北京)商務(wù)網(wǎng)絡(luò)有限公司(以下簡稱商務(wù)網(wǎng)公司)作為商城建設(shè)運維單位,需要滿足有序規(guī)劃和管理軟件研發(fā)全流程的要求。系統(tǒng)運維部的技術(shù)人員組織技術(shù)攻關(guān),在開源平臺上查找相關(guān)資源,最終確定了前端基于reactjs+redux、后端基于php laravel-framework、數(shù)據(jù)庫采用MongoDB 的技術(shù)框架,設(shè)計實現(xiàn)并建立起了一套高效、穩(wěn)定的問題需求跟蹤工單系統(tǒng)。
本系統(tǒng)是完全自主開發(fā)可控的問題需求跟蹤系統(tǒng),本系統(tǒng)自投入使用以來,各類工單正常流轉(zhuǎn)零失誤,實現(xiàn)了對各個項目進行過程的精細管理和階段目標(biāo)的精密控制。但是同時也發(fā)現(xiàn),由于沒有及時的工單系統(tǒng)通知提醒功能,導(dǎo)致部分工單沒有被相應(yīng)負責(zé)人及時處理。在信息技術(shù)高速發(fā)展的當(dāng)下,移動互聯(lián)結(jié)合智能終端(手機)進行信息傳遞的方式具有重要的位置。具體的途徑有短信通知、APP信息推送、微信、釘釘?shù)榷喾N渠道。目前,使用的短信發(fā)送方式主要有兩種,短信Modem和網(wǎng)絡(luò)云接口調(diào)用。利用短信Modem硬件發(fā)送短信需要外接電源及手機SIM卡,可在終端上通過廠家自帶的AT指令或短信操作API實現(xiàn)短信發(fā)送。近些年來,國家對短信息服務(wù)規(guī)定越來越嚴(yán)格,以短信Modem進行短信發(fā)送的方式逐漸被淘汰。隨著技術(shù)發(fā)展以及移動運營商短信接口的開放,網(wǎng)絡(luò)短信接口調(diào)用的方式逐漸流行起來,更便于監(jiān)管的云短信(如阿里云的“短信服務(wù)”、騰訊云的“短信SMS”)是現(xiàn)在乃至將來短信發(fā)送服務(wù)的主要技術(shù)途徑[1]。
PHP 語言(Hypertext Preprocessor)即“超文本預(yù)處理器”,是在服務(wù)器端執(zhí)行的腳本語言,主要應(yīng)用于網(wǎng)站開發(fā)并可嵌入到網(wǎng)頁中。PHP同時支持面向?qū)ο蠛兔嫦蜻^程的開發(fā),使用上非常靈活。PHP語法學(xué)習(xí)了C語言的優(yōu)點,吸納Java和Perl等多個語言的特色發(fā)展出自己的一套特色語法,并根據(jù)它們的長項持續(xù)改進提升自己,由于工單系統(tǒng)是后端基于php laravel-framework 開發(fā)出來的,系統(tǒng)運維部積極組織技術(shù)攻關(guān),用PHP 語言,在原系統(tǒng)功能之上設(shè)計實現(xiàn)了基于阿里云短信服務(wù)的工單系統(tǒng)通知短信提醒功能。
阿里云為用戶提供了實用方便的短信服務(wù)的能力,能夠支持用戶進行快速發(fā)送短信驗證碼、短信通知等功能,能實現(xiàn)三網(wǎng)合一,并與工信部攜號轉(zhuǎn)網(wǎng)平臺實時互聯(lián),保障了短信到達率能夠達99%[2]。
阿里云的短信服務(wù)API 提供短信發(fā)送、發(fā)送狀態(tài)查詢、短信批量發(fā)送等能力,在阿里云訂購了短信服務(wù)套餐之后,在該賬號下添加簽名、模板并通過審核之后,可以調(diào)用短信服務(wù)API完成短信發(fā)送等操作。
發(fā)送短信和發(fā)送狀態(tài)查詢主要用到的API接口有短信發(fā)送(Send SMS)、短信查詢(Query Send Details)、短信批量發(fā)送(Send Batch SMS)等(其他如短信回執(zhí)等更復(fù)雜的用法見阿里云官方文檔),阿里云在Open API開發(fā)者門戶上為廣大程序員提供了PHP、NET 等多種不同編程語言的短信服務(wù)SDK。由于本工單系統(tǒng)是由PHP 語言開發(fā)完成,故繼續(xù)采用PHP 語言進行設(shè)計和開發(fā)。
本系統(tǒng)的數(shù)據(jù)庫采用的是新興的非關(guān)系型數(shù)據(jù)庫MongoDB,MongoDB 是一款開源的基于分布式文件存儲的數(shù)據(jù)庫系統(tǒng)。
No SQL 是近年來發(fā)展較快的一種云存儲數(shù)據(jù)庫類型,與傳統(tǒng)數(shù)據(jù)庫不同,No SQL 數(shù)據(jù)庫不需要遵循基本要求,其數(shù)據(jù)存儲方式也更加靈活。其中,MongoDB 是No SQL 中功能最為豐富也是應(yīng)用最多的數(shù)據(jù)庫之一[3]。與常用的關(guān)系型數(shù)據(jù)庫不同的是,MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值對組成[4]。MongoDB 集群包括分片、mongos、config server、clients 等部分。分片是基于副本集的,副本集則是基于一組mongod 而構(gòu)成的,mongod 中的數(shù)據(jù)是一樣的,當(dāng)活躍節(jié)點失效時,剩下的節(jié)點重新推出活躍節(jié)點,新的活躍節(jié)點又開始提供服務(wù),從而提高可用性[5-6]。如果在PHP 中使用MongoDB,必須使用MongoDB PHP 驅(qū)動。需要打開php.ini 文件,添加extension=mongodb.so 配置。在使用其SDK 開發(fā)包進行開發(fā)之前,還需要運行以下命令進行SDK安裝:
composerrequirealibabacloud/dysmsapi-20170525 2.0.9
PHP查找讀取MongoDB數(shù)據(jù)庫數(shù)據(jù)的步驟如下:
首先,連接到自己的mongodb;然后,選擇一個數(shù)據(jù)庫;接著選擇一個集合;最后讀取我們想要的數(shù)據(jù),主要代碼部分如下:
研究設(shè)計一個定時任務(wù),通過編寫代碼實現(xiàn)上述查詢方法,每當(dāng)我們查詢到某一用戶名下的工單增加一條,就發(fā)送一條短信進行提醒。
(1)用購買阿里云短信服務(wù)的阿里云賬號創(chuàng)建簽名,記住簽名名稱,后面代碼配置中需要。
(2)需要創(chuàng)建短信模板,記住模板CODE,后面代碼配置中需要格式如下:
變量格式:${name};
例如,尊敬的${name},您有一個新的工單,請及時處理。
(3)生成AccessKey ID 和Access Key Secret,記住這兩個參數(shù)值,后面代碼配置中需要。
(4)下載SDK及DEMO,解壓后得到文件夾aliyundysms-php-sdk
(5)將文件夾aliyun-dysms-php-sdk 復(fù)制到項目中,根據(jù)框架不同,引入到正確的位置。
(6)修改SmsDemo.php文件中內(nèi)容,主要修改自己的AccessKeyId和AccessKeySecret。主要代碼段如下:
(7)修改SmsDemo.php/sendSms 中內(nèi)容,主要是填入自己的電話號碼、短信簽名、模板ID,主要代碼段如下:
(8)在自己的程序中調(diào)用sendSms()方法,需要注意先引入該方法所在的類文件。
程序設(shè)計完成后,測試發(fā)送工單提醒短信,新增一條工單則給相應(yīng)負責(zé)人發(fā)送一條短信,通過阿里云短信服務(wù)發(fā)送短信成功。
需要注意的是,包括阿里云在內(nèi)的網(wǎng)絡(luò)短信服務(wù)商通常規(guī)定對同一個手機號碼發(fā)送短信通知的條數(shù)有限制,如阿里云短信服務(wù)就是每天最多能夠發(fā)送50條。如果發(fā)送的中英文字符數(shù)超過限額后也會提示業(yè)務(wù)限流,單條短信中英文字符數(shù)也往往有一定的上限,一般是每條500 多中英文字符數(shù),超過最大限額的話會導(dǎo)致發(fā)送失敗。
基于阿里云短信服務(wù)的工單信息提醒系統(tǒng)設(shè)計完成后,實現(xiàn)了新建工單的實時提醒,極大地提高了工單的實時響應(yīng)速度,為商城的各個項目的精細管理提供了可靠的技術(shù)保障,而且極大地方便了系統(tǒng)擴展,可以根據(jù)需求擴展應(yīng)用到除工單系統(tǒng)之外的管理類項目系統(tǒng),提供實時提醒功能。本系統(tǒng)摒棄了淘汰的短信機,采用阿里云短信服務(wù)進行短信發(fā)送,這種通過網(wǎng)絡(luò)云短信服務(wù)接口調(diào)用的方式是將來短信發(fā)送的趨勢,在信息推送方面具有較高的推廣價值。但是短信本身的特點導(dǎo)致其無法攜帶圖文等豐富信息,將來可考慮在智能終端上采用如微信、釘釘?shù)華PP的方式,提高綜合信息的發(fā)送效率。