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

การอ้างอิง Payload

การอ้างอิงสำหรับข้อความ Payload ที่ใช้โดย Notify เมื่อส่งผ่านช่องทางที่ไม่ใช่อีเมล (push, SMS, Telegram, Kakao, LINE, Viber, WhatsApp)

  • preset (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 ของไคลเอ็นต์เป็นพารามิเตอร์ u
  • open_action (OpenAction): การกระทำที่เกิดขึ้นเมื่อผู้ใช้เปิดการแจ้งเตือน
  • open_actions (map<Platform, OpenAction>): การแทนที่ open_action ต่อแพลตฟอร์ม คีย์คือค่า enum Platform ที่เป็นตัวเลข
  • 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

เนื้อหาที่ส่งไปยังอุปกรณ์จะถูกเลือกตามลำดับนี้:

  1. ตรงกับภาษาของอุปกรณ์พอดี
  2. คีย์ "default"
  3. คีย์ "en"
  4. ภาษาอื่นใดๆ ที่มีอยู่ในแมป

ระบุอย่างน้อยหนึ่งใน "default" หรือ "en" เพื่อให้อุปกรณ์ทุกเครื่องมีการสำรองที่แน่นอน หากคุณไม่คาดหวังว่าจะมีเวอร์ชันต่อภาษา ให้ส่งเฉพาะ "default"

แต่ละรายการภาษาคืออ็อบเจกต์ Content ที่มีบล็อกต่อแพลตฟอร์มที่เป็นทางเลือก กรอกเฉพาะแพลตฟอร์มที่คุณต้องการกำหนดเป้าหมาย

บล็อกแพลตฟอร์มช่องทาง
iosiOS push
androidAndroid (FCM) push
huawei_androidHuawei Android push
baidu_androidBaidu Android push
mac_osmacOS push
amazonAmazon (ADM) push
safariSafari web push
chromeChrome web push
firefoxFirefox web push
ieInternet Explorer web push
windowsWindows 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"
}
}
  • subtitle (string): หัวข้อย่อยของการแจ้งเตือน iOS
  • is_critical (bool): การแจ้งเตือนที่สำคัญ (ต้องมีการให้สิทธิ์)
  • attachment (string): URL ของไฟล์แนบสื่อ
  • thread_id (string): ตัวระบุเธรดสำหรับการแจ้งเตือนแบบกลุ่ม
  • trim_content (bool): ตัดเนื้อหาให้พอดี
  • category_id (string): ตัวระบุ UNNotificationCategory สำหรับการกระทำแบบโต้ตอบ
  • interruption_level (string): passive, active, time-sensitive หรือ critical
  • collapse_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 to
  • icon (string): ไอคอนขนาดเล็กของการแจ้งเตือน
  • banner (string): URL รูปภาพขนาดใหญ่
  • delivery_priority (NORMAL | HIGH): ลำดับความสำคัญในการส่งของ FCM
  • vibration (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 to
  • action (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 to
  • icon, 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 to

Windows ใช้รูปแบบที่แตกต่างกัน:

{
"windows": {
"type": "TOAST",
"template": { "title": "Hello", "body": "Tap to view" },
"tag": "promo",
"cache": true,
"time_to_live": "3600s"
}
}
  • type คือ TILE, TOAST หรือ BADGE
  • template (มีโครงสร้าง) หรือ raw ({ "content": "<raw xml>" }) — ต้องมีอย่างใดอย่างหนึ่งเท่านั้น

Telegram (telegram)

Anchor link to
  • body (string): ข้อความ
  • content_variables (string): ตัวแปรที่แปลงเป็นสตริง JSON สำหรับเทมเพลตฝั่งบอท
{
"telegram": {
"body": "Hello from Pushwoosh",
"content_variables": "{\"name\":\"John\"}"
}
}

Kakao (kakao)

Anchor link to
  • content (string): เนื้อหาข้อความ
  • template (string): รหัสเทมเพลตที่ได้รับอนุมัติ
  • content_variables (string): การผูกตัวแปรเทมเพลตที่แปลงเป็นสตริง JSON
{
"kakao": {
"content": "Hello from Pushwoosh",
"template": "welcome_v1",
"content_variables": "{\"name\":\"John\"}"
}
}

LINE (line)

Anchor link to
  • content (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_id
  • template_id (string): id ของเทมเพลตธุรกรรมที่ได้รับอนุมัติล่วงหน้า เมื่อตั้งค่าแล้ว จะมีความสำคัญเหนือ body
  • template_lang (string): ภาษาของเทมเพลต จำเป็นเมื่อตั้งค่า template_id
  • template_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 มีบล็อกแพลตฟอร์มของตัวเองภายใน 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 Media
  • deep_link: เปิด deep link: { "code": "flow-code", "params": { "key": "value" } }
  • link (Link): เปิด URL
{
"open_action": {
"deep_link": { "code": "flow-code", "params": { "promo": "summer" } }
}
}
{ "code": "XXXXX-XXXXX" } // โดยรหัส Rich Media
{ "url": "https://..." } // โดย URL ระยะไกล
{
"url": "https://example.com/promo",
"shortener": "BITLY"
}

shortener คือ NONE (ค่าเริ่มต้น) หรือ BITLY

กำหนดค่าลักษณะที่ข้อความจะปรากฏใน Message Inbox

{
"image_url": "https://cdn.example.com/inbox.png",
"expiration_date": "2026-05-15T00:00:00Z"
}
  • image_url (string): รูปภาพที่แสดงในรายการ inbox
  • expiration_date (timestamp): เวลาที่รายการจะถูกลบออกจาก inbox

NotificationPriority enum

Anchor link to

ควบคุมลำดับความสำคัญของการแจ้งเตือนบนอุปกรณ์เป้าหมาย ตั้งแต่ PRIORITY_MIN (ต่ำสุด) ถึง PRIORITY_MAX (สูงสุด)

  • PRIORITY_UNSPECIFIED
  • PRIORITY_MIN
  • PRIORITY_LOW
  • PRIORITY_DEFAULT
  • PRIORITY_HIGH
  • PRIORITY_MAX

ตัวอย่าง: ส่ง push ไปยังเซกเมนต์

Anchor link to
Terminal window
curl -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 to
Terminal window
curl -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"
}
}'