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