OTP 驗證碼發送
OTP 驗證碼發送介面由 EngageLab 平台產生驗證碼,並依照範本中指定的通道策略進行發送。
如果您希望自行產生驗證碼,而不透過 EngageLab 平台產生,可以呼叫 EngageLab OTP 自訂驗證碼發送 介面。
呼叫位址
POST https://otp.api.engagelab.cc/v1/messages
呼叫驗證
採用 HTTP 基本驗證 的驗證方式,在 HTTP Header(標頭)中加入 Authorization:
Authorization: Basic ${base64_auth_string}
Authorization: Basic ${base64_auth_string}
此代碼塊在浮窗中顯示
上述 base64_auth_string 的產生演算法為:base64(dev_key:dev_secret)
請求範例
請求頭
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
此代碼塊在浮窗中顯示
請求體
{
"to": "+8618701235678",
"template":{
"id":"test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
{
"to": "+8618701235678",
"template":{
"id":"test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
此代碼塊在浮窗中顯示
請求參數
請求物件以 JSON 格式表示,因此請求頭需攜帶 Content-Type: application/json。
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| to | String | 必填 | 發送目標,手機號碼或電子郵件地址,例如 +8613800138000、support@engagelab.com |
| template | JSON Object | 必填 | 範本資訊,所含二級參數請見下方 |
| |_ id | String | 必填 | 範本 ID |
| |_ language | String | 可選 | 範本語言,支援以下幾種語言: default 預設語言 zh_CN 簡體中文 zh_HK 繁體中文 en 英文 ja 日文 th 泰文 es 西班牙文 若未傳入則預設為 default(預設語言) |
| |_ params | JSON Object | 可選 | 自訂範本變數 Key 的取值。 如果您在建立範本時自訂了變數,則可在此傳入其值;若未傳入,則會直接下發變數 Key,如 {{var}} |
關於params的說明
- 若範本有預設欄位(例如 from_id),當未傳入 param_vars 欄位值時,訊息發送時將使用範本預設的 from_id;
- 若傳入了 param_vars 欄位值,例如
param_vars:{"from_id":"12345"},則訊息發送時,範本的 from_id 會被替換為 12345; - 同樣地,對於建立範本時在範本內容中自訂的變數欄位,也都透過 param_vars 指派值,例如範本內容為
Hi {{name}}, your verify code is {{code}},此時需要傳入參數param_vars:{"name":"Bob"}。
回傳參數
成功回傳
| 欄位 | 類型 | 選項 | 描述 |
|---|---|---|---|
| message_id | String | 必填 | 訊息 ID,唯一識別某一則訊息 |
| send_channel | String | 必填 | 表示目前發送所使用的通道,可選值為 whatsapp/sms/email/voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
此代碼塊在浮窗中顯示
請注意,回傳的**send_channel**值不代表最終送達使用者的通道,僅代表目前階段所使用的通道;例如,若範本設定的策略中配置了 WhatsApp 通道送達失敗後自動補發 SMS 通道,則介面回傳將會是 whatsapp 值;待一段時間後偵測到送達失敗,系統將改採 SMS 通道發送。
失敗回傳
HTTP 狀態碼為 4xx 或 5xx,回應體包含以下欄位:
| 欄位 | 類型 | 選項 | 描述 |
|---|---|---|---|
| code | int | 必填 | 錯誤碼,詳見 錯誤碼 說明 |
| message | String | 必填 | 錯誤詳情 |
{
"code": 5001,
"message": "sms send fail"
}
{
"code": 5001,
"message": "sms send fail"
}
此代碼塊在浮窗中顯示
錯誤碼
| 錯誤碼 | http code | 說明 |
|---|---|---|
| 1000 | 500 | 內部錯誤 |
| 2001 | 401 | 驗證失敗,未攜帶正確的 token |
| 2002 | 401 | 驗證失敗,token 已過期或已被停用 |
| 2004 | 403 | 無呼叫此 API 的權限 |
| 3001 | 400 | 請求參數格式無效,請檢查是否為符合參數格式的 JSON 內容 |
| 3002 | 400 | 請求參數有誤,請檢查請求參數是否符合要求 |
| 3003 | 400 | 請求參數有誤,相關業務驗證失敗,詳情請參考 message 欄位中的錯誤描述 |
| 3004 | 400 | 超出頻率限制,針對同一範本及同一目標使用者,在驗證碼有效期間內無法再次發送 |
| 4001 | 400 | 相關資源不存在,例如範本訊息發送時使用了不存在的範本 |
| 5001 | 400 | 發送失敗(通用/其他) |
| 5011 | 400 | 手機號碼格式無效 |
| 5012 | 400 | 目標不可達 |
| 5013 | 400 | 號碼已被加入黑名單 |
| 5014 | 400 | 內容不符合規範 |
| 5015 | 400 | 訊息遭攔截/拒絕 |
| 5016 | 400 | 發送內部錯誤 |
| 5017 | 400 | 無中國地區發送權限 |
| 5018 | 400 | 手機故障(關機/停機) |
| 5019 | 400 | 使用者已退訂 |
| 5020 | 400 | 號碼未註冊/空號 |
