松崗網(wǎng)站制作公司創(chuàng)絡(luò)近期在幫一位客戶開發(fā)網(wǎng)站時(shí),遇到這樣一個(gè)需求,就是當(dāng)網(wǎng)站調(diào)用阿里云接口發(fā)送短信后,需要獲取用戶接收短信狀態(tài)的回執(zhí)。這樣就可以很好的知道有哪些用戶沒有接收到短信,然后有針對性的進(jìn)行人工聯(lián)系,保障用戶權(quán)益。當(dāng)然,這里有一個(gè)前提,就是網(wǎng)站已經(jīng)能夠成功的向用戶發(fā)送短信了。
簡述前序:注冊阿里云賬戶并進(jìn)行企業(yè)實(shí)名認(rèn)證,購買短信套餐包,創(chuàng)建短信專用的RAM賬戶并分配權(quán)限,下載SDK包,解壓后把SDK部署到網(wǎng)站項(xiàng)目中去。登陸RAM賬戶去創(chuàng)建短信簽名模板和短信模板并提交審核。根據(jù)我們的實(shí)際經(jīng)驗(yàn),模板審核還是很快的,一般工作時(shí)間段內(nèi),2小時(shí)內(nèi)會(huì)審核下來。然后根據(jù)實(shí)際程序需要,進(jìn)行短信發(fā)送功能的定制開發(fā)。我們在前面的文章中也介紹了相關(guān)開發(fā),比如說如何實(shí)現(xiàn)批量發(fā)送短信。由于跟蹤用戶接收短信的狀態(tài)是客戶后面才提出的要求,因此我們需要對前面的程序進(jìn)行升級(jí)改造。
第一步:把短信發(fā)送記錄保存到數(shù)據(jù)庫中。為了跟蹤每一條短信的狀態(tài),所以我們需要將短信分條保存到數(shù)據(jù)庫中,即便是批量發(fā)送的時(shí)候也要將所有的短信拆分出來。數(shù)據(jù)庫中至少需要保存手機(jī)號(hào)碼、短信發(fā)送流水號(hào)和默認(rèn)的短信狀態(tài)(如:待核實(shí))。如果還有其他方面的需要還可以進(jìn)一步保存短信編碼(來自阿里云)、信息摘要(或者拼接成完整的短信內(nèi)容)和發(fā)送時(shí)間等。短信發(fā)送的時(shí)候,流水號(hào)是可選的,但是當(dāng)我們需要跟蹤短信狀態(tài)的時(shí)候,就要當(dāng)作必填資料來處理了。我們是每一次發(fā)送短信(批量或者單條發(fā)送都算)都采用獨(dú)立的流水號(hào),另外再補(bǔ)充下,發(fā)送短信前要注意手機(jī)號(hào)碼校驗(yàn)和去重。這樣在獲取短信回執(zhí)的時(shí)候,就可以根據(jù)流水號(hào)和手機(jī)號(hào)碼對應(yīng)更新其狀態(tài)了。
第二步:在短信控制臺(tái)中開啟云通信消息接收的狀態(tài)報(bào)告接收,分別開啟MNS消息隊(duì)列消費(fèi)模式和HTTP批量推送模式。并填寫對應(yīng)的回執(zhí)通知URL,這里的URL是我們自己開發(fā)的一個(gè)文件,專門用來接收阿里云推送(帶參請求)回來的通知數(shù)據(jù)。請見下圖:
第三步:處理通知數(shù)據(jù)。到這一步就相對比較容易了,在我們自己開發(fā)的通知處理文件中,引入SDK,填寫好第二步中生成的queueName,然后就可以在發(fā)送短信成功后,在這個(gè)文件中獲取到阿里云返回回來的數(shù)據(jù)了。數(shù)據(jù)中包含了短信發(fā)送狀態(tài)、狀態(tài)碼、狀態(tài)信息、手機(jī)號(hào)、流水號(hào)等有用的數(shù)據(jù),我們只需要從中取出我們自己需要的數(shù)據(jù),然后去和數(shù)據(jù)庫中的短信發(fā)送記錄比對和更新即可。
通過對阿里云短信接口的開發(fā)集成和使用,我們發(fā)現(xiàn)開發(fā)難度還是有的,首次開發(fā)也可能會(huì)遇到一些坑,但是開發(fā)完成后的整體使用效果非常不錯(cuò),推薦大家研究學(xué)習(xí)下。