ข้ามไปยังเนื้อหา

Notify batch

POST https://api.pushwoosh.com/messaging/v2/notify/batch

ส่งหลายข้อความในการเรียกครั้งเดียว ทุกรายการเป็น Notify อิสระ: จะถูกตรวจสอบเหมือนกับคำขอ Notify แบบเดี่ยว และจะได้รับผลลัพธ์ของตัวเอง

โครงสร้างคำขอ

Anchor link to
รูปแบบ
{
"items": [
{
"item_id": "caller-defined-id",
"request": { ... }
}
]
}
ฟิลด์ประเภทคำอธิบาย
itemsarray of NotifyBatchItemจำเป็นต้องมี 1 ถึง 500 รายการ (ขีดจำกัดที่กำหนดค่าโดยเซิร์ฟเวอร์) รายการต่างๆ จะถูกประมวลผลพร้อมกัน ผลลัพธ์จะกลับมาตามลำดับของคำขอเสมอ

NotifyBatchItem

Anchor link to
ฟิลด์ประเภทคำอธิบาย
item_idstringID ความสัมพันธ์ที่ผู้เรียกให้มา (ไม่บังคับ) ซึ่งจะถูกส่งกลับมาในผลลัพธ์ที่ตรงกัน Pushwoosh ไม่ได้ใช้ค่านี้ในกรณีอื่น
requestNotifyRequestเนื้อหาเดียวกับการเรียก Notify ครั้งเดียว — รวมถึง segment หรือ transactional, transaction_id จำเป็นต้องมี

ตัวอย่าง

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify/batch \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"item_id": "order-1001",
"request": {
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["user-123"] },
"payload": {
"content": {
"localized_content": {
"en": { "ios": { "body": "Your order has shipped." } }
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL",
"transaction_id": "order-1001-shipped"
}
}
},
{
"item_id": "order-1002",
"request": {
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["user-456"] },
"payload": {
"content": {
"localized_content": {
"en": { "ios": { "body": "Your order has shipped." } }
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL",
"transaction_id": "order-1002-shipped"
}
}
}
]
}'

การตอบกลับ

Anchor link to
{
"results": [
{
"item_id": "order-1001",
"index": 0,
"result": {
"message_code": "XXXXX-XXXXX-XXXXX",
"unknown_identifiers": []
}
},
{
"item_id": "order-1002",
"index": 1,
"error": {
"code": 3,
"message": "invalid argument",
"reason": "EmptySchedule",
"domain": "api.pushwoosh.com"
}
}
],
"succeeded": 1,
"failed": 1
}
ฟิลด์ประเภทคำอธิบาย
resultsarray of NotifyBatchResultหนึ่งรายการต่อหนึ่งรายการที่ร้องขอ ตามลำดับของคำขอ
succeededintegerจำนวนรายการที่คืนค่าผลลัพธ์
failedintegerจำนวนรายการที่คืนค่าข้อผิดพลาด

NotifyBatchResult

Anchor link to
ฟิลด์ประเภทคำอธิบาย
item_idstringการส่งกลับ item_id ของรายการคำขอ
indexintegerตำแหน่งของรายการในคำขอที่เริ่มจากศูนย์ ใช้สิ่งนี้เพื่อเชื่อมโยงผลลัพธ์เมื่อ item_id ถูกเว้นว่างไว้
resultobjectตั้งค่าเมื่อรายการสำเร็จ — รูปแบบเดียวกับการตอบกลับของ Notify ครั้งเดียว: message_code และ unknown_identifiers
errorNotifyBatchErrorตั้งค่าเมื่อรายการล้มเหลว

NotifyBatchError

Anchor link to
ฟิลด์ประเภทคำอธิบาย
codeintegerรหัสสถานะ gRPC (google.rpc.Code) เช่น 3 สำหรับ INVALID_ARGUMENT
messagestringข้อความแสดงข้อผิดพลาดสำหรับนักพัฒนา เป็นภาษาอังกฤษ
reasonstringชื่อสถานะแบบย่อ — ค่าเดียวกับการเรียก Notify ครั้งเดียวจะคืนค่า เช่น EmptySchedule
domainstringโดเมนข้อผิดพลาด api.pushwoosh.com

ข้อผิดพลาด

Anchor link to

ข้อผิดพลาดใช้ error envelope มาตรฐานของ gRPC-Gateway: { "code": ..., "message": ..., "details": [...] } นี่คือข้อผิดพลาดระดับ envelope ที่ทำให้คำขอทั้งหมดล้มเหลว — รายการแต่ละรายการที่ล้มเหลวจะสร้าง error ต่อรายการใน results[] แทน (ดู NotifyBatchError ด้านบน) ไม่ใช่หนึ่งในข้อผิดพลาดเหล่านี้

สถานะ HTTPเงื่อนไข
400items ว่างเปล่า
400items มีมากกว่าขีดจำกัดที่กำหนดค่าโดยเซิร์ฟเวอร์ (ค่าเริ่มต้นคือ 500)
400หนึ่งในรายการขาด request

ตัวอย่าง

การส่ง 501 รายการเมื่อขีดจำกัดคือ 500 จะคืนค่า HTTP 400:

{
"code": 3,
"message": "items must not exceed 500 entries, got 501",
"details": []
}

ที่เกี่ยวข้อง

Anchor link to