การส่งรหัส OTP
อินเทอร์เฟซนี้จะให้แพลตฟอร์ม EngageLab สร้างรหัส OTP และส่งตามกลยุทธ์ช่องทางที่ระบุไว้ในเทมเพลต
หากคุณต้องการสร้างรหัส OTP ด้วยตนเองแทนการสร้างผ่านแพลตฟอร์ม EngageLab คุณสามารถเรียกใช้อินเทอร์เฟซ การส่งรหัส OTP กำหนดเองของ EngageLab ได้
ที่อยู่สำหรับเรียกใช้
POST https://otp.api.engagelab.cc/v1/messages
การยืนยันตัวตนในการเรียกใช้
โปรดดู การยืนยันตัวตนในการเรียกใช้ เพื่อเรียนรู้วิธีทำการยืนยันตัวตน API
ตัวอย่างคำขอ
ส่วนหัวคำขอ
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
เนื้อหาคำขอ
{
"to": "+6591234567",
"template":{
"id":"test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
พารามิเตอร์คำขอ
ออบเจ็กต์คำขอแสดงในรูปแบบ JSON ดังนั้นส่วนหัวคำขอจึงต้องมี Content-Type: application/json
| พารามิเตอร์ | ประเภท | ตัวเลือก | คำอธิบาย |
|---|---|---|---|
| to | String | จำเป็น | เป้าหมายการส่ง หมายเลขโทรศัพท์หรือที่อยู่อีเมล, +6598765432, support@engagelab.com |
| end_user_ip | String | ไม่บังคับ | ที่อยู่ IP ของผู้ใช้ปลายทาง ใช้เมื่อต้องการจำกัดขีดจำกัดคำขอจากที่อยู่ IP เดียวกันในช่วงเวลาต่างๆ เช่น: 10.3.5.7 |
| 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 หากไม่ส่งค่าฟิลด์ params เมื่อส่งข้อความจะใช้ from_id ที่เทมเพลตกำหนดไว้ล่วงหน้า
- หากส่งค่าฟิลด์ params เช่น
params:{"from_id":"12345"}เมื่อส่งข้อความ from_id ของเทมเพลตจะถูกแทนที่ด้วย 12345 - สำหรับฟิลด์ตัวแปรที่กำหนดเองในเนื้อหาเทมเพลตตอนสร้างเทมเพลต ก็ต้องกำหนดค่าผ่าน params เช่นกัน เช่น เนื้อหาเทมเพลต
Hi {{name}}, your verify code is {{code}}กรณีนี้ต้องกำหนดค่าพารามิเตอร์params:{"name":"Bob"} - ตัวแปรพิเศษของช่องทาง Email: สำหรับช่องทาง Email รองรับการแทนที่หัวข้ออีเมล (
subject) ชื่อผู้ส่ง (from_name) อีเมลผู้ส่ง (from_mail) ฯลฯ แบบไดนามิกผ่านparamsสำหรับการใช้งานขั้นสูงโดยละเอียด โปรดดู สร้างเทมเพลต - การใช้งานขั้นสูงของตัวแปรเทมเพลต Email
พารามิเตอร์การตอบกลับ
การตอบกลับสำเร็จ
| ฟิลด์ | ประเภท | ตัวเลือก | คำอธิบาย |
|---|---|---|---|
| message_id | String | จำเป็น | ID ข้อความ ระบุข้อความหนึ่ง ๆ ได้อย่างเฉพาะเจาะจง |
| send_channel | String | จำเป็น | ระบุช่องทางที่ใช้ส่งในขณะนี้ ค่าที่รับได้คือ whatsapp/sms/email/voice |
{
"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"
}
รหัสข้อผิดพลาด
ตารางด้านล่างอธิบายเฉพาะข้อผิดพลาดที่ API นี้ส่งคืนในขั้นตอนการยืนยันตัวตน การตรวจสอบก่อนส่ง และการส่งแบบซิงโครนัส ความล้มเหลวในการจัดส่งแบบอะซิงโครนัสหลังผู้ให้บริการรับข้อความแล้วจะไม่ถูกส่งคืนผ่าน API นี้ ให้ดึงผ่านการสอบถามสถานะข้อความหรือ callback
ผู้เรียกควรใช้ code เพื่อตัดสินประเภทข้อผิดพลาด ใช้ message เพื่อแสดงเหตุผลเฉพาะหรือช่วยในการแก้ไขปัญหา ไม่แนะนำให้พึ่งพาข้อความ message ที่ตายตัวในการเขียนตรรกะทางธุรกิจ
| รหัสข้อผิดพลาด | http code | คำอธิบาย |
|---|---|---|
| 1000 | 500 | ข้อผิดพลาดภายใน |
| 2001 | 401 | การยืนยันตัวตนล้มเหลว ไม่ได้แนบ token ที่ถูกต้อง |
| 2002 | 401 | การยืนยันตัวตนล้มเหลว token หมดอายุหรือถูกปิดใช้งานแล้ว |
| 2003 | 403 | IP นี้ไม่ได้รับอนุญาตให้ส่งข้อความ |
| 2004 | 403 | ไม่มีสิทธิ์เรียกใช้ API นี้ |
| 3001 | 400 | รูปแบบพารามิเตอร์คำขอไม่ถูกต้อง โปรดตรวจสอบว่าเนื้อหา JSON เป็นไปตามรูปแบบพารามิเตอร์หรือไม่ |
| 3002 | 400 | พารามิเตอร์คำขอไม่ถูกต้อง โปรดตรวจสอบว่าพารามิเตอร์คำขอเป็นไปตามข้อกำหนดหรือไม่ |
| 3003 | 400 | พารามิเตอร์คำขอไม่ถูกต้อง การตรวจสอบทางธุรกิจที่เกี่ยวข้องล้มเหลว ดูรายละเอียดได้ที่คำอธิบายข้อผิดพลาดในฟิลด์ message |
| 3004 | 400 | เกินขีดจำกัดความถี่ สำหรับเทมเพลตเดียวกันและผู้ใช้เป้าหมายเดียวกัน ไม่สามารถส่งซ้ำได้ภายในช่วงเวลาที่รหัส OTP ยังมีผล |
| 3005 | 400 | ยอดคงเหลือที่ใช้ได้ของบัญชีไม่เพียงพอ |
| 3013 | 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 | หมายเลขยังไม่ได้ลงทะเบียน/เป็นหมายเลขว่าง |
| 6001 | 429 | ความถี่ในการส่งสำหรับหมายเลขโทรศัพท์เดียวกันเกินขีดจำกัด หน้าต่างจำกัดอาจเป็นนาที ชั่วโมง หรือวันปฏิทิน |
| 6002 | 429 | ความถี่ในการส่งสำหรับ IP ของผู้ใช้ปลายทางเดียวกันเกินขีดจำกัด หน้าต่างจำกัดอาจเป็นนาทีหรือชั่วโมง ตรวจสอบเฉพาะเมื่อคำขอมี end_user_ip |
| 6003 | 429 | ปริมาณการส่งรายวันหรือรายเดือนทั่วทั้งแอปพลิเคชันถึงขีดจำกัดแล้ว |
| 6006 | 403 | ไม่อนุญาตให้ส่งในประเทศหรือภูมิภาคปัจจุบัน |
| 6007 | 403 | บริการส่งรหัสยืนยันทาง SMS ถูกระงับ อาจเป็นการระงับทุกประเทศ/ภูมิภาค หรือประเทศ/ภูมิภาคปัจจุบัน |
| 6008 | 429 | ปริมาณการส่งรายวันหรือรายเดือนของประเทศหรือภูมิภาคปัจจุบันถึงขีดจำกัดแล้ว |
คำอธิบายข้อผิดพลาดการจำกัดอัตราและปริมาณการส่ง
3004คือการควบคุมความถี่การส่ง OTP ตามเทมเพลต หน้าต่างจำกัดอิงตามการตั้งค่าเทมเพลต และอาจไม่เท่ากับระยะเวลาที่ใช้ได้ของรหัสยืนยัน6001และ6002คือการควบคุมความถี่เพื่อความปลอดภัยในมิติหมายเลขหรือ IP ของผู้ใช้ปลายทาง6003และ6008ระบุว่าคำขอนี้ถึงขีดจำกัดปริมาณการส่งแล้ว หลังจากถึงขีดจำกัดและเข้าสู่สถานะระงับ คำขอถัดไปอาจส่งคืน6007- เมื่อได้รับ HTTP 429 โปรดอย่ารีทรายทันทีอย่างต่อเนื่อง ให้ลองใหม่ในภายหลัง และหากยังเกิดขึ้นต่อเนื่อง ให้ติดต่อผู้ดูแลระบบหรือฝ่ายสนับสนุนทางเทคนิค
5011ถึง5019ครอบคลุมเฉพาะความล้มเหลวที่ระบุได้ในขั้นตอนการส่งแบบซิงโครนัส สถานะเช่นหมายเลขว่าง ปิดเครื่อง หรือผู้ให้บริการปฏิเสธหลังผู้ให้บริการรับข้อความแล้ว ยังอาจถูกส่งคืนผ่านสถานะข้อความแบบอะซิงโครนัสหรือ callback










