การอ้างอิง Payload
การอ้างอิงสำหรับข้อความ Payload ที่ใช้โดย Notify เมื่อส่งผ่านช่องทางที่ไม่ใช่อีเมล (push, SMS, Telegram, Kakao, LINE, Viber, WhatsApp)
Payload
Anchor link topreset(string): รหัส พรีเซ็ต push (รูปแบบXXXXX-XXXXX) ที่จะนำไปใช้กับข้อความนี้sms_preset(string): รหัส (รูปแบบXXXXX-XXXXX) ของ พรีเซ็ต SMS ที่บันทึกไว้ ข้อความต่อภาษาของมันจะถูกแก้ไขเป็นsms.bodyของแต่ละภาษาsms.bodyแบบอินไลน์สำหรับภาษาที่กำหนดจะแทนที่พรีเซ็ตสำหรับภาษานั้น พรีเซ็ตต้องเป็นของแอปพลิเคชันเดียวกับข้อความcontent(LocalizedContent): เนื้อหาข้อความ ไม่สามารถใช้ร่วมกับsilentได้silent(bool): ส่ง push แบบเงียบ (ข้อมูลเท่านั้น) ไม่สามารถใช้ร่วมกับcontentได้custom_data(object): JSON รูปแบบอิสระที่ส่งต่อไปยัง SDK ของไคลเอ็นต์เป็นพารามิเตอร์uopen_action(OpenAction): การกระทำที่เกิดขึ้นเมื่อผู้ใช้เปิดการแจ้งเตือนopen_actions(map<Platform,OpenAction>): การแทนที่open_actionต่อแพลตฟอร์ม คีย์คือค่า enumPlatformที่เป็นตัวเลขvoip_push(bool): การแจ้งเตือน iOS VoIP
{ "payload": { "preset": "XXXXX-XXXXX", "content": { "localized_content": { "default": { "ios": { "title": "Hello", "body": "Tap to view" } } } }, "custom_data": { "order_id": "42" }, "open_action": { "link": { "url": "https://example.com/promo" } } }}LocalizedContent
Anchor link toแมปรหัสภาษา → เนื้อหาต่อแพลตฟอร์ม คีย์คือรหัสสองตัวอักษร ISO 639-1 (ตัวอย่างเช่น "en", "es") บวกกับคีย์พิเศษ "default" สำหรับการแปลแบบครอบคลุมทั้งหมด ข้อยกเว้นสำหรับ ISO 639-1 คือ "zh-Hant" และ "zh-Hans" สำหรับภาษาจีนตัวเต็มและตัวย่อ
{ "localized_content": { "default": { "ios": { "title": "Hello", "body": "Tap to view" }, "android": { "title": "Hello", "body": "Tap to view" } }, "es": { "ios": { "title": "Hola", "body": "Toca para ver" }, "android": { "title": "Hola", "body": "Toca para ver" } } }}การเลือกภาษาสำหรับอุปกรณ์
Anchor link toเนื้อหาที่ส่งไปยังอุปกรณ์จะถูกเลือกตามลำดับนี้:
- ตรงกับภาษาของอุปกรณ์พอดี
- คีย์
"default" - คีย์
"en" - ภาษาอื่นใดๆ ที่มีอยู่ในแมป
ระบุอย่างน้อยหนึ่งใน "default" หรือ "en" เพื่อให้อุปกรณ์ทุกเครื่องมีการสำรองที่แน่นอน หากคุณไม่คาดหวังว่าจะมีเวอร์ชันต่อภาษา ให้ส่งเฉพาะ "default"
แต่ละรายการภาษาคืออ็อบเจกต์ Content ที่มีบล็อกต่อแพลตฟอร์มที่เป็นทางเลือก กรอกเฉพาะแพลตฟอร์มที่คุณต้องการกำหนดเป้าหมาย
| บล็อกแพลตฟอร์ม | ช่องทาง |
|---|---|
ios | iOS push |
android | Android (FCM) push |
huawei_android | Huawei Android push |
baidu_android | Baidu Android push |
mac_os | macOS push |
amazon | Amazon (ADM) push |
safari | Safari web push |
chrome | Chrome web push |
firefox | Firefox web push |
ie | Internet Explorer web push |
windows | Windows push (tile / toast / badge) |
telegram | ข้อความ Telegram |
kakao | ข้อความ Kakao |
line | ข้อความ LINE |
viber | ข้อความ Viber |
whatsapp | ข้อความ WhatsApp |
sms | ข้อความ SMS |
ฟิลด์ push ทั่วไป
Anchor link toฟิลด์เหล่านี้ใช้ร่วมกันโดยบล็อก ios, android, huawei_android, baidu_android, mac_os, amazon, safari, chrome และ firefox (การรองรับแตกต่างกันไป ฟิลด์ที่ไม่ได้ใช้จะถูกละเว้นโดยแพลตฟอร์มที่เกี่ยวข้อง)
title(string): หัวข้อการแจ้งเตือนbody(string): เนื้อหาการแจ้งเตือนtime_to_live(duration, เช่น"3600s"): ระยะเวลาที่เซิร์ฟเวอร์ push ควรเก็บการแจ้งเตือนไว้สำหรับอุปกรณ์ที่ออฟไลน์sound(string): ชื่อไฟล์เสียงsound_enabled(bool): เปิดหรือปิดเสียงbadges(string): จำนวนป้าย (iOS) หรือที่คล้ายกันroot_params(object): การแทนที่ payload เฉพาะแพลตฟอร์มแบบดิบinbox(Inbox): รายการ Message Inbox
{ "android": { "title": "Hello", "body": "Tap to view", "time_to_live": "3600s", "sound": "default", "sound_enabled": true, "badges": "+1" }}iOS (ios)
Anchor link tosubtitle(string): หัวข้อย่อยของการแจ้งเตือน iOSis_critical(bool): การแจ้งเตือนที่สำคัญ (ต้องมีการให้สิทธิ์)attachment(string): URL ของไฟล์แนบสื่อthread_id(string): ตัวระบุเธรดสำหรับการแจ้งเตือนแบบกลุ่มtrim_content(bool): ตัดเนื้อหาให้พอดีcategory_id(string): ตัวระบุUNNotificationCategoryสำหรับการกระทำแบบโต้ตอบinterruption_level(string):passive,active,time-sensitiveหรือcriticalcollapse_id(string): ตัวระบุการยุบของ APNs การแจ้งเตือนที่มีcollapse_idเดียวกันจะแทนที่กันบนอุปกรณ์
{ "ios": { "title": "Hello", "body": "Tap to view", "subtitle": "New update", "attachment": "https://cdn.example.com/image.png", "interruption_level": "active", "thread_id": "promo" }}Android (android, huawei_android, baidu_android)
Anchor link toicon(string): ไอคอนขนาดเล็กของการแจ้งเตือนbanner(string): URL รูปภาพขนาดใหญ่delivery_priority(NORMAL|HIGH): ลำดับความสำคัญในการส่งของ FCMvibration(bool): การสั่นเมื่อได้รับled_color(string, hex): สี LED ของการแจ้งเตือนicon_background_color(string, hex): สีพื้นหลังของไอคอนshow_on_lockscreen(bool): แสดงบนหน้าจอล็อกcustom_icon(string): URL ของไอคอนที่กำหนดเองpriority(NotificationPriority): ลำดับความสำคัญในถาดการแจ้งเตือนgroup_id(string): คีย์กลุ่มการแจ้งเตือนcollapse_key(string): คีย์การยุบของ FCM การแจ้งเตือนที่มีcollapse_keyเดียวกันจะแทนที่กันในขณะที่อุปกรณ์ออฟไลน์
{ "android": { "title": "Hello", "body": "Tap to view", "icon": "ic_notification", "banner": "https://cdn.example.com/banner.png", "led_color": "#FF0000", "priority": "PRIORITY_HIGH", "delivery_priority": "HIGH" }}macOS (mac_os)
Anchor link toใช้ฟิลด์ push ทั่วไปบวกกับ subtitle และ action (URL ที่เปิดเมื่อผู้ใช้คลิกการแจ้งเตือน)
{ "mac_os": { "title": "Hello", "body": "Tap to view", "subtitle": "New update", "action": "https://example.com/promo" }}Amazon (amazon)
Anchor link toใช้ฟิลด์ push ทั่วไปบวกกับ custom_icon และ priority (NotificationPriority)
{ "amazon": { "title": "Hello", "body": "Tap to view", "custom_icon": "https://cdn.example.com/icon.png", "priority": "PRIORITY_HIGH" }}Safari (safari)
Anchor link toaction(string): URL ที่เปิดเมื่อผู้ใช้คลิกการแจ้งเตือนurl_arguments(array of string): อาร์กิวเมนต์ URL ของ Safari ที่ใช้แทนที่ในเทมเพลต URL ของ Web Push
{ "safari": { "title": "Hello", "body": "Tap to view", "action": "https://example.com/promo", "url_arguments": ["promo", "2026"] }}Chrome (chrome)
Anchor link toicon,image(string): URL ไอคอนขนาดเล็กและรูปภาพขนาดใหญ่duration(duration): ตัวจับเวลาปิดอัตโนมัติbutton_text1/button_url1,button_text2/button_url2: ปุ่มการกระทำสูงสุดสองปุ่ม
{ "chrome": { "title": "Hello", "body": "Tap to view", "icon": "https://cdn.example.com/icon.png", "image": "https://cdn.example.com/banner.png", "duration": "20s", "button_text1": "Open", "button_url1": "https://example.com/promo" }}Firefox (firefox)
Anchor link toใช้เฉพาะ title, body, icon, root_params และ inbox
{ "firefox": { "title": "Hello", "body": "Tap to view", "icon": "https://cdn.example.com/icon.png" }}Windows (windows)
Anchor link toWindows ใช้รูปแบบที่แตกต่างกัน:
{ "windows": { "type": "TOAST", "template": { "title": "Hello", "body": "Tap to view" }, "tag": "promo", "cache": true, "time_to_live": "3600s" }}typeคือTILE,TOASTหรือBADGEtemplate(มีโครงสร้าง) หรือraw({ "content": "<raw xml>" }) — ต้องมีอย่างใดอย่างหนึ่งเท่านั้น
Telegram (telegram)
Anchor link tobody(string): ข้อความcontent_variables(string): ตัวแปรที่แปลงเป็นสตริง JSON สำหรับเทมเพลตฝั่งบอท
{ "telegram": { "body": "Hello from Pushwoosh", "content_variables": "{\"name\":\"John\"}" }}Kakao (kakao)
Anchor link tocontent(string): เนื้อหาข้อความtemplate(string): รหัสเทมเพลตที่ได้รับอนุมัติcontent_variables(string): การผูกตัวแปรเทมเพลตที่แปลงเป็นสตริง JSON
{ "kakao": { "content": "Hello from Pushwoosh", "template": "welcome_v1", "content_variables": "{\"name\":\"John\"}" }}LINE (line)
Anchor link tocontent(string): เนื้อหาข้อความธรรมดาtemplate(string): รหัสของเทมเพลต LINE ที่กำหนดค่าใน Pushwoosh Control Panel (ใช้เพื่อส่งรูปภาพ, carousel หรือ flex messages) สำหรับเนื้อหา rich content ให้กำหนดค่าเทมเพลตล่วงหน้าใน Control Panel และอ้างอิงที่นี่
ต้องตั้งค่าอย่างน้อยหนึ่งใน content หรือ template
{ "line": { "content": "Hello from Pushwoosh", "template": "promo_carousel" }}Viber (viber)
Anchor link toข้อความ Viber อาจเป็นข้อความธรรมดาหรือเทมเพลตธุรกรรมที่ได้รับอนุมัติล่วงหน้า (Omni Messaging / MStat) ที่อ้างอิงโดย id และภาษา
body(string): ข้อความธรรมดา จำเป็นเมื่อไม่ได้ตั้งค่าtemplate_idtemplate_id(string): id ของเทมเพลตธุรกรรมที่ได้รับอนุมัติล่วงหน้า เมื่อตั้งค่าแล้ว จะมีความสำคัญเหนือbodytemplate_lang(string): ภาษาของเทมเพลต จำเป็นเมื่อตั้งค่าtemplate_idtemplate_params(map<string, string>): การผูกค่าคีย์/ค่าที่ใช้แทนที่ในเทมเพลต เช่น{ "name": "John", "code": "123456" }all_devices(bool):false(ค่าเริ่มต้น) ส่งไปยังอุปกรณ์หลักของผู้ใช้เท่านั้นtrueส่งไปยังอุปกรณ์ทั้งหมดของผู้ใช้
ต้องตั้งค่าอย่างน้อยหนึ่งใน body หรือ template_id เมื่อตั้งค่า template_id แล้ว template_lang จะเป็นสิ่งจำเป็น
ระบุผู้รับ Viber เป็น hwids ในรูปแบบ viber:<phone> (E.164) ตัวอย่างเช่น viber:+1234567890
ข้อความธรรมดา:
{ "viber": { "body": "Hello from Pushwoosh" }}เทมเพลตธุรกรรม:
{ "viber": { "template_id": "e3dec4a0-c063-4b0f-96d5-cf9d629a7abe", "template_lang": "en", "template_params": { "name": "John", "code": "123456", "expires_in": "5 minutes" }, "all_devices": false }}WhatsApp (whatsapp)
Anchor link toข้อความ WhatsApp จะส่งผ่าน Meta และอยู่ภายใต้กฎการส่งข้อความของ Meta การแบ่งหลักคือระหว่างข้อความรูปแบบอิสระ (ส่งเฉพาะภายในหน้าต่างบริการลูกค้า 24 ชั่วโมงที่เปิดโดยข้อความขาเข้าจากผู้ใช้) และเทมเพลตที่ได้รับอนุมัติ (จำเป็นสำหรับการเริ่มต้นส่งข้อความขาออกและสำหรับข้อความใดๆ นอกหน้าต่าง 24 ชั่วโมง)
content(string): ข้อความรูปแบบอิสระ Meta จะส่งเฉพาะภายในหน้าต่าง 24 ชั่วโมงcontent_id(string): ชื่อของเทมเพลต Meta ที่ได้รับอนุมัติล่วงหน้า (เช่น"hello_world") จำเป็นสำหรับการเริ่มต้นส่งข้อความขาออกหรือข้อความใดๆ นอกหน้าต่าง 24 ชั่วโมงlanguage(string): ภาษาของเทมเพลตที่ต้องตรงกับภาษาที่ได้รับอนุมัติใน Meta ทุกประการ (เช่น"en_US","en_GB") มีความหมายเฉพาะเมื่อใช้ร่วมกับcontent_idเท่านั้น สิ่งนี้ไม่ขึ้นอยู่กับคีย์LocalizedContentภายนอก คีย์ภายนอกจะเลือกเนื้อหาสำหรับอุปกรณ์ และlanguageจะเลือกภาษาของเทมเพลต Meta สำหรับเนื้อหานั้นcontent_variables(string): อ็อบเจกต์ JSON ที่แมปตัวยึดตำแหน่งในเนื้อหา เช่น"{\"1\":\"John\"}"button_url_variables(string): อ็อบเจกต์ JSON ที่แมปตัวยึดตำแหน่ง URL ของปุ่มโดยใช้ดัชนีของปุ่มเป็นคีย์ เช่น"{\"0\":\"https://...\"}"header_variables(string): อ็อบเจกต์ JSON ที่แมปตัวยึดตำแหน่งในส่วนหัวโดยใช้ประเภทเป็นคีย์ เช่น"{\"image\":\"https://...\"}"
ต้องตั้งค่าอย่างน้อยหนึ่งใน content หรือ content_id
{ "whatsapp": { "content_id": "hello_world", "language": "en_US", "content_variables": "{\"1\":\"John\"}" }}SMS (sms)
Anchor link toSMS มีบล็อกแพลตฟอร์มของตัวเองภายใน Content ของแต่ละภาษา ควบคู่ไปกับ ios, android และช่องทางการส่งข้อความอื่นๆ
body(string): ข้อความ SMS สำหรับภาษานั้นๆ จำเป็นเมื่อมีบล็อกsmsอยู่
มีสองวิธีในการระบุข้อความ:
- อินไลน์ — ตั้งค่า
sms.bodyต่อภาษาในlocalized_content - จากพรีเซ็ต — ตั้งค่า
sms_presetระดับ payload เป็นรหัส (รูปแบบXXXXX-XXXXX) ของ พรีเซ็ต SMS ที่บันทึกไว้ เนื้อหาต่อภาษาของมันจะถูกแก้ไขเป็นsms.bodyสำหรับแต่ละภาษาที่พรีเซ็ตกหนดsms.bodyแบบอินไลน์สำหรับภาษาใดภาษาหนึ่งจะแทนที่พรีเซ็ตสำหรับภาษานั้น ดังนั้นคุณจึงสามารถใช้พรีเซ็ตซ้ำและยังคงปรับแต่งแต่ละภาษาได้
{ "payload": { "sms_preset": "XXXXX-XXXXX", "content": { "localized_content": { "default": { "sms": { "body": "Your order has shipped." } }, "es": { "sms": { "body": "Tu pedido ha sido enviado." } } } } }}OpenAction
Anchor link toกำหนดการกระทำที่จะดำเนินการเมื่อผู้ใช้เปิดข้อความ
ต้องมีอย่างใดอย่างหนึ่งเท่านั้น:
rich_media(RichMedia): เปิดหน้า Rich Mediadeep_link: เปิด deep link:{ "code": "flow-code", "params": { "key": "value" } }link(Link): เปิด URL
{ "open_action": { "deep_link": { "code": "flow-code", "params": { "promo": "summer" } } }}RichMedia
Anchor link to{ "code": "XXXXX-XXXXX" } // โดยรหัส Rich Media{ "url": "https://..." } // โดย URL ระยะไกลLink
Anchor link to{ "url": "https://example.com/promo", "shortener": "BITLY"}shortener คือ NONE (ค่าเริ่มต้น) หรือ BITLY
Inbox
Anchor link toกำหนดค่าลักษณะที่ข้อความจะปรากฏใน Message Inbox
{ "image_url": "https://cdn.example.com/inbox.png", "expiration_date": "2026-05-15T00:00:00Z"}image_url(string): รูปภาพที่แสดงในรายการ inboxexpiration_date(timestamp): เวลาที่รายการจะถูกลบออกจาก inbox
NotificationPriority enum
Anchor link toควบคุมลำดับความสำคัญของการแจ้งเตือนบนอุปกรณ์เป้าหมาย ตั้งแต่ PRIORITY_MIN (ต่ำสุด) ถึง PRIORITY_MAX (สูงสุด)
PRIORITY_UNSPECIFIEDPRIORITY_MINPRIORITY_LOWPRIORITY_DEFAULTPRIORITY_HIGHPRIORITY_MAX
ตัวอย่าง: ส่ง push ไปยังเซกเมนต์
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": { "title": "Hello", "body": "Hello, world!" }, "android": { "title": "Hello", "body": "Hello, world!" } }, "es": { "ios": { "title": "¡Hola!", "body": "¡Hola, mundo!" }, "android": { "title": "¡Hola!", "body": "¡Hola, mundo!" } } } }, "open_action": { "link": { "url": "https://example.com/promo" } } }, "schedule": { "at": "2026-05-01T12:00:00Z" }, "message_type": "MESSAGE_TYPE_MARKETING" } }'ตัวอย่าง: push แบบธุรกรรมโดย 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": ["customer-42"] }, "payload": { "content": { "localized_content": { "default": { "ios": { "title": "Your order", "body": "Order #42 has shipped." }, "android": { "title": "Your order", "body": "Order #42 has shipped." } } } }, "custom_data": { "order_id": "42" } }, "schedule": { "at": "2026-05-01T12:00:00Z" }, "message_type": "MESSAGE_TYPE_TRANSACTIONAL" } }'