การตั้งค่าการเรียกกลับ
ภาพรวม
กำหนดค่าที่อยู่การเรียกกลับเพื่อรับการเรียกกลับข้อมูลสำหรับ "สถานะข้อความ" และ "การแจ้งเตือนข้อความ" จากบริการ EngageLab OTP ไปยังระบบธุรกิจ และดำเนินการสถิติข้อมูล การส่งซ้ำตามกลยุทธ์ หรือเรียกเตือนระบบตามข้อมูลการเรียกกลับ
- สถานะข้อความ: สถานะของข้อความ OTP หลังจากที่ถูกส่ง รวมถึงสถานะที่ส่งแล้ว ส่งถึงแล้ว อ่านแล้ว และยืนยันแล้ว
- การแจ้งเตือนข้อความ: ส่วนใหญ่เป็นเหตุการณ์ของระบบ เช่น อัตราการยืนยันต่ำ หรือยอดคงเหลือไม่เพียงพอ
กำหนดค่าการเรียกกลับ
ในหน้า [การจัดการการกำหนดค่า] - [การตั้งค่าการเรียกกลับ] คลิก "กำหนดค่าการเรียกกลับ" เพื่อกำหนดค่าการเรียกกลับสำหรับบริการ EngageLab OTP
ตามที่แสดงด้านบน กรอกข้อมูลสำหรับ "คำอธิบายการเรียกกลับ," "ที่อยู่การเรียกกลับ," "ชื่อผู้ใช้," "การอนุญาต," "เหตุการณ์การเรียกกลับ," และ "การตอบสนองข้อความ" ตามลำดับ
- เลือกเหตุการณ์การเรียกกลับ และข้อมูลจะถูกส่งไปยังที่อยู่การเรียกกลับที่คุณกำหนดไว้เมื่อเกิดเหตุการณ์ที่เลือก
- คลิกที่สถานะข้อความและการตอบสนองข้อความทางด้านขวาเพื่อดูตัวอย่างที่เกี่ยวข้อง
กำหนดค่าที่อยู่การเรียกกลับ
เมื่อกำหนดค่าที่อยู่การเรียกกลับ ระบบ EngageLab OTP จะส่งคำขอ HTTP POST ไปยังที่อยู่นั้น บริการนักพัฒนาที่เกี่ยวข้องกับที่อยู่นี้ต้องตอบกลับด้วยรหัสสถานะ HTTP 200 ภายใน 3 วินาทีหลังจากได้รับคำขอ POST มิฉะนั้น ระบบจะพิจารณาว่าที่อยู่นั้นไม่ถูกต้อง
- บริการนักพัฒนาจำเป็นต้องตอบกลับด้วยรหัสสถานะ HTTP 200 เท่านั้น และไม่จำเป็นต้องส่งข้อความตอบกลับ
ตัวอย่างคำขอ
สมมติว่าที่อยู่การเรียกกลับที่กำหนดไว้คือ https://example.engagelabotp.callback.com
เราจะส่งข้อความว่างไปยังที่อยู่นี้ โดยใช้คำสั่ง curl ดังนี้:
curl -X POST https://example.engagelabotp.callback.com -d ''
ตัวอย่างการตอบกลับ
บริการนักพัฒนาที่เกี่ยวข้องกับที่อยู่การเรียกกลับนี้จำเป็นต้องตอบกลับด้วยรหัสสถานะ HTTP 200 เมื่อได้รับคำขอ POST ดังนี้:
HTTP/1.1 200 OK
Content-Length: 0
การกำหนดค่ากลไกความปลอดภัยของที่อยู่การเรียกกลับ
- การตั้งค่าชื่อผู้ใช้
นี่เป็นการดำเนินการที่เลือกได้ หากตั้งค่าชื่อผู้ใช้ จะต้องระบุรหัสลับด้วย
เพื่อให้มั่นใจว่าต้นทางของข้อความคือ EngageLab คุณสามารถเลือกดำเนินการตรวจสอบความปลอดภัยกับต้นทางของข้อมูล POST ได้
หลังจากกำหนดค่าชื่อผู้ใช้และรหัสลับ ข้อมูลที่ส่งโดย EngageLab จะรวม HTTP Header: X-CALLBACK-ID
ค่าของ X-CALLBACK-ID
คือ timestamp={timestamp};nonce={nonce};username={username};signature={signature}
ตัวอย่าง:
X-CALLBACK-ID: timestamp=1681991058;nonce=123123123123;username=test;signature=59682d71e2aa2747252e4e62c15f6f241ddecc8ff08999eda7e0c4451207a16b
โดยที่ timestamp คือเวลาประทับของข้อความการเรียกกลับ (มาตรฐาน), nonce คือหมายเลขสุ่ม, และ signature คือข้อมูลลายเซ็น ลายเซ็นถูกคำนวณดังนี้: signature=HMAC-SHA256(secret, timestamp+nonce+username)
ด้านล่างคือตัวอย่างโค้ด Python สำหรับการคำนวณ signature
:
import hashlib, hmac
def verify(username, secret, timestamp, nonce, signature):
return signature == hmac.new(
key=secret,
msg='{}{}{}'.format(timestamp, nonce, username),
digestmod=hashlib.sha256).hexdigest()
- การตั้งค่าการอนุญาต
นี่เป็นการดำเนินการที่เลือกได้ หากที่อยู่การเรียกกลับของคุณต้องการการตรวจสอบสิทธิ์สำหรับคำขอของ EngageLab โปรดระบุข้อมูลการตรวจสอบสิทธิ์ที่นี่ และ EngageLab จะรวมการอนุญาตนี้ในคำขอ
เนื้อหาคำขอการเรียกกลับ
เมื่อเหตุการณ์การเรียกกลับถูกกระตุ้น บริการระบบ EngageLab OTP จะส่งข้อมูลไปยังที่อยู่การเรียกกลับ
ตัวอย่างคำขอ "สถานะข้อความ"
สถานะข้อความ:
- plan: กำหนดเวลาส่ง
- sent: ส่งแล้ว
- sent_failed: การส่งล้มเหลว
- delivered: ส่งถึงแล้ว
- delivered_failed: การส่งถึงล้มเหลว
- verified: ยืนยันแล้ว
- verified_failed: การยืนยันล้มเหลว
- verified_timeout: การยืนยันหมดเวลา
{
"total": 2, // จำนวนทั้งหมด
"rows": [{ // ข้อมูล
"message_id": "1742442805608914944", // รหัสข้อความ
"to": "+8615989574757", // ผู้รับ
"server": "otp", // บริการ, กำหนดเป็น otp
"channel": "otp", // ช่องทาง, กำหนดเป็น otp
"itime": 1704265712, // เวลาสร้างข้อมูลนี้
"status": { // สถานะข้อความ
"message_status": "plan", // สถานะข้อความ, plan สำหรับกำหนดเวลาส่ง, sent สำหรับส่งแล้ว, sent_failed สำหรับการส่งล้มเหลว
"status_data": { // ข้อมูลสถานะ
"msg_time": 1704265712, // เวลาส่งข้อความ
"message_id": "1742442805608914944", // รหัสข้อความ
"current_send_channel": "", // ช่องทางการส่งปัจจุบัน, ค่าเป็น sms, email, voice, whatsapp; ว่างเปล่าสำหรับ plan
"template_key": "auto_create_templateu25az170295320745", // คีย์แม่แบบ
"business_id": "100917676394736" // รหัสธุรกิจ
},
"error_code": 0
}
}, {
"message_id": "1742442805608914944",
"to": "+8615989574757",
"server": "otp",
"channel": "otp",
"itime": 1704265712,
"status": {
"message_status": "sent_failed",
"status_data": {
"msg_time": 1704265712,
"message_id": "1742442805608914944",
"current_send_channel": "whatsapp",
"template_key": "auto_create_templateu25az170295320745",
"business_id": "100917676394736"
},
"error_code":5001, // รหัสข้อผิดพลาด
"error_detail":{ // รายละเอียดข้อผิดพลาด
"message":"sender config is invalid" // ข้อความข้อผิดพลาด
}
}
}]
}
ตัวอย่างคำขอ "การแจ้งเตือนข้อความ"
เหตุการณ์:
- insufficient_balance: ยอดคงเหลือต่ำกว่าขีดจำกัดการแจ้งเตือน
{
"total": 1,
"rows": [{
"server": "otp",
"itime": 1712458844,
"notification": {
"event": "insufficient_balance",
"notification_data": {
"business_id": "1744569418236633088",
"remain_balance": -0.005, // ยอดคงเหลือปัจจุบัน
"balance_threshold": 2 // ขีดจำกัดการแจ้งเตือน
}
}
}]
}
ตัวอย่างคำขอ "การตอบสนองข้อความ"
เหตุการณ์:
- uplink_message: ข้อความขาขึ้น
{
"total": 1,
"rows": [
{
"server": "otp",
"itime": 1741083306,
"message_id": "0",
"business_id": "0",
"response": {
"event": "uplink_message",
"response_data": {
"message_sid": "SM1234567890",
"account_sid": "AC1234567890",
"from": "+1234567890",
"to": "+0987654321",
"body": "Hello, it's time to struggle!"
}
}
}
]
}