Api說明
共 5992字,需瀏覽 12分鐘
·
2023-04-19 16:34
通用
請求域名
https://uni.apistd.com公共參數(shù)
公共參數(shù)為調(diào)用 API 請求時必須攜帶的參數(shù),統(tǒng)一使用 URL Query 參數(shù)傳輸。
| 參數(shù)名 | 類型 | 是否必填 | 描述 | 示例值 |
|---|---|---|---|---|
| action | string | 是 | 接口名 | sms.message.send |
| accessKeyId | string | 是 | 請求 AccessKey ID | rQJEk4mz6gZzTC9X8XHfpQ1Vt |
訪問鑒權(quán)
UniSMS 提供以下兩種鑒權(quán)方式共開發(fā)者選擇,可在控制臺-憑證管理中設(shè)置,默認(rèn)為簡易模式。
- 簡易模式 [默認(rèn)]:此模式僅核驗(yàn)
AccessKey ID,不對請求參數(shù)進(jìn)行驗(yàn)簽,方便開發(fā)者快速接入。 - HMAC模式:此模式要求使用
AccessKey Secret對請求參數(shù)進(jìn)行驗(yàn)簽,以加強(qiáng)保障請求的安全與真實(shí)性。
簡易模式
使用簡易模式完成訪問認(rèn)證,僅需將從控制臺-憑證管理中獲得 AccessKey ID 值傳入 URL Query 參數(shù) accessKeyId 即可完成鑒權(quán)。
HMAC模式
使用 HMAC 模式完成訪問認(rèn)證,需將所有 URL Query 參數(shù)按字典順序排列作為待簽文本串,并根據(jù)指定簽名哈希算法進(jìn)行簽名。
新增所須公共參數(shù) (Query) 如下:
| 參數(shù)名 | 類型 | 是否必填 | 描述 | 示例值 |
|---|---|---|---|---|
| algorithm | string | 是 | 簽名哈希算法,目前僅支持 hmac-sha256 | hmac-sha256 |
| timestamp | number | 是 | 時間戳 (ms),接受容差時間 10 分鐘 | 1620243278785 |
| nonce | string | 是 | 隨機(jī)字符串,接受 8-64 個字符間的隨機(jī)字符串 | d7041f4746a09b10 |
| signature | string | 是 | 簽名串 | xvv9UjzOrQFWe7fFS5IUU9iqIZrncvF093SqXsnfcK8= |
簽名生成步驟
1. 提取請求中所有 URL Query 參數(shù)對,根據(jù)參數(shù) Key 按字典順序排序 (正序),以=連接 Key-Value,以&連接參數(shù)對組成待簽文本串,示例如下:
accessKeyId=rQJEk4mz6gZzTC9X8XHfpQ1Vt&action=sms.message.send&algorithm=hmac-sha256&nonce=d7041f4746a09b10×tamp=16202697822582. 使用 HmacSHA256 算法,以 AccessKey ID 對應(yīng)的 AccessKey Secret 作為簽名秘鑰,對待簽文本串生成簽名,輸出為 Base64 (或 Hex) 字符串,示例如下:
xvv9UjzOrQFWe7fFS5IUU9iqIZrncvF093SqXsnfcK8=3. 將簽名串作為 signature 的值增加到請求 URL Query 參數(shù)中發(fā)送請求,最終完整的請求 URL 示例如下:
https://uni.apistd.com/?action=sms.message.send&accessKeyId=rQJEk4mz6gZzTC9X8XHfpQ1Vt&algorith發(fā)送短信
使用該接口發(fā)送文本短信至一個或多個收件人。閱讀本文檔前請先閱讀 API 通用說明。
接口定義
- 接口名:
sms.message.send - HTTP Method:
POST - Content-Type:
application/json
請求參數(shù) (Body)
| 參數(shù)名 | 類型 | 是否必填 | 描述 | 示例值 |
|---|---|---|---|---|
| to | string | string[] | 是 | 收件手機(jī)號,國際手機(jī)號使用 E.164 格式 | 18688061234 |
| signature | string | 是 | 短信簽名,2-16 個字符 | 合一短信 |
| content | string | 否 | 短信正文文本,templateId或content二選一 | 您的驗(yàn)證碼是9153,15分鐘內(nèi)有效。 |
| templateId | string | 否 | 短信模板 ID 或自定義模板碼,templateId或content二選一 | login_notify |
| templateData | JSON | 否 | 模板變量 | {"code": "9153", "ttl": "15"} |
* 注:為幫助開發(fā)者快速遷移,UniSMS支持使用 content 參數(shù)直接傳入文本,新接入用戶建議優(yōu)先使用 templateId 傳參
請求示例
curl -X POST 'https://uni.apistd.com/?action=sms.message.send&accessKeyId=YOUR_ACCESS_KEY_ID' \
-H 'Content-Type: application/json' \
-d '{
"to": "1860571xxxx",
"signature": "合一短信",
"templateId": "signup",
"templateData": {"code": "3241", "ttl": "10"}
}'響應(yīng)參數(shù) (Body)
| 參數(shù)名 | 類型 | 描述 | 示例值 |
|---|---|---|---|
| code | string | 返回碼 | 105400 |
| message | string | 返回信息 | InsufficientFunds |
| data | JSON | 返回結(jié)果 |
返回結(jié)果 (data)
| 參數(shù)名 | 類型 | 描述 | 示例值 |
|---|---|---|---|
| status | string | 發(fā)送狀態(tài) | sent |
| recipients | integer | 收件人個數(shù) | 1 |
| messageCount | integer | 計費(fèi)消息總條數(shù) | 1 |
| totalAmount | number | 總消費(fèi)金額 | 0.045 |
| payAmount | number | 支付消費(fèi)金額 | 0.045 |
| virtualAmount | number | 虛擬消費(fèi)金額 | 0 |
| messages | JSON[] | 發(fā)送消息報告 |
發(fā)送消息報告 (data.messages)
| 參數(shù)名 | 類型 | 描述 | 示例值 |
|---|---|---|---|
| id | string | 消息標(biāo)識 | 7cf4b5c12c5ad49379ce07290d9b00bb |
| to | string | 收件人手機(jī)號 (E.164) | +8618688061234 |
| regionCode | string | 國際代碼 | CN |
| countryCode | string | 國際電話區(qū)號 | 86 |
| messageCount | integer | 計費(fèi)消息總條數(shù) | 1 |
| status | string | 發(fā)送狀態(tài) | sent |
| upstream | string | 短信上游 | emay.standard |
| price | string | 消費(fèi)金額 | 0.040000 |
響應(yīng)示例
成功響應(yīng)示例
Status Code: 200, Response Body:
{
"code": "0",
"message": "Success",
"data": {
"recipients": 2,
"messageCount": 2,
"totalAmount": "0.187500",
"payAmount": "0.187500",
"virtualAmount": "0",
"messages": [
{
"id": "4e88293e50aac21d027a9d6c0f33661e",
"to": "+8618688061234",
"regionCode": "CN",
"countryCode": "86",
"messageCount": 1,
"status": "sent",
"upstream": "emay.standard",
"price": "0.050000"
},
{
"id": "ce02a6c4195c6f8c4b6a7250ccb3b0a1",
"to": "+12894260331",
"regionCode": "CA",
"countryCode": "1",
"messageCount": 1,
"status": "sent",
"upstream": "emay.intl.standard",
"price": "0.137500"
}
]
}
}失敗響應(yīng)示例
Status Code: 400, Response Body:
{
"code": "105400",
"message": "InsufficientFunds"
}語音驗(yàn)證碼
使用該接口發(fā)送語音驗(yàn)證碼 (撥打電話) 至一個接收人。閱讀本文檔前請先閱讀 API 通用說明。
接口定義
- 接口名:
sms.voice.verification.send - HTTP Method:
POST - Content-Type:
application/json
請求參數(shù) (Body)
| 參數(shù)名 | 類型 | 是否必填 | 描述 | 示例值 |
|---|---|---|---|---|
| to | string | 是 | 接聽人手機(jī)號 | 18509872103 |
| code | string | 是 | 驗(yàn)證碼,為 4 或 6 位數(shù)字 | 5201 |
* 注:暫不支持使用國際手機(jī)號
請求示例
curl -X POST 'https://uni.apistd.com/?action=sms.voice.verification.send&accessKeyId=YOUR_ACCESS_KEY_ID' \
-H 'Content-Type: application/json' \
-d '{
"to": "1850987xxxx",
"code": "5201"
}'響應(yīng)參數(shù) (Body)
| 參數(shù)名 | 類型 | 描述 | 示例值 |
|---|---|---|---|
| code | string | 返回碼 | 101301 |
| message | string | 返回信息 | 未設(shè)置有效的上游服務(wù)商 |
| data | JSON | 返回結(jié)果 |
返回結(jié)果 (data)
| 參數(shù)名 | 類型 | 描述 | 示例值 |
|---|---|---|---|
| status | string | 發(fā)送狀態(tài) | sent |
| recipients | integer | 接聽人個數(shù) | 1 |
| messageCount | integer | 計費(fèi)語音總條數(shù) | 1 |
| totalAmount | number | 總消費(fèi)金額 | 0.05 |
| payAmount | number | 支付消費(fèi)金額 | 0.05 |
| messages | JSON[] | 發(fā)送語音報告 |
發(fā)送語音報告 (data.messages)
| 參數(shù)名 | 類型 | 描述 | 示例值 |
|---|---|---|---|
| id | string | 語音標(biāo)識 | 7086bf2f0c2e944b15b08897277d8414 |
| to | string | 接聽人手機(jī)號 (E.164) | +8618509872103 |
| regionCode | string | 國際代碼 | CN |
| countryCode | string | 國際電話區(qū)號 | 86 |
| messageCount | integer | 計費(fèi)語音總條數(shù) | 1 |
| status | string | 發(fā)送狀態(tài) | sent |
| upstream | string | 短信上游 | monyun.standard |
| price | string | 消費(fèi)金額 | 0.050000 |
響應(yīng)示例
成功響應(yīng)示例
Status Code: 200, Response Body:
{
"data": {
"recipients": 1,
"messageCount": 1,
"totalAmount": "0.050000",
"payAmount": "0.050000",
"virtualAmount": "0",
"messages": [
{
"id": "7086bf2f0c2e944b15b08897277d8414",
"to": "+8618509872103",
"regionCode": "CN",
"countryCode": "86",
"messageCount": 1,
"status": "sent",
"upstream": "monyun.standard",
"price": "0.050000"
}
]
},
"code": "0",
"message": "Success"
}失敗響應(yīng)示例
Status Code: 400, Response Body:
{
"code": "101301",
"message": "未設(shè)置有效的上游服務(wù)商"
}錯誤碼及描述
| 錯誤碼 | 描述 | 說明 |
|---|---|---|
0 | Ok | 請求成功 |
101000 | Internal | 內(nèi)部錯誤 |
101301 | NoUpstreamConfigured | 未設(shè)置有效的上游通道。請檢查是否開啟了專家模式并未完成通道配置,你可以切換至融合模式快速地解決該問題 |
101303 | NoUpstreamAvailable | 所有上游通道失敗,表示該請求沒有可提供服務(wù)的上游 |
104001 | MissingParams | 缺少參數(shù) |
104002 | InvalidParams | 無效的參數(shù) |
104003 | RestrictedParams | 受限的參數(shù) |
104110 | MissingAccessKeyId | 缺少 AccessKeyId |
104111 | InvalidAccessKeyId | 錯誤的 AccessKeyId |
104201 | InvalidSignature | 錯誤的簽名。請參考 API 通用說明 生成請求簽名 |
104202 | InvalidSignatureTimestamp | 無效的簽名時間戳。請檢查傳入的值是否為有效的 UNIX 時間戳,可接受與服務(wù)器時間差為 10 分鐘 |
105001 | Unauthorized | 未授權(quán) |
105100 | IpRestricted | 請求 IP 受限。請檢查是否啟用 IP 限制擴(kuò)展服務(wù),并確保請求服務(wù)器 IP 與配置相符 |
105300 | LimitExceed | 超出發(fā)送頻率限制。請檢查是否啟用發(fā)送頻率限制擴(kuò)展服務(wù),如有需要可自行調(diào)整限制上限 |
105400 | InsufficientFunds | 賬戶余額不足 |
107111 | InvalidPhoneNumbers | 錯誤的手機(jī)號碼 |
107120 | MissingSmsSignature | 缺少短信簽名 |
107121 | SmsSignatureNotExists | 短信簽名不存在,請?jiān)L問控制臺添加 |
107122 | InvalidSmsSignature | 無效的短信簽名,表示該簽名未通過審核或正在審核中 |
107123 | RestrictedSmsSignature | 受限的短信簽名,請聯(lián)系客戶經(jīng)理了解是否有協(xié)商限制 |
107141 | SmsTemplateNotExists | 短信模板不存在,請?jiān)L問控制臺添加。如果你使用的是以pub_開頭的免審模板,請檢查模板碼是否正確 |
107143 | MissingSmsTemplateData | 缺少必要的短信模板參數(shù) |
107144 | InvaildSmsTemplateData | 無效的短信模板參數(shù) |
107145 | RestrictedSmsTemplate | 受限的短信模板,請聯(lián)系客戶經(jīng)理了解是否有協(xié)商限制 |
