標籤:無法發送 簡訊 異常 null 訪問 sum param data 優先
3、 下行簡訊發送WebService
開發一個WebService,供第三方系統調用,用於傳送簡訊。WebService接收資料後,將資訊儲存入資料庫的簡訊發送資料表中。
WebService參數包括:應用標識、手機號碼(字串數群組類型)、簡訊內容、擴充碼(3-8位元字)、優先順序(數字1至5)、定時發送時間(可null為即時發送)、發送人ID(內部機構人員管理系統的ID)、發送人全路徑。
同時開發另一個WebService,與原有舊系統介面完全相同,用於調用舊簡訊平台的第三方系統無縫切換到新簡訊平台。
Webservice實現如下:
/// <summary> /// 傳送簡訊服務 /// 成功:返回MsgGroup,格式為"success:" + MsgGroup /// 異常:返回異常資訊 /// </summary> /// <param name="appCode">應用標識</param> /// <param name="mobiles">手機號</param> /// <param name="smsContent">簡訊內容</param> /// <param name="addSerial">擴充碼</param> /// <param name="smsPriority">優先順序</param> /// <param name="isMo">是否允許回複</param> /// <param name="scheduleTime">定時時間</param> /// <param name="sendUserId">發送人</param> /// <param name="sendUserFullPath">發送人全路徑</param> /// <returns></returns> [WebMethod] public string SendSMSWithSuccess(string appCode, string[] mobiles, string smsContent, string addSerial, int smsPriority = 1, bool isMo = true, DateTime? scheduleTime = null, string sendUserId = "", string sendUserFullPath = "") { //執行校正和入庫 string result = … return result; }
其中MsgGroup為移動要求提供的32位的唯一編碼,後續返回的提交報告、狀態報表都以此為對應依據。
WebService內部邏輯首先是校正,包括應用是否註冊、號碼數量、號碼組是否包括重複號碼、號碼是否具有非法字元、擴充碼長度等內容。然後將校正過的資料存入資料庫。
下行簡訊資料表:
SMS_MT_DATA_INFO 簡訊資訊表 |
欄位代碼 |
欄位名稱 |
欄位類型 |
可空 |
標識 |
主鍵 |
MSG_GROUP |
批次號 |
varchar(32) |
N |
N |
Y |
APP_CODE |
應用標識 |
varchar(64) |
N |
N |
N |
MOBILES |
手機號碼組 |
varchar(max) |
N |
N |
N |
SMS_CONTENT |
簡訊內容 |
varchar(max) |
N |
N |
N |
ADD_SERIAL |
擴充碼 |
varchar(32) |
Y |
N |
N |
SMS_PRIORITY |
優先順序 |
int |
N |
N |
N |
IS_MO |
是否需要上行 |
bit |
N |
N |
N |
SCHEDULE_TIME |
定時時間 |
datetime |
Y |
N |
N |
SEND_USER_ID |
發信人 |
varchar(36) |
Y |
N |
N |
SEND_USER_FULL_PATH |
發信人全路徑 |
varchar(512) |
Y |
N |
N |
CREATE_TIME |
建立時間 |
datetime |
N |
N |
N |
SMS_MT_DATA_HIS_INFO 簡訊資訊曆史表 |
欄位代碼 |
欄位名稱 |
欄位類型 |
可空 |
標識 |
主鍵 |
MSG_GROUP |
批次號 |
varchar(32) |
N |
N |
Y |
APP_CODE |
應用標識 |
varchar(64) |
N |
N |
N |
MOBILES |
手機號碼組 |
varchar(max) |
N |
N |
N |
SMS_CONTENT |
簡訊內容 |
varchar(max) |
N |
N |
N |
ADD_SERIAL |
擴充碼 |
varchar(32) |
N |
N |
N |
SMS_PRIORITY |
優先順序 |
int |
N |
N |
N |
IS_MO |
是否需要上行 |
bit |
N |
N |
N |
SCHEDULE_TIME |
定時時間 |
datetime |
Y |
N |
N |
SEND_USER_ID |
發信人 |
varchar(36) |
Y |
N |
N |
SEND_USER_FULL_PATH |
發信人全路徑 |
varchar(512) |
Y |
N |
N |
CREATE_TIME |
建立時間 |
datetime |
N |
N |
N |
SEND_RESULT |
返回狀態 |
int |
N |
N |
N |
SEND_TIME |
發送時間 |
datetime |
N |
N |
N |
HAS_MO |
是否有回複 |
bit |
N |
N |
N |
4、 下行簡訊發送服務
一個WindowsService,定時訪問資料庫,若有資料則調用雲MAS組件傳送簡訊,然後將發送過的簡訊移入簡訊發送曆史資料表。
由於雲MAS平台需要登入後使用,登入只能進行一次,因此需要對SDK進行單例模式的封裝。
移動雲MAS平台內部有一定的處理邏輯,具體的我也不知道,猜測如下:首先接收資料後移動對簡訊資訊進行審核,然後將審核過的簡訊提交到內部的發送系統,此過程會產生提交報告;內部判定如果是移動的手機號,則由自己的系統傳送簡訊,此處會有白名單限制,白名單之外的簡訊無法發送,如果是聯通或電信手機號,則調用相應的介面交由相應系統傳送簡訊,此時移動自己的白名單無效,此過程會產生狀態報表。
HTTP版本中雲MAS平台和Http用戶端資料互動流程如下,供參考。
4、下行簡訊發送WebService、下行簡訊發送服務 -功能詳細設計 --簡訊平台