Notify
POST https://api.pushwoosh.com/messaging/v2/notify
สร้างและตั้งเวลาส่งข้อความเดียว
โครงสร้างของ Request
Anchor link toส่วน body ของ request คือ NotifyRequest ซึ่งมีหนึ่งในสองประเภทนี้:
segment: กำหนดเป้าหมายไปยังกลุ่มเป้าหมาย (audience segment) โดยใช้รหัส segment, นิพจน์ seglang หรือนิพจน์ตัวกรองที่มีโครงสร้างtransactional: ส่งไปยังรายการที่ระบุของ hwids, User ID, push tokens หรืออุปกรณ์ทดสอบ
{ "segment": { ... }, // OR "transactional": { ... }, "transaction_id": "unique-uuid"}| Field | Type | Description |
|---|---|---|
transaction_id | string | ตัวเลือก. Idempotency key สำหรับ request — ทำงานได้ทั้งกับ segment และ transactional การเรียกซ้ำด้วย transaction_id เดียวกันภายใน 5 นาทีจะคืนค่า message_code เดิมแทนที่จะส่งข้อความซ้ำ ใช้ UUID หรือค่าอื่นที่ไม่ซ้ำกันต่อการส่งเชิงตรรกะ |
NotifySegment
Anchor link toกำหนดเป้าหมายผู้ใช้ที่ตรงกับ audience segment หรือนิพจน์ตัวกรอง
| Field | Type | Description |
|---|---|---|
schedule | Schedule | เวลาและวิธีการส่ง จำเป็นต้องระบุ |
application | string | Application code |
platforms | array of Platform | แพลตฟอร์มที่ข้อความกำหนดเป้าหมาย |
code | string | Segment code ไม่สามารถใช้ร่วมกับ expression และ filter_expression ได้ |
expression | string | นิพจน์ Seglang |
filter_expression | FilterExpression | นิพจน์ตัวกรองที่มีโครงสร้าง (ขั้นสูง) |
payload | Payload | Push / SMS / Telegram / Kakao / LINE / WhatsApp / Viber payload ไม่สามารถใช้ร่วมกับ email_payload ได้ |
email_payload | EmailPayload | Email payload |
campaign | string | Campaign code เพื่อระบุว่าข้อความนี้เป็นของแคมเปญใด |
frequency_capping | FrequencyCapping | การจำกัดความถี่ต่อผู้ใช้ |
send_rate | SendRate | การควบคุมอัตราการส่ง |
message_type | MessageType | MESSAGE_TYPE_MARKETING (ค่าเริ่มต้น) หรือ MESSAGE_TYPE_TRANSACTIONAL ควบคุมการกรองของกลุ่มควบคุม |
dynamic_content_placeholders | map<string, string> | แทนที่ placeholders ในเนื้อหา |
meta_data | object | metadata รูปแบบอิสระที่ส่งต่อไปยังระบบวิเคราะห์ข้อมูลปลายทาง |
ตัวอย่าง: ส่งไปยัง segment
Anchor link tocurl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "segment": { "application": "XXXXX-XXXXX", "platforms": ["IOS", "ANDROID"], "code": "active_users", "payload": { "content": { "localized_content": { "en": { "ios": { "body": "Hello!" }, "android": { "body": "Hello!" } } } } }, "schedule": { "at": "2026-05-01T12:00:00Z" }, "message_type": "MESSAGE_TYPE_MARKETING" } }'NotifyTransactional
Anchor link toส่งไปยังรายชื่อผู้รับที่ระบุอย่างชัดเจน
| Field | Type | Description |
|---|---|---|
schedule | Schedule | จำเป็นต้องระบุ |
application | string | Application code |
platforms | array of Platform | แพลตฟอร์มที่ข้อความกำหนดเป้าหมาย |
test_devices | bool | หากเป็น true จะส่งไปยังอุปกรณ์ทดสอบของแอปเท่านั้น |
hwids | { "list": [string, ...] } | ส่งไปยัง hwids เหล่านี้เท่านั้น |
users | { "list": [string, ...] } | ส่งไปยัง User ID เหล่านี้เท่านั้น |
push_tokens | { "list": [string, ...] } | ส่งไปยัง push tokens เหล่านี้เท่านั้น |
payload | Payload | Push / SMS / Telegram / Kakao / LINE / WhatsApp / Viber payload |
email_payload | EmailPayload | Email payload |
return_unknown_identifiers | bool | เมื่อเป็น true การตอบกลับ unknown_identifiers จะแสดงรายการตัวระบุที่ไม่พบ |
use_latest_user_device | bool | ใช้ได้เฉพาะเมื่อคุณกำหนดเป้าหมายเป็น users เมื่อเป็น true ข้อความจะถูกส่งไปยังอุปกรณ์ที่ใช้งานล่าสุดของผู้ใช้แต่ละคน — อุปกรณ์ที่มี Last Application Open ล่าสุด — แทนที่จะส่งไปยังทุกอุปกรณ์ที่ผูกกับ User ID นั้น ค่าเริ่มต้นคือ false (ส่งไปยังทุกอุปกรณ์) |
campaign, frequency_capping, send_rate, message_type, dynamic_content_placeholders, meta_data | ดู NotifySegment ด้านบน |
test_devices, hwids, users และ push_tokens เป็นแบบ mutually exclusive ต้องตั้งค่าเพียงหนึ่งอย่างเท่านั้น
ตัวอย่าง: Transactional ตาม User ID
Anchor link tocurl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "transactional": { "application": "XXXXX-XXXXX", "platforms": ["IOS", "ANDROID"], "users": { "list": ["user-123", "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", "return_unknown_identifiers": true, "use_latest_user_device": true } }'Response
Anchor link to{ "result": { "message_code": "XXXXX-XXXXX-XXXXX", "unknown_identifiers": [] }}| Field | Type | Description |
|---|---|---|
message_code | string | รหัสข้อความ ที่ไม่ซ้ำกัน ใช้กับ /getMessageDetails และ endpoints สถิติข้อความ |
unknown_identifiers | array of string | ตัวระบุที่ไม่พบบนบัญชี จะถูกเติมข้อมูลก็ต่อเมื่อมีการตั้งค่า return_unknown_identifiers: true ในประเภท transactional |
ประเภทที่ใช้ร่วมกัน
Anchor link toSchedule
Anchor link to{ "at": "2026-05-01T12:00:00Z", "follow_user_timezone": true, "past_timezones_behaviour": "PAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY"}| Field | Type | Description |
|---|---|---|
at | timestamp | เวลาส่งแบบสัมบูรณ์ (RFC 3339) หากเป็นเวลาในอดีต ข้อความจะถูกส่งทันที สามารถตั้งล่วงหน้าได้สูงสุด 14 วัน |
after | duration | ทางเลือกแทน at ส่งหลังจากระยะเวลานี้จาก “ตอนนี้” (เช่น "3600s") |
follow_user_timezone | bool | เมื่อเป็น true อุปกรณ์แต่ละเครื่องจะได้รับข้อความ ณ เวลา at ในเขตเวลาท้องถิ่นของตน |
past_timezones_behaviour | enum | PAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY (ค่าเริ่มต้น), PAST_TIMEZONES_BEHAVIOUR_DO_NOT_SEND หรือ PAST_TIMEZONES_BEHAVIOUR_NEXT_DAY มีความหมายเฉพาะเมื่อ follow_user_timezone เป็น true |
FrequencyCapping
Anchor link toการจำกัดความถี่ต่อผู้ใช้สำหรับการส่งข้อความการตลาด หากต้องการปิดใช้งานการจำกัด ให้ละเว้น frequency_capping ทั้งหมด หรือส่ง days: 0 พร้อมกับ count: 0
{ "days": 7, "count": 3, "exclude": false, "avoid": true }days(int, 1–30 หรือ0เพื่อปิดใช้งานการจำกัด): กรอบเวลาย้อนหลัง ต้องส่งพร้อมกับcount— หากค่าใดค่าหนึ่งเป็น0อีกค่าหนึ่งก็ต้องเป็น0ด้วย การส่งค่าหนึ่งเป็น0ในขณะที่อีกค่าหนึ่งไม่ใช่ศูนย์จะคืนค่า400count(int, 1 หรือสูงกว่า หรือ0เพื่อปิดใช้งานการจำกัด): จำนวนข้อความสูงสุดที่อนุญาตภายในdaysใช้กฎการจับคู่เดียวกับdaysข้างต้นexclude(bool): ยกเว้นผู้ใช้ที่ถึงขีดจำกัดแล้วอย่างเด็ดขาดavoid(bool): หลีกเลี่ยงผู้ใช้ที่ถึงขีดจำกัดแล้วแบบ soft-avoid (พวกเขายังคงถูกนับในสถิติ)
SendRate
Anchor link to{ "value": 500, "bucket": "1s", "avoid": false }ควบคุมอัตราการส่ง value คือจำนวนข้อความต่อ bucket; bucket ทั่วไปคือ "1s"
Platform enum
Anchor link toIOS, ANDROID, OSX, WINDOWS, AMAZON, SAFARI, CHROME, FIREFOX, IE, EMAIL, BAIDU_ANDROID, HUAWEI_ANDROID, SMS, WEB, KAKAO, TELEGRAM, LINE, WHATS_APP, VIBER
MessageType enum
Anchor link toMESSAGE_TYPE_UNSPECIFIED: เทียบเท่ากับMESSAGE_TYPE_MARKETINGMESSAGE_TYPE_MARKETING: อยู่ภายใต้การกรองของกลุ่มควบคุม (control-group) และการจำกัดความถี่MESSAGE_TYPE_TRANSACTIONAL: ข้ามการกรองของกลุ่มควบคุมและการจำกัดความถี่ ใช้สำหรับการยืนยันคำสั่งซื้อ, OTPs และขั้นตอนที่สำคัญอื่นๆ ที่คล้ายกัน