การส่ง OTP
API สำหรับส่ง OTP นี้จะสร้างรหัสยืนยันผ่านแพลตฟอร์ม EngageLab และจัดส่งตามกลยุทธ์ของช่องทางที่ระบุไว้ในเทมเพลต
หากคุณต้องการสร้างรหัสยืนยันด้วยตนเองแทนการใช้แพลตฟอร์ม EngageLab คุณสามารถเรียกใช้ API EngageLab OTP Custom Verification Code Delivery
Endpoint
POST https://otp.api.engagelab.cc/v1/messages
การยืนยันตัวตน
ใช้ HTTP Basic Authentication และเพิ่ม Authorization ลงใน HTTP header ดังนี้:
Authorization: Basic ${base64_auth_string}
อัลกอริทึมสำหรับสร้าง base64_auth_string คือ base64(dev_key:dev_secret)
ตัวอย่างคำขอ
Request Header
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Request Body
{
"to": "+6591234567",
"template": {
"id": "test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
พารามิเตอร์คำขอ
อ็อบเจ็กต์คำขออยู่ในรูปแบบ JSON ดังนั้น request header ต้องมี Content-Type: application/json
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | String | Required | ผู้รับเป้าหมาย: หมายเลขโทรศัพท์หรืออีเมล เช่น +6598765432 หรือ support@engagelab.com |
| template | JSON Object | Required | ข้อมูลเทมเพลต โปรดดูพารามิเตอร์แบบซ้อนด้านล่าง |
| |_ id | String | Required | ID ของเทมเพลต |
| |_ language | String | Optional | ภาษาของเทมเพลต รองรับภาษาต่อไปนี้: default: ภาษาเริ่มต้น zh_CN: จีนตัวย่อ zh_HK: จีนตัวเต็ม en: อังกฤษ ja: ญี่ปุ่น th: ไทย es: สเปน หากไม่ระบุ ระบบจะใช้ค่าเริ่มต้นเป็น default (ภาษาเริ่มต้น) |
| |_ params | JSON Object | Optional | ค่าสำหรับคีย์ตัวแปรของเทมเพลตแบบกำหนดเอง หากคุณได้กำหนดตัวแปรแบบกำหนดเองไว้ตอนสร้างเทมเพลต ให้กำหนดค่าให้ตัวแปรเหล่านั้นที่นี่ หากไม่ระบุ คีย์ตัวแปรจะถูกส่งออกไปโดยตรง เช่น {{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"}
พารามิเตอร์การตอบกลับ
การตอบกลับเมื่อสำเร็จ
| Field | Type | Required | Description |
|---|---|---|---|
| message_id | String | Required | ID ของข้อความ ซึ่งใช้ระบุข้อความแต่ละรายการได้อย่างไม่ซ้ำกัน |
| send_channel | String | Required | ระบุช่องทางการส่งในปัจจุบัน ค่าที่เป็นไปได้คือ whatsapp, sms, email หรือ voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
โปรดทราบว่าค่า send_channel ที่ส่งกลับมาไม่ได้แสดงถึงช่องทางสุดท้ายที่ใช้ส่งข้อความถึงผู้ใช้ แต่ระบุเพียงช่องทางที่กำลังใช้งานอยู่ในขณะนั้น ตัวอย่างเช่น หากกลยุทธ์ของเทมเพลตถูกกำหนดให้เมื่อการส่งผ่านช่องทาง WhatsApp ล้มเหลว ระบบจะลองส่งใหม่ผ่านช่องทาง SMS โดยอัตโนมัติ การตอบกลับของ API จะส่งคืนค่า whatsapp ก่อน และหลังจากนั้นเมื่อระบบตรวจพบความล้มเหลวในการส่ง ระบบจะส่งข้อความผ่านช่องทาง SMS
การตอบกลับเมื่อล้มเหลว
HTTP status code คือ 4xx หรือ 5xx และ response body จะมีฟิลด์ต่อไปนี้:
| Field | Type | Required | Description |
|---|---|---|---|
| code | int | Required | รหัสข้อผิดพลาด สำหรับรายละเอียด โปรดดู Error Codes |
| message | String | Required | รายละเอียดข้อผิดพลาด |
{
"code": 5001,
"message": "sms send fail"
}
รหัสข้อผิดพลาด
| Error Code | HTTP Code | Description |
|---|---|---|
| 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 | หมายเลขยังไม่ได้ลงทะเบียน/หมายเลขไม่ถูกต้อง |










