อินเทอร์เฟซการเรียกกลับสถานะวงจรชีวิต
เอกสารนี้อธิบายโครงสร้างข้อมูลและคำอธิบายฟิลด์ของอินเทอร์เฟซการเรียกกลับสถานะวงจรชีวิตของข้อความ ระบบจะเรียกกลับข้อมูลสถานะไปยัง URL ที่ลูกค้าตั้งค่าไว้ผ่านวิธี HTTP POST เมื่อสถานะข้อความมีการเปลี่ยนแปลง
วิธีการเรียกกลับ
- เมธอดคำขอ:
POST - Content-Type:
application/json - การตอบกลับสำเร็จ: สถานะ HTTP 200 หรือ 204
- การลองใหม่เมื่อล้มเหลว: หากลูกค้าไม่คืนสถานะสำเร็จ ระบบจะลองใหม่โดยอัตโนมัติ
โครงสร้างข้อมูล
1. โครงสร้างชั้นนอก (ReportLifecycles)
{
"total": 1,
"rows": [
{
// ReportLifecycle 对象数组
}
]
}
| ชื่อฟิลด์ | ประเภท | คำอธิบาย | จำเป็นต้องคืนค่าหรือไม่ |
|---|---|---|---|
total |
int64 | จำนวนระเบียนทั้งหมด | ใช่ |
rows |
array | อาเรย์ข้อมูลสถานะวงจรชีวิต | ใช่ |
2. ออบเจ็กต์ ReportLifecycle
แต่ละสมาชิกในอาเรย์ rows มีโครงสร้างดังนี้:
| ชื่อฟิลด์ | ประเภท | คำอธิบาย | จำเป็นต้องคืนค่าหรือไม่ |
|---|---|---|---|
message_id |
string | ID ข้อความ | ใช่ |
to |
string | หมายเลขผู้รับ | ใช่ |
server |
string | ประเภทบริการ | ใช่ |
channel |
string | ประเภทช่องทาง | ใช่ |
itime |
int64 | timestamp การเรียกกลับ (วินาที) | ใช่ |
custom_args |
map[string]any | พารามิเตอร์ที่กำหนดเอง (พารามิเตอร์ที่ส่งเข้ามาขณะส่ง) | ไม่ใช่ |
status |
object | ออบเจ็กต์รายละเอียดสถานะ | ไม่ใช่ |
3. ออบเจ็กต์ Status
ออบเจ็กต์ข้อมูลรายละเอียดสถานะ:
| ชื่อฟิลด์ | ประเภท | คำอธิบาย | จำเป็นต้องคืนค่าหรือไม่ |
|---|---|---|---|
message_status |
string | สถานะข้อความ เช่น: sent、sent_fail、delivered、delivered_fail、verified เป็นต้น |
ใช่ |
status_data |
object | ออบเจ็กต์ข้อมูลสถานะ ดูรายละเอียดด้านล่าง | ใช่ |
billing |
object | ออบเจ็กต์ข้อมูลการเรียกเก็บเงิน ดูรายละเอียดด้านล่าง | ไม่ใช่ |
error_code |
int | รหัสข้อผิดพลาด 0 หมายถึงไม่มีข้อผิดพลาด | ใช่ |
error_detail |
object | ออบเจ็กต์รายละเอียดข้อผิดพลาด ดูรายละเอียดด้านล่าง | ไม่ใช่ |
kwai_extra |
object | ข้อมูลส่วนขยายเฉพาะของ Kwai ดูรายละเอียดด้านล่าง | ไม่ใช่ |
หมายเหตุ: ฟิลด์ต่อไปนี้ใช้สำหรับสถิติภายใน จะไม่ถูกเรียกกลับไปยังลูกค้า:
- ฟิลด์การวิเคราะห์สถิติภายในanalysis
4. ออบเจ็กต์ StatusData
ข้อมูลพื้นฐานที่เกี่ยวข้องกับสถานะ:
| ชื่อฟิลด์ | ประเภท | คำอธิบาย | จำเป็นต้องคืนค่าหรือไม่ |
|---|---|---|---|
msg_time |
int64 | timestamp การสร้างข้อความ (วินาที) | ใช่ |
message_id |
string | ID ข้อความ | ใช่ |
current_send_channel |
string | ชื่อช่องทางที่ใช้ส่งปัจจุบัน | ใช่ |
template_key |
string | Key การตั้งค่าเทมเพลต | ใช่ |
business_id |
string | ID ธุรกิจ | ใช่ |
หมายเหตุ: ฟิลด์ต่อไปนี้เป็นข้อมูลที่ละเอียดอ่อนหรือฟิลด์ภายใน ซึ่งถูกกรองออกแล้ว จะไม่ถูกเรียกกลับไปยังลูกค้า:
- เนื้อหาข้อความ (ข้อมูลที่ละเอียดอ่อน)message_content- จำนวนชิ้นส่วนข้อความ (ฟิลด์ภายใน)parts- ประเภทข้อความ (ฟิลด์ภายใน)msg_type- ประเภทโปรโตคอล (ฟิลด์ภายใน)protocol_type- ID ผู้ให้บริการ (ข้อมูลที่ละเอียดอ่อน)supplier_ids
5. ออบเจ็กต์ Billing
ข้อมูลการเรียกเก็บเงิน (คืนค่าเฉพาะเมื่อมีข้อมูลการเรียกเก็บเงิน):
| ชื่อฟิลด์ | ประเภท | คำอธิบาย | จำเป็นต้องคืนค่าหรือไม่ |
|---|---|---|---|
cost |
float64 | จำนวนค่าใช้จ่าย (เก็บทศนิยม 4 ตำแหน่ง) | ใช่ |
currency |
string | สกุลเงิน คงที่เป็น "USD" | ใช่ |
หมายเหตุ: ฟิลด์ต่อไปนี้เป็นฟิลด์การเรียกเก็บเงินภายใน จะไม่ถูกเรียกกลับไปยังลูกค้า:
- ฟิลด์การเรียกเก็บเงินภายใน (หน่วยหนึ่งในหมื่น)cost10000- ต้นทุนฝั่งผู้ส่ง (หน่วยหนึ่งในหมื่น)sender_cost10000
6. ออบเจ็กต์ ErrorDetail
รายละเอียดข้อผิดพลาด (คืนค่าเฉพาะเมื่อเกิดข้อผิดพลาด):
| ชื่อฟิลด์ | ประเภท | คำอธิบาย | จำเป็นต้องคืนค่าหรือไม่ |
|---|---|---|---|
message |
string | คำอธิบายข้อความข้อผิดพลาด | ใช่ |
channel_code |
string | รหัสข้อผิดพลาดดั้งเดิมที่ช่องทางคืนมา | ใช่ |
channel_message |
string | ข้อความข้อผิดพลาดดั้งเดิมที่ช่องทางคืนมา | ใช่ |
7. ออบเจ็กต์ KwaiExtra
ข้อมูลส่วนขยายเฉพาะสำหรับลูกค้า Kwai (คืนค่าเฉพาะเมื่ออยู่ในสถานะนำส่งและเป็นลูกค้า Kwai):
| ชื่อฟิลด์ | ประเภท | คำอธิบาย | จำเป็นต้องคืนค่าหรือไม่ |
|---|---|---|---|
delivered_time |
int64 | timestamp การนำส่ง (มิลลิวินาที) | ใช่ |
parts |
int | จำนวนรายการที่เรียกเก็บเงิน | ใช่ |
duration |
int64 | ระยะเวลาการรับสาย (วินาที) มีเฉพาะข้อความ Voice เท่านั้น | ไม่ใช่ |
คำอธิบายสถานะข้อความ
ค่าสถานะข้อความที่พบบ่อย:
| ค่าสถานะ | คำอธิบาย |
|---|---|
sent |
ส่งไปยังช่องทางแล้ว |
sent_fail |
ส่งล้มเหลว |
delivered |
นำส่งถึงเครื่องผู้ใช้แล้ว |
delivered_fail |
นำส่งล้มเหลว |
verified |
ผู้ใช้ตรวจสอบแล้ว (เช่น รหัส OTP ถูกใช้งาน) |
ตัวอย่างการเรียกกลับ
ตัวอย่าง 1: นำส่งข้อความสำเร็จ
{
"total": 1,
"rows": [
{
"message_id": "123456789",
"to": "+6598765432",
"server": "sms",
"channel": "sms",
"itime": 1701234567,
"custom_args": {
"order_id": "ORDER123",
"user_id": "USER456"
},
"status": {
"message_status": "delivered",
"status_data": {
"msg_time": 1701234560,
"message_id": "123456789",
"current_send_channel": "CHANNEL_A",
"template_key": "verify_code",
"business_id": "1001"
},
"billing": {
"cost": 0.005,
"currency": "USD"
},
"error_code": 0
}
}
]
}
ตัวอย่าง 2: ส่งข้อความล้มเหลว
{
"total": 1,
"rows": [
{
"message_id": "123456790",
"to": "+6598765433",
"server": "sms",
"channel": "sms",
"itime": 1701234568,
"status": {
"message_status": "sent_fail",
"status_data": {
"msg_time": 1701234561,
"message_id": "123456790",
"current_send_channel": "CHANNEL_B",
"template_key": "verify_code",
"business_id": "1001"
},
"error_code": 4001,
"error_detail": {
"message": "Invalid phone number",
"channel_code": "INVALID_NUMBER",
"channel_message": "The phone number format is invalid"
}
}
}
]
}
ตัวอย่าง 3: นำส่งข้อความล้มเหลว (พร้อมข้อมูลการเรียกเก็บเงิน)
{
"total": 1,
"rows": [
{
"message_id": "123456791",
"to": "+6598765434",
"server": "sms",
"channel": "sms",
"itime": 1701234570,
"custom_args": {
"campaign": "new_year_promo"
},
"status": {
"message_status": "delivered_fail",
"status_data": {
"msg_time": 1701234562,
"message_id": "123456791",
"current_send_channel": "CHANNEL_C",
"template_key": "marketing",
"business_id": "1001"
},
"billing": {
"cost": 0.0045,
"currency": "USD"
},
"error_code": 5002,
"error_detail": {
"message": "Phone number unreachable",
"channel_code": "UNREACHABLE",
"channel_message": "Subscriber absent"
}
}
}
]
}
ตัวอย่าง 4: นำส่งข้อความ Voice ของลูกค้า Kwai
{
"total": 1,
"rows": [
{
"message_id": "123456792",
"to": "+6598765435",
"server": "voice",
"channel": "voice",
"itime": 1701234575,
"status": {
"message_status": "delivered",
"status_data": {
"msg_time": 1701234565,
"message_id": "123456792",
"current_send_channel": "VOICE_CHANNEL_A",
"template_key": "voice_verify",
"business_id": "2001"
},
"billing": {
"cost": 0.012,
"currency": "USD"
},
"error_code": 0,
"kwai_extra": {
"delivered_time": 1701234575000,
"parts": 1,
"duration": 45
}
}
}
]
}
ข้อควรทราบ
กฎการคืนค่าฟิลด์
- ฟิลด์ทั้งหมดที่ทำเครื่องหมายเป็น
omitemptyจะไม่ปรากฏใน JSON ที่คืนค่า เมื่อค่าว่างหรือเป็นค่าศูนย์ - ข้อมูลที่ละเอียดอ่อนและฟิลด์ภายในถูกกรองหรือเคลียร์ก่อนการเรียกกลับ
- ฟิลด์ทั้งหมดที่ทำเครื่องหมายเป็น
ความปลอดภัย
- เนื้อหาข้อความ (
message_content) จะไม่ถูกเรียกกลับไปยังลูกค้า - ข้อมูลที่ละเอียดอ่อน เช่น ID ผู้ให้บริการ (
supplier_ids) ถูกกรองออกแล้ว - ฟิลด์การเรียกเก็บเงินภายใน (
cost10000、sender_cost10000) จะไม่ถูกเรียกกลับ
- เนื้อหาข้อความ (
ข้อกำหนดการรับ
- อินเทอร์เฟซการเรียกกลับของลูกค้าต้องตอบกลับภายใน 5 วินาที
- ต้องคืนสถานะ HTTP 200 หรือ 204 เพื่อแสดงว่ารับสำเร็จ
- หากคืนสถานะอื่นหรือหมดเวลา ระบบจะลองใหม่โดยอัตโนมัติ
กลไกการลองใหม่
- หลังจากการเรียกกลับล้มเหลว ระบบจะลองใหม่โดยอัตโนมัติ
- ช่วงเวลาการลองใหม่จะเพิ่มขึ้นทีละขั้น
- ในระหว่างการลองใหม่ ข้อมูลจะถูกบันทึกไว้ใน Redis
คำอธิบาย timestamp
itime: timestamp ที่เกิดการเรียกกลับ หน่วยเป็นวินาทีmsg_time: timestamp การสร้างข้อความ หน่วยเป็นวินาทีdelivered_time: ฟิลด์เฉพาะของ Kwai, timestamp การนำส่ง หน่วยเป็นมิลลิวินาที
พารามิเตอร์ที่กำหนดเอง
- ฟิลด์
custom_argsจะคืนค่าพารามิเตอร์ที่กำหนดเองที่ส่งเข้ามาขณะส่งข้อความตามเดิม - หากไม่ได้ส่งพารามิเตอร์ที่กำหนดเองขณะส่ง ฟิลด์นี้จะไม่ปรากฏในข้อมูลการเรียกกลับ
- ฟิลด์
เอกสารอ้างอิงรหัสข้อผิดพลาด
คำอธิบายรหัสข้อผิดพลาดที่พบบ่อย (สำหรับรหัสข้อผิดพลาดเฉพาะ โปรดดูเอกสารรหัสข้อผิดพลาด):
| รหัสข้อผิดพลาด | คำอธิบาย |
|---|---|
| 0 | ไม่มีข้อผิดพลาด ดำเนินการสำเร็จ |
| 4001 | รูปแบบหมายเลขไม่ถูกต้อง |
| 4002 | ไม่มีหมายเลขนี้ |
| 5001 | ช่องทางปฏิเสธ |
| 5002 | ไม่สามารถเข้าถึงผู้ใช้ได้ |
| 6001 | เครือข่ายหมดเวลา |
สำหรับคำอธิบายรหัสข้อผิดพลาดที่ละเอียดยิ่งขึ้น โปรดดูเอกสารรหัสข้อผิดพลาดแยกต่างหาก
บันทึกการอัปเดต
- 2024-01: เวอร์ชันแรก
- เพิ่มฟิลด์
kwai_extraเพื่อรองรับลูกค้า Kwai - กรองฟิลด์ข้อมูลที่ละเอียดอ่อน เพิ่มความปลอดภัย










