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