Messages API
createMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
สร้าง push notification ใหม่
เนื้อหาของคำขอ
Anchor link to| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| auth* | string | API access token จาก Pushwoosh Control Panel |
| application* | string | รหัสแอปพลิเคชัน Pushwoosh |
| notifications* | array | อาร์เรย์ JSON ของพารามิเตอร์ข้อความ ดูรายละเอียดในตัวอย่างคำขอด้านล่าง |
{ "status_code": 200, "status_message": "OK", "response": { "Messages": [ "C3F8-C3863ED4-334AD4F1" ] }}ตัวอย่างคำขอ
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "send_date": "now", // ไม่บังคับ YYYY-MM-DD HH:mm หรือ 'now' "content": { // ไม่บังคับ object หรือ string "en": "English", // ใช้ "wns_content" แทนสำหรับ Windows "fr": "French" }, "title": { // ไม่บังคับ object หรือ string "en": "Title", // จะถูกละเว้นหากมีการระบุหัวข้อเฉพาะแพลตฟอร์ม "fr": "Titre" // 'ios_title', 'android_header' ฯลฯ }, // ดูตัวอย่างพารามิเตอร์เฉพาะแพลตฟอร์มด้านล่าง "subtitle":{ // ไม่บังคับ object หรือ string "en": "Subtitle", // จะถูกละเว้นหากมีการระบุหัวข้อเฉพาะแพลตฟอร์ม "fr": "Sous-titre" // 'ios_subtitle' ฯลฯ }, // ดูตัวอย่างพารามิเตอร์เฉพาะแพลตฟอร์มด้านล่าง "ignore_user_timezone": true, // ไม่บังคับ "timezone": "America/New_York", // ไม่บังคับ หากไม่ระบุ จะใช้ UTC-0 เป็นค่าเริ่มต้นสำหรับ "send_date" // ดู https://php.net/manual/timezones.php สำหรับ // ไทม์โซนที่รองรับ "campaign": "CAMPAIGN_CODE", // ไม่บังคับ รหัสแคมเปญที่คุณต้องการ // กำหนดข้อความ push นี้ "geozone": { // ไม่บังคับ ส่งไปยัง Geozone "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // ไม่บังคับ คัดลอกรหัส Rich Media จากแถบ URL ของ // หน้าแก้ไข Rich Media ใน Pushwoosh Control Panel "link": "https://google.com", // ไม่บังคับ สำหรับ deeplinks ให้เพิ่ม "minimize_link": 0 "minimize_link": 0, // ไม่บังคับ 0 — ไม่ย่อ, 2 — bitly ค่าเริ่มต้น = 2 // โปรดทราบว่าบริการย่อลิงก์มีข้อจำกัด // เกี่ยวกับจำนวนการเรียกใช้ "data": { // ไม่บังคับ สตริง JSON หรืออ็อบเจกต์ JSON จะถูกส่งเป็น "key": "value" // พารามิเตอร์ "u" ใน payload (แปลงเป็นสตริง JSON) }, "transactionId": "unique UUID", // ไม่บังคับ ตัวระบุข้อความที่ไม่ซ้ำกันเพื่อป้องกันการซ้ำซ้อน // ในกรณีที่เกิดปัญหาเครือข่าย จัดเก็บไว้ที่ฝั่ง // Pushwoosh เป็นเวลา 5 นาที "platforms": [ // ไม่บังคับ 1 — iOS; 3 — Android; 7 — Mac OS X; 8 — Windows; 1, 3, 7, 8, 9, 10, // 9 — Amazon; 10 — Safari; 11 — Chrome; 11, 12, 17 // 12 — Firefox; 17 — Huawei ], "preset": "XXXXX-XXXXX", // ไม่บังคับ รหัส Push Preset จาก Control Panel ของคุณ // หากมีการส่งพารามิเตอร์เฉพาะในคำขอ // พารามิเตอร์เหล่านั้นจะแทนที่พารามิเตอร์ของ preset "send_rate": 100, // ไม่บังคับ การควบคุมปริมาณ (Throttling) ค่าที่ถูกต้องคือตั้งแต่ 100 ถึง 1000 pushes/second "send_rate_avoid": true, // ไม่บังคับ หากตั้งค่าเป็น true ขีดจำกัดการควบคุมปริมาณจะไม่ถูกนำไปใช้กับ // push notification นี้โดยเฉพาะ // เกี่ยวข้องกับการทำเทมเพลต โปรดดูคู่มือ Template Engine เพื่อเรียนรู้เพิ่มเติม "template_bindings": { // ไม่บังคับ "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // ไม่บังคับ ตัวยึดตำแหน่งสำหรับเนื้อหาแบบไดนามิกแทนแท็กของอุปกรณ์ "firstname": "John", "lastname": "Doe" },
// พารามิเตอร์ Frequency capping ตรวจสอบให้แน่ใจว่าได้กำหนดค่า Global frequency capping ใน Control Panel แล้ว "capping_days": 30, // ไม่บังคับ จำนวนวันสำหรับ frequency capping (สูงสุด 30 วัน) "capping_count": 10, // ไม่บังคับ จำนวน push สูงสุดที่สามารถส่งจาก // แอปเฉพาะไปยังอุปกรณ์หนึ่งๆ ภายในระยะเวลา 'capping_days' // ในกรณีที่ข้อความที่สร้างขึ้นเกินขีดจำกัด // 'capping_count' สำหรับอุปกรณ์ ข้อความนั้นจะไม่ // ถูกส่งไปยังอุปกรณ์นั้น "capping_exclude": true, // ไม่บังคับ หากตั้งค่าเป็น true push notification นี้จะไม่ // ถูกนับรวมใน capping สำหรับ push ในอนาคต "capping_avoid": true, // ไม่บังคับ หากตั้งค่าเป็น true capping จะไม่ถูกนำไปใช้กับ // push notification นี้โดยเฉพาะ
// หากต้องการบันทึกข้อความไปยัง Inbox ผ่าน API ให้ใช้ "inbox_date" หรือ "inbox_image" // ข้อความจะถูกบันทึกเมื่อมีการใช้พารามิเตอร์เหล่านี้อย่างน้อยหนึ่งตัว "inbox_date": "2017-02-02", // ไม่บังคับ ระบุว่าจะลบข้อความออกจาก Inbox เมื่อใด // ข้อความจะถูกลบออกจาก Inbox เวลา 00:00:01 UTC // ของวันที่ระบุ ดังนั้นวันก่อนหน้าคือ // วันสุดท้ายที่ผู้ใช้สามารถเห็นข้อความใน Inbox ของตนได้ // หากไม่ระบุ วันที่ลบเริ่มต้นคือ // วันถัดไปหลังจากวันที่ส่ง "inbox_image": "Inbox image URL", // ไม่บังคับ รูปภาพที่จะแสดงใกล้กับข้อความ "inbox_days": 5, // ไม่บังคับ ระบุว่าจะลบข้อความออกจาก // Inbox เมื่อใด (อายุของข้อความใน inbox เป็นวัน) // สามารถใช้แทนพารามิเตอร์ "inbox_date" ได้ // สูงสุด 30 วัน
"devices": [ // ไม่บังคับ ระบุโทเค็นหรือ hwids เพื่อส่ง push ที่กำหนดเป้าหมาย "hwid_XXXX" // notifications ไม่เกิน 1000 โทเค็น/hwids ใน ], // อาร์เรย์ หากตั้งค่า ข้อความจะถูกส่งไปยัง // อุปกรณ์ในรายการเท่านั้น ไม่อนุญาตให้ใช้ Application Group สำหรับรายการอุปกรณ์ // iOS push tokens สามารถเป็นตัวพิมพ์เล็กเท่านั้น
// push notifications ที่เน้นผู้ใช้เป็นศูนย์กลาง "users": [ // ไม่บังคับ หากตั้งค่า ข้อความจะถูกส่งไปยัง "user_XXXX" // User ID ที่ระบุเท่านั้น (ตั้งค่าผ่านการเรียก /registerUser) ], // หากระบุพร้อมกับพารามิเตอร์ devices // พารามิเตอร์หลังจะถูกละเว้น ไม่เกิน 1000 user // ID ในอาร์เรย์ ไม่อนุญาตให้ใช้ Application Group สำหรับรายการผู้ใช้
// ตัวกรองและเงื่อนไข "filter": "FILTER_NAME", // ไม่บังคับ "conditions": [ // ไม่บังคับ ดูหมายเหตุด้านล่าง ["Country", "EQ", "fr"], ["Language", "EQ", "en"] ], "conditions_operator": "AND" // ไม่บังคับ ตัวดำเนินการตรรกะสำหรับอาร์เรย์เงื่อนไข // ค่าที่เป็นไปได้: AND | OR ค่าเริ่มต้นคือ AND }] }}ตัวอย่างคำขอการแจ้งเตือน VoIP
Anchor link toPushwoosh รองรับการแจ้งเตือนการโทรสไตล์ VoIP สำหรับ iOS และ Android
ด้านล่างนี้คุณจะพบตัวอย่างคำขอ API createMessage สำหรับแต่ละแพลตฟอร์ม
{ "request": { "application": "XXXXX-XXXXX", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [ { "voip_push": true, // จำเป็น พารามิเตอร์นี้จำเป็นสำหรับการส่ง push notification แบบ VoIP "ios_root_params": { "aps": { "mutable-content": 1 // จำเป็นสำหรับไฟล์แนบสื่อ iOS10+ }, "callerName": "CallerName", // ไม่บังคับ ชื่อผู้โทร หากไม่ระบุ จะแสดง "unknown caller" "video": true, // ไม่บังคับ ระบุว่ารองรับการโทรวิดีโอหรือไม่ "supportsHolding": true, // ไม่บังคับ ระบุว่ารองรับฟังก์ชันพักสายหรือไม่ "supportsDTMF": false, // ไม่บังคับ ควบคุมการรองรับสัญญาณ Dual-Tone Multi-Frequency "callId": "42", // ไม่บังคับ ตัวระบุที่ไม่ซ้ำกันของสายที่จะยกเลิก "cancelCall": true // ไม่บังคับ ตั้งค่าเป็น "true" เพื่อยกเลิกสายที่มี "callId" ที่ระบุ } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [ { "voip_push": true, // จำเป็น พารามิเตอร์นี้จำเป็นสำหรับการส่ง push notification แบบ VoIP "android_root_params": { "callerName": "callerName", // ไม่บังคับ ชื่อผู้โทร หากไม่ระบุ จะแสดง "unknown caller" "video": true, // ไม่บังคับ ระบุว่ารองรับการโทรวิดีโอหรือไม่ "callId": 42, // ไม่บังคับ ตัวระบุที่ไม่ซ้ำกันของสายที่จะยกเลิก "cancelCall": true // ไม่บังคับ ตั้งค่าเป็น "true" เพื่อยกเลิกสายที่มี "callId" ที่ระบุ } } ] }}พารามิเตอร์เฉพาะแพลตฟอร์ม
Anchor link toพารามิเตอร์ iOS
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "ios_title": { // ไม่บังคับ Object หรือ string เพิ่มหัวข้อเฉพาะสำหรับ iOS สำหรับ push notification "en": "title" }, "ios_subtitle": { // ไม่บังคับ Object หรือ string เพิ่มหัวข้อย่อยเฉพาะสำหรับ iOS สำหรับ push notification "en": "subtitle" }, "ios_content": { // ไม่บังคับ Object หรือ string เพิ่มเนื้อหาเฉพาะสำหรับ iOS สำหรับ push notification "en": "content" }, "ios_badges": 5, // ไม่บังคับ หมายเลขป้ายแอปพลิเคชัน iOS // ใช้ "+n" หรือ "-n" เพื่อเพิ่ม/ลดค่าป้ายกำกับ n "ios_sound": "sound file.wav", // ไม่บังคับ ชื่อไฟล์เสียงใน main bundle ของแอปพลิเคชัน // หากเว้นว่างไว้ อุปกรณ์จะส่งเสียงระบบเริ่มต้น "ios_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "ios_sound" "ios_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live - อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที "ios_silent": 1, // ไม่บังคับ เปิดใช้งานการแจ้งเตือนแบบเงียบ (ไม่สนใจ "sound" และ "content") "ios_category_id": "1", // ไม่บังคับ ID หมวดหมู่ iOS8 จาก Pushwoosh "ios_root_params": { // ไม่บังคับ พารามิเตอร์ระดับรากไปยังพจนานุกรม aps "aps": { "content-available": "0", // ไม่บังคับ ตั้งค่า "1" เพื่อส่ง push แบบเงียบ และ "0" สำหรับ push ปกติ "mutable-content": 1 // จำเป็นสำหรับไฟล์แนบสื่อ iOS10+ }, "callerName": "CallerName", // ไม่บังคับ พารามิเตอร์ VoIP ชื่อผู้โทร หากไม่ระบุ จะแสดง "unknown caller" "video": true, // ไม่บังคับ พารามิเตอร์ VoIP ระบุว่ารองรับการโทรวิดีโอหรือไม่ "supportsHolding": true, // ไม่บังคับ พารามิเตอร์ VoIP ระบุว่ารองรับฟังก์ชันพักสายหรือไม่ "supportsDTMF": false, // ไม่บังคับ พารามิเตอร์ VoIP ควบคุมการรองรับสัญญาณ Dual-Tone Multi-Frequency "data": {} // ไม่บังคับ ข้อมูลที่ผู้ใช้ให้มา สูงสุด 4KB }, "ios_attachment": "URL", // ไม่บังคับ แทรกเนื้อหาสื่อในการแจ้งเตือน "ios_thread_id": "some thread id", // ไม่บังคับ ตัวระบุเพื่อจัดกลุ่มการแจ้งเตือนที่เกี่ยวข้อง // ข้อความที่มี thread ID เดียวกันจะถูกจัดกลุ่ม // บนหน้าจอล็อกและในศูนย์การแจ้งเตือน "ios_critical": true, // ไม่บังคับ ทำเครื่องหมายการแจ้งเตือน iOS เป็นการแจ้งเตือนที่สำคัญ // เล่นเสียงแม้ว่าอุปกรณ์จะปิดเสียงหรือ // เปิดโหมดห้ามรบกวน "ios_category_custom": "category", // ไม่บังคับ หมวดหมู่ APNS ที่กำหนดเอง "ios_interruption_level": "active", // ไม่บังคับ หนึ่งใน "passive", "active", "time-sensitive", // "critical" ระบุความสำคัญและ // เวลาในการส่งการแจ้งเตือน โปรดดู // คู่มือ One-time push สำหรับรายละเอียด "apns_trim_content": 1 // ไม่บังคับ (0|1) ตัดสตริงเนื้อหาที่เกินด้วยเครื่องหมายจุดไข่ปลา }] }}พารามิเตอร์ Android
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "android_header": { // ไม่บังคับ ส่วนหัวการแจ้งเตือนของ Android "en": "header" }, "android_content": { // ไม่บังคับ เนื้อหาการแจ้งเตือนของ Android "en": "content" }, "android_root_params": { // ไม่บังคับ อ็อบเจกต์ key-value ที่กำหนดเอง "key": "value", // พารามิเตอร์ระดับรากสำหรับผู้รับ payload ของ Android "CancelID": 12345678, // ไม่บังคับ ยกเลิก push notification ด้วย "voip": true, // จำเป็น พารามิเตอร์ VoIP พารามิเตอร์นี้จำเป็นสำหรับการส่ง push notification แบบ VoIP "callerName": "callerName", // ไม่บังคับ พารามิเตอร์ VoIP ชื่อผู้โทร หากไม่ระบุ จะแสดง "unknown caller" "video": true, // ไม่บังคับ พารามิเตอร์ VoIP ระบุว่ารองรับการโทรวิดีโอหรือไม่ }, // Message ID ที่ระบุ (รับ ID จากประวัติข้อความ) "android_sound": "soundfile", // ไม่บังคับ ไม่มีนามสกุลไฟล์ หากเว้นว่างไว้ // อุปกรณ์จะส่งเสียงระบบเริ่มต้น "android_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "android_sound" "android_icon": "icon.png", // ไม่บังคับ "android_custom_icon": "URL.png", // ไม่บังคับ URL แบบเต็มไปยังไฟล์รูปภาพ "android_banner": "URL.png", // ไม่บังคับ URL แบบเต็มไปยังไฟล์รูปภาพ "android_badges": 5, // ไม่บังคับ หมายเลขป้ายไอคอนแอปพลิเคชัน Android // ใช้ "+n" หรือ "-n" เพื่อเพิ่ม/ลดค่าป้ายกำกับ n "android_gcm_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที "android_vibration": 0, // ไม่บังคับ บังคับให้สั่นสำหรับ push ที่มีความสำคัญสูงบน Android "android_led": "#rrggbb", // ไม่บังคับ สี LED แบบ hex อุปกรณ์จะพยายามประมาณค่าให้ใกล้เคียงที่สุด "android_priority": -1, // ไม่บังคับ ตั้งค่าพารามิเตอร์ "importance" สำหรับอุปกรณ์ที่มี // Android 8.0 ขึ้นไป และพารามิเตอร์ "priority" // สำหรับอุปกรณ์ที่มี Android 7.1 และต่ำกว่า กำหนด // ระดับการขัดจังหวะของช่องทางการแจ้งเตือนหรือการแจ้งเตือน // เฉพาะ ค่าที่ถูกต้องคือ -2, -1, 0, 1, 2 "android_delivery_priority": "normal", // ไม่บังคับ "normal" หรือ "high" // เปิดใช้งานการส่งการแจ้งเตือนเมื่อ // อุปกรณ์อยู่ในโหมดประหยัดพลังงาน "android_ibc": "#RRGGBB", // ไม่บังคับ สีพื้นหลังไอคอนบน Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" ฯลฯ "android_silent": 1, // ไม่บังคับ 0 หรือ 1 เปิดใช้งานการแจ้งเตือนแบบเงียบ // ไม่สนใจเสียงและเนื้อหา "android_group_id": "123" // ไม่บังคับ ตัวระบุเพื่อจัดกลุ่มการแจ้งเตือนที่เกี่ยวข้อง ข้อความที่มี // thread ID เดียวกันจะถูกจัดกลุ่มใน // ศูนย์การแจ้งเตือน }] }}พารามิเตอร์ Huawei
{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "huawei_android_header": { // ไม่บังคับ Object หรือ string หัวข้อการแจ้งเตือน "en": "header" }, "huawei_android_content": { // ไม่บังคับ Object หรือ string เนื้อหาการแจ้งเตือน "en": "content" }, "huawei_android_badges": true, // ไม่บังคับ "huawei_android_silent": 0, // ไม่บังคับ 0 หรือ 1 เปิดใช้งานการแจ้งเตือนแบบเงียบ // ไม่สนใจเสียงและเนื้อหา "huawei_android_icon": "URL.png", // ไม่บังคับ "huawei_android_led": "#FF0011", // ไม่บังคับ สี LED แบบ hex อุปกรณ์จะพยายามประมาณค่าให้ใกล้เคียงที่สุด "huawei_android_vibration": 1, // ไม่บังคับ บังคับให้สั่นสำหรับ push ที่มีความสำคัญสูงบน Huawei "huawei_android_sound": "sound.wav", // ไม่บังคับ หากเว้นว่างไว้ อุปกรณ์จะส่ง // เสียงระบบเริ่มต้น "huawei_android_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดย // ฟิลด์ "huawei_android_sound" "huawei_android_custom_icon": "URL.png", // ไม่บังคับ "huawei_android_gcm_ttl": 2400, // ไม่บังคับ พารามิเตอร์ Time-to-live - อายุการใช้งานสูงสุด // ของข้อความในหน่วยวินาที "huawei_android_banner": "URL.png", // ไม่บังคับ URL พาธแบบเต็มไปยังไฟล์รูปภาพ "huawei_android_root_params": { // ไม่บังคับ อ็อบเจกต์ key-value ที่กำหนดเอง "key": "value" // พารามิเตอร์ระดับรากสำหรับผู้รับ payload ของ Huawei }, "huawei_android_priority": 0, // ไม่บังคับ ค่าที่ถูกต้อง: -2, -1, 0, 1, 2 "huawei_android_ibc": "#0011AA", // ไม่บังคับ สีพื้นหลังไอคอนบน Lollipop "huawei_android_lockscreen": 1, // ไม่บังคับ "huawei_android_delivery_priority": "normal", // ไม่บังคับ "normal" หรือ "high" เปิดใช้งานการแจ้งเตือน // การส่งในโหมดประหยัดพลังงาน "huawei_android_group_id": "group_id" // ไม่บังคับ ตัวระบุเพื่อจัดกลุ่มการแจ้งเตือนที่เกี่ยวข้อง }] }}พารามิเตอร์ Safari
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "safari_url_args": [ // จำเป็น แต่ค่าอาจว่างเปล่าได้ "firstArgument", "secondArgument" ], "safari_title": { // ไม่บังคับ Object หรือ string หัวข้อของการแจ้งเตือน "en": "content" }, "safari_content": { // ไม่บังคับ Object หรือ string เนื้อหาของการแจ้งเตือน "en": "content" }, "safari_action": "Click here", // ไม่บังคับ "safari_ttl": 3600 // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุด // ของข้อความในหน่วยวินาที }] }}พารามิเตอร์ Chrome
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "chrome_title": { // ไม่บังคับ Object หรือ string คุณสามารถระบุส่วนหัว "en": "title" // ของข้อความในพารามิเตอร์นี้ }, "chrome_content": { // ไม่บังคับ Object หรือ string คุณสามารถระบุเนื้อหา "en": "content" // ของข้อความในพารามิเตอร์นี้ }, "chrome_icon": "URL.png", // ไม่บังคับ URL แบบเต็มไปยังไอคอนหรือพาธไฟล์ทรัพยากรของส่วนขยาย "chrome_gcm_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live – อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที "chrome_duration": 20, // ไม่บังคับ สูงสุด 50 วินาที เปลี่ยนเวลาแสดงผลของ push ของ Chrome // ตั้งค่าเป็น 0 เพื่อแสดง push จนกว่าผู้ใช้จะโต้ตอบ "chrome_image": "image_URL", // ไม่บังคับ URL ไปยังรูปภาพขนาดใหญ่ "chrome_root_params": { // ไม่บังคับ ตั้งค่าพารามิเตอร์เฉพาะสำหรับข้อความที่ส่งไปยัง Chrome "key": "value" }, "chrome_button_text1": "text1", // ไม่บังคับ "chrome_button_url1": "button1_URL", // ไม่บังคับ จะถูกละเว้นหากไม่ได้ตั้งค่า chrome_button_text1 "chrome_button_text2": "text2", // ไม่บังคับ "chrome_button_url2": "button2_url" // ไม่บังคับ จะถูกละเว้นหากไม่ได้ตั้งค่า chrome_button_text2 }] }}พารามิเตอร์ Firefox
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "firefox_title": { // ไม่บังคับ Object หรือ string คุณสามารถระบุส่วนหัวของข้อความได้ที่นี่ "en": "title" }, "firefox_content": { // ไม่บังคับ Object หรือ string คุณสามารถระบุเนื้อหาของข้อความได้ที่นี่ "en": "content" }, "firefox_icon": "URL.png", // ไม่บังคับ URL พาธแบบเต็มไปยังไอคอนหรือพาธไปยัง // ไฟล์ในทรัพยากรของส่วนขยาย "firefox_root_params": { // ไม่บังคับ ตั้งค่าพารามิเตอร์เฉพาะสำหรับข้อความที่ส่งไปยัง Firefox "key": "value" } }] }}พารามิเตอร์ Amazon
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "adm_header": { // ไม่บังคับ Object หรือ string คุณสามารถระบุส่วนหัวของข้อความได้ที่นี่ "en": "header" }, "adm_content": { // ไม่บังคับ Object หรือ string คุณสามารถระบุเนื้อหาของข้อความได้ที่นี่ "en": "content" }, "adm_root_params": { // ไม่บังคับ อ็อบเจกต์ key-value ที่กำหนดเอง "key": "value" }, "adm_sound": "push.mp3", // ไม่บังคับ "adm_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "adm_sound" "adm_icon": "icon.png", // ไม่บังคับ URL แบบเต็มไปยังไอคอน "adm_custom_icon": "URL.png", // ไม่บังคับ "adm_banner": "URL.png", // ไม่บังคับ "adm_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุดของข้อความ // ในหน่วยวินาที "adm_priority": -1 // ไม่บังคับ ลำดับความสำคัญของ push ในลิ้นชัก push ของ Amazon // ค่าที่ถูกต้องคือ -2, -1, 0, 1 และ 2 }] }}พารามิเตอร์ Mac OS X
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "mac_title": { // ไม่บังคับ Object หรือ string เพิ่มหัวข้อสำหรับ push notification "en": "title" }, "mac_subtitle": { // ไม่บังคับ เพิ่มหัวข้อย่อยสำหรับ push notification "en": "subtitle" }, "mac_content": { // ไม่บังคับ เพิ่มเนื้อหาสำหรับ push notification "en": "content" }, "mac_badges": 3, // ไม่บังคับ "mac_sound": "sound.caf", // ไม่บังคับ "mac_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "mac_sound" "mac_root_params": { // ไม่บังคับ "content-available": 1 }, "mac_ttl": 3600 // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที }] }}พารามิเตอร์ Windows
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "wns_content": { // จำเป็น เนื้อหา (XML หรือ raw) ของการแจ้งเตือนที่เข้ารหัสใน base64 ของ MIME // ในรูปแบบของ Object หรือ String "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // ไม่บังคับ 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // ไม่บังคับ ใช้ในนโยบายการแทนที่ Tile // สตริงตัวอักษรและตัวเลขไม่เกิน 16 ตัวอักษร "wns_cache": 1, // ไม่บังคับ (1|0) แปลเป็นค่า X-WNS-Cache-Policy "wns_ttl": 600 // ไม่บังคับ เวลาหมดอายุสำหรับการแจ้งเตือนในหน่วยวินาที }] }}การตอบกลับ:
| รหัสสถานะ HTTP | status_code | คำอธิบาย |
|---|---|---|
| 200 | 200 | สร้างข้อความสำเร็จ |
| 200 | 210 | ข้อผิดพลาดของอาร์กิวเมนต์ ดู status_message สำหรับข้อมูลเพิ่มเติม |
| 400 | N/A | สตริงคำขอมีรูปแบบไม่ถูกต้อง |
| 500 | 500 | ข้อผิดพลาดภายใน |
การติดตามข้อความ API
Anchor link toเพื่อวัตถุประสงค์ในการปรับสมดุลภาระงาน เราจะไม่จัดเก็บข้อความที่ส่งผ่าน API ด้วยพารามิเตอร์ “devices” ที่มีอุปกรณ์น้อยกว่า 10 เครื่องในอาร์เรย์ ด้วยเหตุนี้ ข้อความดังกล่าวจะไม่แสดงในประวัติข้อความของคุณ
หากต้องการดูรายงาน push ในระหว่างขั้นตอนการทดสอบ ให้ใช้ การติดตามข้อความ API การเปิดตัวเลือกนี้ ON จะช่วยให้คุณ สามารถลบล้างขีดจำกัดนี้เป็นเวลา 1 ชั่วโมงและบันทึก push ดังกล่าวในประวัติข้อความ การติดตามข้อความ API จะปิด OFF โดยอัตโนมัติหลังจาก 1 ชั่วโมง
การติดตามข้อความ API สามารถเปิดใช้งานได้ที่หน้า ประวัติข้อความ โดยคลิก เริ่มการติดตามข้อความ API ที่มุมขวาบน
เงื่อนไขแท็ก
Anchor link toแต่ละเงื่อนไขแท็กเป็นอาร์เรย์เช่น [tagName, operator, operand] โดยที่
- tagName: ชื่อของแท็ก
- operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
- operand: string | integer | array | date
คำอธิบายตัวดำเนินการ
Anchor link to- EQ: ค่าแท็กเท่ากับ operand;
- IN: ค่าแท็กตัดกับ operand (operand ต้องเป็นอาร์เรย์เสมอ);
- NOTEQ: ค่าแท็กไม่เท่ากับ operand;
- NOTIN: ค่าแท็กไม่ตัดกับ operand (operand ต้องเป็นอาร์เรย์เสมอ);
- GTE: ค่าแท็กมากกว่าหรือเท่ากับ operand;
- LTE: ค่าแท็กน้อยกว่าหรือเท่ากับ operand;
- BETWEEN: ค่าแท็กมากกว่าหรือเท่ากับค่า operand ต่ำสุด แต่น้อยกว่าหรือเท่ากับค่า operand สูงสุด (operand ต้องเป็นอาร์เรย์เสมอ);
- NOTSET: ไม่ได้ตั้งค่าแท็ก ไม่พิจารณา Operand;
- ANY: แท็กมีค่าใดๆ ไม่พิจารณา Operand
แท็กสตริง
Anchor link toตัวดำเนินการที่ถูกต้อง: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
Operands ที่ถูกต้อง:
- EQ, NOTEQ: operand ต้องเป็นสตริง;
- IN, NOTIN: operand ต้องเป็นอาร์เรย์ของสตริงเช่น
["value 1", "value 2", "value N"]; - NOTSET: ไม่ได้ตั้งค่าแท็ก ไม่พิจารณา Operand;
- ANY: แท็กมีค่าใดๆ ไม่พิจารณา Operand
แท็กจำนวนเต็ม
Anchor link toตัวดำเนินการที่ถูกต้อง: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Operands ที่ถูกต้อง:
- EQ, NOTEQ, GTE, LTE: operand ต้องเป็นจำนวนเต็ม;
- IN, NOTIN: operand ต้องเป็นอาร์เรย์ของจำนวนเต็มเช่น
[value 1, value 2, value N]; - BETWEEN: operand ต้องเป็นอาร์เรย์ของจำนวนเต็มเช่น
[min_value, max_value]; - NOTSET: ไม่ได้ตั้งค่าแท็ก ไม่พิจารณา Operand;
- ANY: แท็กมีค่าใดๆ ไม่พิจารณา Operand
แท็กวันที่
Anchor link toตัวดำเนินการที่ถูกต้อง: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Operands ที่ถูกต้อง:
"YYYY-MM-DD 00:00"(สตริง)- unix timestamp
1234567890(จำนวนเต็ม) "N days ago"(สตริง) สำหรับตัวดำเนินการ EQ, BETWEEN, GTE, LTE
แท็กบูลีน
Anchor link toตัวดำเนินการที่ถูกต้อง: EQ, NOTSET, ANY
Operands ที่ถูกต้อง: 0, 1, true, false
แท็กรายการ
Anchor link toตัวดำเนินการที่ถูกต้อง: IN, NOTIN, NOTSET, ANY
Operands ที่ถูกต้อง: operand ต้องเป็นอาร์เรย์ของสตริงเช่น ["value 1", "value 2", "value N"]
/createMessage snippets
Anchor link toตัวอย่างคำขอ /createMessage:
#!/bin/bash
#Usageif [ ! -n "$1" ] || [ ! -n "$2" ]then echo "`basename $0` usage: api_token appid message"; exit 1;fi;MESSAGE="$3";if [ -z "$3" ]thenMESSAGE='One push to rule them all!'fi;
echo -e "Response:"curl --data-binary "{\"request\": {\"application\":\"$2\", \"auth\":\"$1\", \"notifications\": [{ \"send_date\": \"now\", \"content\": \"$MESSAGE\" }] }}" \-H "Content-type: application/json" \"https://api.pushwoosh.com/json/1.3/createMessage"echo "";exit 0;<?phpdefine('PW_AUTH', 'API TOKEN');define('PW_APPLICATION', 'APPLICATION CODE');define('PW_DEBUG', true);
function pwCall($method, $data) { $url = 'https://api.pushwoosh.com/json/1.3/' . $method; $request = json_encode(['request' => $data]);
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
if (defined('PW_DEBUG') && PW_DEBUG) { print "[PW] request: $request"; print "[PW] response: $response"; print '[PW] info: ' . print_r($info, true); }}
pwCall('createMessage', array( 'application' => PW_APPLICATION, 'auth' => PW_AUTH, 'notifications' => array( array( 'send_date' => 'now', 'content' => 'test', 'data' => array('custom' => 'json data'), 'link' => 'https://pushwoosh.com/' ) ) ));-module(pushwoosh).-export([run/0, stop/0, sendMessage/1]).%% sendMessage argument: message text %%
%% Authentication & App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% KickStart %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% HTTP Client verbosity options flase, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% JSON Wars !encode(S) -> encode(S, [$"]).encode([], Acc) -> lists:reverse([$" | Acc]);encode([C | Cs], Acc) -> Hex = lists:flatten(io_lib:format("~4.16.0b", [C])), encode(Cs, lists:reverse(Hex) ++ "u\" ++ Acc).
sendMessage(Message_text) -> %% URL to JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Method post, %%Request {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%HTTP options [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Options []), io:format("And received ~p", [Response]).class PushNotification
#- PushWoosh API Documentation https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- Two methods here: # - PushNotification.new.notify_all(message) Notifies all with the same option # - PushNotification.new.notify_devices(notification_options = {}) Notifies specific devices with custom options
include HTTParty #Make sure to have the HTTParty gem declared in your gemfile https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- Change to your settings @auth = {:application => "00000-00000",:auth => "auth_token"} end
# PushNotification.new.notify_all("This is a test notification to all devices") def notify_all(message) notify_devices({:content => message}) end
# PushNotification.new.notify_device({ # :content => "TEST", # :data => {:custom_data => value}, # :devices => array_of_tokens #}) def notify_devices(notification_options = {}) #- Default options, uncomment :data or :devices if needed default_notification_options = { # YYYY-MM-DD HH:mm OR 'now' :send_date => "now", # Object( language1: 'content1', language2: 'content2' ) OR string :content => { :fr => "Test", :en => "Test" }, # JSON string or JSON object "custom": "json data" #:data => { # :custom_data => value #}, # omit this field (push notification will be delivered to all the devices for the application), or provide the list of devices IDs #:devices => {} }
#- Merging with specific options final_notification_options = default_notification_options.merge(notification_options)
#- Constructing the final call options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- Executing the POST API Call with HTTPARTY - :body => options.to_json allows us to send the json as an object instead of a string response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// Uses JSON classes from https://json.org/java/
package com.arellomobile;
import org.json.*;import java.io.*;import java.net.*;
public class SendPushNotificationSample{ public static final String PUSHWOOSH_SERVICE_BASE_URL = "https://api.pushwoosh.com/json/1.3/"; private static final String AUTH_TOKEN = "YOUR_AUTH_TOKEN"; private static final String APPLICATION_CODE = "PW_APPLICATION_CODE";
public static void main(String[] args) throws JSONException, MalformedURLException { String method = "createMessage"; URL url = new URL(PUSHWOOSH_SERVICE_BASE_URL + method);
JSONArray notificationsArray = new JSONArray() .put(new JSONObject().put("send_date", "now") .put("content", "test") .put("link", "https://pushwoosh.com/"));
JSONObject requestObject = new JSONObject() .put("application", APPLICATION_CODE) .put("auth", AUTH_TOKEN) .put("notifications", notificationsArray);
JSONObject mainRequest = new JSONObject().put("request", requestObject); JSONObject response = SendServerRequest.sendJSONRequest(url, mainRequest.toString());
System.out.println("Response is: " + response); }}
class SendServerRequest{ static JSONObject sendJSONRequest(URL url, String request) { HttpURLConnection connection = null; try { connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoInput(true); connection.setDoOutput(true);
DataOutputStream writer = new DataOutputStream(connection.getOutputStream()); writer.write(request.getBytes("UTF-8")); writer.flush(); writer.close();
return parseResponse(connection); } catch (Exception e) { System.out.println("An error occurred: " + e.getMessage()); return null; } finally { if (connection != null) { connection.disconnect(); } } }
static JSONObject parseResponse(HttpURLConnection connection) throws IOException, JSONException { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) { response.append(line).append(''); } reader.close();
return new JSONObject(response.toString()); }}import json
PW_AUTH = 'API TOKEN'PW_APPLICATION_CODE = 'APPLICATION CODE'
try: # For Python 3.0 and later from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Fall back to Python 2's urllib2 from urllib2 import urlopen from urllib2 import Request
def pw_call(method, data): url = 'https://api.pushwoosh.com/json/1.3/' + method data = json.dumps({'request': data}) req = Request(url, data.encode('UTF-8'), {'Content-Type': 'application/json'}) try: f = urlopen(req) response = f.read() f.close() print('Pushwoosh response: ' + str(response)) except Exception as e: print ('Request error: ' + str(e))
if __name__ == '__main__': pw_call('createMessage', { 'auth': PW_AUTH, 'application': PW_APPLICATION_CODE, 'notifications': [ { 'send_date': 'now', 'content': 'test', 'data': {"custom": "json data"}, 'link': 'https://pushwoosh.com' } ] } )using System;using System.IO;using System.Net;using Newtonsoft.Json.Linq;
namespace WebApplication1{ public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string pwAuth = "YOUR_AUTH_TOKEN"; string pwApplication = "PW_APPLICATION_CODE"; JObject json = new JObject( new JProperty("application", pwApplication), new JProperty("auth", pwAuth), new JProperty("notifications", new JArray( new JObject( new JProperty("send_date", "now"), new JProperty("content", "test"), new JProperty("wp_type", "Toast"), new JProperty("wp_count", 3), new JProperty("data", new JObject( new JProperty("custom", "json data"))), new JProperty("link", "https://pushwoosh.com/"), new JProperty("conditions", new JArray( (object)new JArray("Color", "EQ", "black"))))))); PWCall("createMessage", json); } private void PWCall(string action, JObject data) { Uri url = new Uri("https://api.pushwoosh.com/json/1.3/" + action); JObject json = new JObject(new JProperty("request", data)); DoPostRequest(url, json); } private void DoPostRequest(Uri url, JObject data) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.ContentType = "text/json"; req.Method = "POST"; using (var streamWriter = new StreamWriter(req.GetRequestStream())) { streamWriter.Write(data.ToString()); } HttpWebResponse httpResponse; try { httpResponse = (HttpWebResponse)req.GetResponse(); } catch (Exception exc) { throw new Exception(string.Format("Problem with {0}, {1}", url, exc.Message)); } using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var responseText = streamReader.ReadToEnd(); Page.Response.Write(responseText); } } }}package main
import( "fmt" "encoding/json" "net/http" "bytes" "io/ioutil")
const ( PW_APPLICATION = "APPLICATION CODE" PW_AUTH = "API TOKEN" PW_ENDPOINT = "https://api.pushwoosh.com/json/1.3/")
func pwCall(method string, data []byte) (bool) { url := PW_ENDPOINT + method request, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) request.Header.Set("Content-Type", "application/json")
client := http.Client{} response, err := client.Do(request) if err != nil { fmt.Println("Error occur: " + err.Error()) return false } defer response.Body.Close()
fmt.Println("Response Status: ", response.Status) if (response.StatusCode == 200) { body, _ := ioutil.ReadAll(response.Body) fmt.Println("Response Body: ", string(body)) return true } return false}
func main() { requestData := map[string]interface{}{ "request": map[string]interface{} { "auth": PW_AUTH, "application": PW_APPLICATION, "notifications": []interface{}{ map[string]interface{} { "send_date": "now", "content": "test", "link": "https://pushwoosh.com", }, }, }, } jsonRequest, _ := json.Marshal(requestData) requestString := string(jsonRequest) fmt.Println("Request body: " + requestString)
pwCall("createMessage", jsonRequest)}$.ajax({ type: "POST", url: "https://api.pushwoosh.com/json/1.3/createMessage", data: JSON.stringify({ "request": { "application": "APPLICATION CODE", "auth": "API TOKEN", "notifications": [{ "send_date": "now", "ignore_user_timezone": true, "content": "Hello world!" }] } }), dataType: "json"}).done(function(data) { console.log(data);});deleteMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/deleteMessage
ลบข้อความที่ตั้งเวลาไว้
เนื้อหาของคำขอ
Anchor link to| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| auth* | string | API access token จาก Pushwoosh Control Panel |
| message* | string | รหัสข้อความ ที่ได้รับในคำขอ /createMessage |
{ "status_code": 200, "status_message": "OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // จำเป็น รหัสข้อความที่ได้รับใน /createMessage }}รหัสสถานะ:
| รหัสสถานะ HTTP | status_code | คำอธิบาย |
|---|---|---|
| 200 | 200 | ลบข้อความสำเร็จ |
| 200 | 210 | ข้อผิดพลาดของอาร์กิวเมนต์ ดู status_message สำหรับข้อมูลเพิ่มเติม |
| 400 | N/A | สตริงคำขอมีรูปแบบไม่ถูกต้อง |
| 500 | 500 | ข้อผิดพลาดภายใน |
<?php// see https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// creates request instance$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// call '/deleteMessage' Web Service$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) { print 'Great, my message has been deleted !';} else { print 'Oups, the deletion failed :-('; print 'Status code : ' . $response->getStatusCode(); print 'Status message : ' . $response->getStatusMessage();}getMessageDetails
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getMessageDetails
ดึงรายละเอียดข้อความ
เนื้อหาของคำขอ
Anchor link to| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| auth* | string | API access token จาก Pushwoosh Control Panel |
| message* | string | รหัสข้อความ หรือ ID ข้อความ |
{ "status_code": 200, "status_message": "OK", "response": { "message": { "id": 2068991743, "created": "2016-09-14 17:19:42", "send_date": "2016-09-14 17:19:41", "status": "done", "content": { "en": "Hello {Name|CapitalizeFirst|friend}! 🚀" }, "platforms": "[1]", "ignore_user_timezone": "1", "code": "XXXX-92B4C3C5-A7F5EF70", "data": { "key": "value" } } }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // จำเป็น รหัสข้อความหรือ ID ข้อความ }}createTargetedMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
สร้าง push notification ที่กำหนดเป้าหมายใหม่
เนื้อหาของคำขอ
Anchor link to| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| auth* | string | API access token จาก Pushwoosh Control Panel |
| devices_filter* | string | ดูหมายเหตุด้านล่าง |
| send_date* | string | YYYY-MM-DD HH:mm หรือ ‘now’ |
| ignore_user_timezone | boolean | หากไม่ระบุ จะใช้ UTC-0 เป็นค่าเริ่มต้นสำหรับ “send_date” |
| timezone | string | หากไม่ระบุ จะใช้ UTC-0 เป็นค่าเริ่มต้นสำหรับ “send_date” |
| campaign | string | รหัสของแคมเปญ ที่คุณต้องการกำหนดข้อความ push นี้ |
| content* | string | เนื้อหาการแจ้งเตือน ดูรายละเอียดในตัวอย่างคำขอ |
| transactionId | string | ตัวระบุข้อความที่ไม่ซ้ำกันเพื่อป้องกันการซ้ำซ้อนของข้อความในกรณีที่เกิดปัญหาเครือข่าย จัดเก็บไว้ที่ฝั่ง Pushwoosh เป็นเวลา 5 นาที |
| link | string | ลิงก์ที่จะเปิดเมื่อผู้ใช้เปิดข้อความ push |
| minimize_link | integer | 0 - ไม่ย่อ, 2 - bit.ly ค่าเริ่มต้น = 2 |
| data | object | สตริง JSON หรืออ็อบเจกต์ JSON จะถูกส่งเป็นพารามิเตอร์ “u” ใน payload (แปลงเป็นสตริง JSON) |
| preset | string | รหัส Preset |
| send_rate | integer | การควบคุมปริมาณ (Throttling) ค่าที่ถูกต้องคือตั้งแต่ 100 ถึง 1000 pushes ต่อวินาที |
| inbox_date | string | ระบุว่าจะลบข้อความออกจาก Inbox เมื่อใด |
| inbox_image | string | URL ของรูปภาพที่จะแสดงใกล้กับข้อความใน Inbox |
{ "status_code": 200, "status_message": "OK", "response": { "messageCode": "97B0-C7473871-2FBDFDC6" }}The request cannot be fulfilled due to bad syntax.ตัวอย่างการตอบกลับเพิ่มเติม:
{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Invalid tag set specification. \")\" expected.", "type": "syntax" }] }}{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Application \"11111-11111\" not found", "type": "semantic", "near": "\"11111-11111\"" }] }}{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Invalid character \"/\" at 1:19", "type": "lexical" }] }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // จำเป็น ไวยากรณ์อธิบายไว้ด้านล่าง "send_date": "now", // ไม่บังคับ YYYY-MM-DD HH:mm หรือ 'now' "ignore_user_timezone": true, // ไม่บังคับ "timezone": "America/New_York", // ไม่บังคับ หากไม่ระบุ จะใช้ UTC-0 เป็นค่าเริ่มต้นสำหรับ "send_date" // ข้อมูลเพิ่มเติม https://php.net/manual/timezones.php "campaign": "CAMPAIGN_CODE", // ไม่บังคับ รหัสแคมเปญที่คุณต้องการกำหนดข้อความ push นี้ "content": { // ไม่บังคับ Object หรือ string ใช้ "wns_content" แทนสำหรับ Windows "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // ไม่บังคับ ตัวระบุข้อความที่ไม่ซ้ำกันเพื่อป้องกันการซ้ำซ้อนของข้อความ // ในกรณีที่เกิดปัญหาเครือข่าย จัดเก็บไว้ที่ฝั่ง // Pushwoosh เป็นเวลา 5 นาที "rich_media": "XXXXX-XXXXX", // ไม่บังคับ คัดลอกรหัส Rich Media จากแถบ URL ของ // หน้าแก้ไข Rich Media ใน Pushwoosh Control Panel "link": "https://google.com", // ไม่บังคับ สำหรับ deeplinks ให้เพิ่ม "minimize_link": 0 "minimize_link": 0, // ไม่บังคับ 0 — ไม่ย่อ, 2 — bitly ค่าเริ่มต้น = 2 // บริการย่อ URL ของ Google ถูกปิดใช้งานตั้งแต่วันที่ 30 มีนาคม 2019 // โปรดทราบว่าบริการย่อลิงก์มีข้อจำกัด // เกี่ยวกับจำนวนการเรียกใช้ "data": { // ไม่บังคับ สตริง JSON หรืออ็อบเจกต์ JSON "key": "value" // จะถูกส่งเป็นพารามิเตอร์ "u" ใน payload }, // (แปลงเป็นสตริง JSON) "preset": "XXXXX-XXXXX", // ไม่บังคับ รหัส Push Preset จาก Control Panel ของคุณ "send_rate": 100, // ไม่บังคับ การควบคุมปริมาณ (Throttling) ค่าที่ถูกต้องคือตั้งแต่ 100 ถึง 1000 pushes/second "dynamic_content_placeholders": { // ไม่บังคับ ตัวยึดตำแหน่งสำหรับเนื้อหาแบบไดนามิกแทนแท็กของอุปกรณ์ "firstname": "John", "lastname": "Doe" },
// หากต้องการบันทึกข้อความไปยัง Inbox ผ่าน API ให้ใช้ "inbox_date" หรือ "inbox_image" // ข้อความจะถูกบันทึกเมื่อมีการใช้พารามิเตอร์เหล่านี้อย่างน้อยหนึ่งตัว "inbox_image": "Inbox image URL", // ไม่บังคับ รูปภาพที่จะแสดงใกล้กับข้อความ "inbox_date": "2017-02-02" // ไม่บังคับ ระบุว่าจะลบข้อความออกจาก Inbox เมื่อใด // ข้อความจะถูกลบออกจาก Inbox เวลา 00:00:01 UTC ของ // วันที่ระบุ ดังนั้นวันก่อนหน้าคือวันสุดท้าย // ที่ผู้ใช้สามารถเห็นข้อความใน Inbox ของตนได้ // หากไม่ระบุ วันที่ลบเริ่มต้นคือวันถัดไป // หลังจากวันที่ส่ง }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "devices_filter": "FILTER CONDITION", "send_date": "now", // ไม่บังคับ YYYY-MM-DD HH:mm หรือ 'now' "content": { // ไม่บังคับ Object หรือ string "en": "English", // ใช้ "wns_content" แทนสำหรับ Windows "de": "Deutsch" }, "ignore_user_timezone": true, // ไม่บังคับ "timezone": "America/New_York", // ไม่บังคับ หากไม่ระบุ จะใช้ UTC-0 เป็นค่าเริ่มต้นสำหรับ "send_date" // ข้อมูลเพิ่มเติม https://php.net/manual/timezones.php "campaign": "CAMPAIGN_CODE", // ไม่บังคับ รหัสแคมเปญที่คุณต้องการกำหนดข้อความ push นี้
// พารามิเตอร์ที่เกี่ยวข้องกับ iOS "ios_badges": 5, // ไม่บังคับ หมายเลขป้ายแอปพลิเคชัน iOS // ใช้ "+n" หรือ "-n" เพื่อเพิ่ม/ลดค่าป้ายกำกับ n "ios_sound": "sound file.wav", // ไม่บังคับ ชื่อไฟล์เสียงใน main bundle ของแอปพลิเคชัน // หากเว้นว่างไว้ อุปกรณ์จะไม่ส่งเสียง // เมื่อได้รับการแจ้งเตือน push "ios_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "ios_sound" "ios_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที "ios_silent": 1, // ไม่บังคับ เปิดใช้งานการแจ้งเตือนแบบเงียบ (ไม่สนใจ "sound" และ "content") "ios_category_id": "1", // ไม่บังคับ ID หมวดหมู่ iOS8 จาก Pushwoosh "ios_category_custom": "category", // ไม่บังคับ หมวดหมู่ APNS ที่กำหนดเอง "ios_root_params": { // ไม่บังคับ พารามิเตอร์ระดับรากไปยังพจนานุกรม aps "aps": { "content-available": "0", // ไม่บังคับ ตั้งค่า "1" เพื่อส่ง push แบบเงียบ และ "0" สำหรับ push ปกติ "mutable-content": 1 // จำเป็นสำหรับไฟล์แนบสื่อ iOS10+ }, "attachment": "YOUR_ATTACHMENT_URL", // URL ไฟล์แนบสื่อ iOS10+ "data": {} // ไม่บังคับ ข้อมูลที่ผู้ใช้ให้มา สูงสุด 4KB }, "apns_trim_content": 1, // ไม่บังคับ (0|1) ตัดสตริงเนื้อหาที่เกินด้วยเครื่องหมายจุดไข่ปลา "ios_title": { // ไม่บังคับ เพิ่มหัวข้อสำหรับ push notification ของ iOS "en": "title" }, "ios_subtitle": { // ไม่บังคับ เพิ่มหัวข้อย่อยสำหรับ push notification ของ iOS "en": "subTitle" }, "ios_content": { // ไม่บังคับ เพิ่มเนื้อหาสำหรับ push notification ของ iOS "en": "content" },
// พารามิเตอร์ที่เกี่ยวข้องกับ Android "android_root_params": { // ไม่บังคับ อ็อบเจกต์ key-value ที่กำหนดเอง "key": "value" // พารามิเตอร์ระดับรากสำหรับผู้รับ payload ของ Android }, "android_sound": "soundfile", // ไม่บังคับ ไม่มีนามสกุลไฟล์ หากเว้นว่างไว้ อุปกรณ์ // จะไม่ส่งเสียงเมื่อได้รับการแจ้งเตือน push "android_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "android_sound" "android_header": { // ไม่บังคับ Object หรือ string ส่วนหัวการแจ้งเตือนของ Android "en": "header" }, "android_content": { // ไม่บังคับ Object หรือ string เนื้อหาการแจ้งเตือนของ Android "en": "content" }, "android_icon": "icon.png", "android_custom_icon": "URL.png", // ไม่บังคับ URL พาธแบบเต็มไปยังไฟล์รูปภาพ "android_banner": "URL.png", // ไม่บังคับ URL พาธแบบเต็มไปยังไฟล์รูปภาพ "android_badges": 5, // ไม่บังคับ จำนวนเต็ม หมายเลขป้ายไอคอนแอปพลิเคชัน Android // ใช้ "+n" หรือ "-n" เพื่อเพิ่ม/ลดค่าป้ายกำกับ n "android_gcm_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที "android_vibration": 0, // ไม่บังคับ บังคับให้สั่นสำหรับ push ที่มีความสำคัญสูงบน Android "android_led": "#rrggbb", // ไม่บังคับ สี LED แบบ hex อุปกรณ์จะพยายามประมาณค่าให้ใกล้เคียงที่สุด "android_priority": -1, // ไม่บังคับ ตั้งค่าพารามิเตอร์ "importance" สำหรับอุปกรณ์ที่มี Android 8.0 // ขึ้นไป และพารามิเตอร์ "priority" สำหรับอุปกรณ์ // ที่มี Android 7.1 และต่ำกว่า กำหนดระดับการขัดจังหวะ // ของช่องทางการแจ้งเตือนหรือการแจ้งเตือนเฉพาะ // ค่าที่ถูกต้องคือ -2, -1, 0, 1, 2 "android_delivery_priority": "normal", // ไม่บังคับ "normal" หรือ "high" เปิดใช้งานการส่งการแจ้งเตือน // เมื่ออุปกรณ์อยู่ในโหมดประหยัดพลังงาน "android_ibc": "#RRGGBB", // ไม่บังคับ สีพื้นหลังไอคอนบน Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" ฯลฯ "android_silent": 1, // ไม่บังคับ 0 หรือ 1 เปิดใช้งานการแจ้งเตือนแบบเงียบ // ไม่สนใจเสียงและเนื้อหา
// พารามิเตอร์ที่เกี่ยวข้องกับ Amazon "adm_root_params": { // ไม่บังคับ อ็อบเจกต์ key-value ที่กำหนดเอง "key": "value" }, "adm_sound": "push.mp3", "adm_sound_off": true, // ไม่บังคับ เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "adm_sound" "adm_header": { "en": "Header" }, "adm_content": { "en": "content" }, "adm_icon": "icon.png", "adm_custom_icon": "URL.png", "adm_banner": "URL.png", "adm_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุดของข้อความ // ในหน่วยวินาที "adm_priority": -1, // ไม่บังคับ ลำดับความสำคัญของ push ในลิ้นชัก push ของ Amazon // ค่าที่ถูกต้องคือ -2, -1, 0, 1 และ 2
// พารามิเตอร์ที่เกี่ยวข้องกับ Mac OS X "mac_badges": 3, "mac_sound": "sound.caf", "mac_sound_off": true, "mac_root_params": { "content-available": 1 }, "mac_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที "mac_title": { // ไม่บังคับ เพิ่มหัวข้อสำหรับ push notification "en": "title" }, "mac_subtitle": { // ไม่บังคับ เพิ่มหัวข้อย่อยสำหรับ push notification ของ MacOS "en": "subtitle" }, "mac_content": { // ไม่บังคับ เพิ่มเนื้อหาสำหรับ push notification ของ MacOS "en": "content" },
// พารามิเตอร์ที่เกี่ยวข้องกับ Windows "wns_content": { // จำเป็น เนื้อหา (XML หรือ raw) ของการแจ้งเตือนที่เข้ารหัส // ใน base64 ของ MIME ในรูปแบบของ Object หรือ String "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // ไม่บังคับ ใช้ในนโยบายการแทนที่ Tile // สตริงตัวอักษรและตัวเลขไม่เกิน 16 ตัวอักษร "wns_cache": 1, // ไม่บังคับ (1|0) แปลเป็นค่า X-WNS-Cache-Policy "wns_ttl": 600, // ไม่บังคับ เวลาหมดอายุสำหรับการแจ้งเตือนในหน่วยวินาที
// พารามิเตอร์ที่เกี่ยวข้องกับ Safari "safari_title": { // ไม่บังคับ Object หรือ string หัวข้อของการแจ้งเตือน "en": "title" }, "safari_content": { // ไม่บังคับ Object หรือ string เนื้อหาของการแจ้งเตือน "en": "content" }, "safari_action": "Click here", // ไม่บังคับ "safari_url_args": [ // จำเป็น แต่ค่าอาจว่างเปล่าได้ "firstArgument", "secondArgument" ], "safari_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live — อายุการใช้งานสูงสุด // ของข้อความในหน่วยวินาที
// พารามิเตอร์ที่เกี่ยวข้องกับ Chrome "chrome_title": { // ไม่บังคับ คุณสามารถระบุส่วนหัวของข้อความในพารามิเตอร์นี้ "en": "title" }, "chrome_content": { // ไม่บังคับ คุณสามารถระบุเนื้อหาของข้อความในพารามิเตอร์นี้ "en": "content" }, "chrome_icon": "icon_URL", // ไม่บังคับ URL พาธแบบเต็มไปยังไอคอนหรือพาธไฟล์ทรัพยากรของส่วนขยาย "chrome_gcm_ttl": 3600, // ไม่บังคับ พารามิเตอร์ Time-to-live – อายุการใช้งานสูงสุดของข้อความในหน่วยวินาที "chrome_duration": 20, // ไม่บังคับ เปลี่ยนเวลาแสดงผลของ push ของ Chrome ตั้งค่าเป็น 0 เพื่อแสดง push // จนกว่าผู้ใช้จะโต้ตอบ "chrome_image": "image_URL", // ไม่บังคับ URL ไปยังรูปภาพขนาดใหญ่ "chrome_root_params": { // ไม่บังคับ ตั้งค่าพารามิเตอร์เฉพาะสำหรับข้อความที่ส่งไปยัง Chrome "key": "value" }, "chrome_button_text1": "text1", // ไม่บังคับ "chrome_button_url1": "button1_URL", // ไม่บังคับ จะถูกละเว้นหากไม่ได้ตั้งค่า chrome_button_text1 "chrome_button_text2": "text2", // ไม่บังคับ "chrome_button_url2": "button2_url", // ไม่บังคับ จะถูกละเว้นหากไม่ได้ตั้งค่า chrome_button_text2
// พารามิเตอร์ที่เกี่ยวข้องกับ Firefox "firefox_title": { // ไม่บังคับ Object หรือ string คุณสามารถระบุส่วนหัวของข้อความได้ที่นี่ "en": "title" }, "firefox_content": { // ไม่บังคับ Object หรือ string คุณสามารถระบุเนื้อหาของข้อความได้ที่นี่ "en": "content" }, "firefox_icon": "icon_URL", // ไม่บังคับ URL พาธแบบเต็มไปยังไอคอนหรือพาธ // ไปยังไฟล์ในทรัพยากรของส่วนขยาย "firefox_root_params": { // ไม่บังคับ ตั้งค่าพารามิเตอร์เฉพาะสำหรับข้อความที่ส่งไปยัง Firefox "key": "value" } }}พื้นฐานนั้นง่ายมาก – ตัวกรองทั้งหมดจะทำงานบน เซต ของเอนทิตี
เซตถูกกำหนดเป็น:
1. อุปกรณ์ที่สมัครรับข้อมูลแอปเฉพาะ (A);
2. อุปกรณ์ที่ตรงกับค่าแท็กที่ระบุ (T) หรือค่าแท็กเฉพาะแอป (AT);\
ไวยากรณ์
Anchor link toลองดูตัวอย่างบางส่วนตามรายการด้านบน
การกำหนดเป้าหมายผู้สมัครรับข้อมูลแอป
Anchor link toตัวกรอง “A” กำหนดเซตของอุปกรณ์ที่สมัครรับข้อมูลแอปเฉพาะ:
A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])
โดยที่
- “XXXXX-XXXXX” – รหัสแอปพลิเคชัน Pushwoosh
- [“iOS”, “Android”, …] – อาร์เรย์ของแพลตฟอร์มเป้าหมาย หากละไว้ ข้อความจะถูกส่งไปยังทุกแพลตฟอร์มที่มีให้สำหรับแอปนี้
การกรองตามค่าแท็ก
Anchor link toตัวกรอง “T” กำหนดเซตของอุปกรณ์ที่มีค่าแท็กที่ระบุถูกกำหนดไว้
T(\"Age\", IN, [17,20])
กำหนดเซตของอุปกรณ์ที่มีแท็ก “age” ตั้งค่าเป็นหนึ่งในค่าต่อไปนี้: 17, 18, 19, 20
ประเภทแท็กและตัวดำเนินการ
Anchor link toสิ่งที่สำคัญมากที่ต้องเข้าใจคือแท็กจะถูกแชร์ระหว่างแอปต่างๆ และเป็นเครื่องมือที่ทรงพลังมากสำหรับการแบ่งกลุ่มและกรองผู้ใช้เป้าหมายของคุณโดยไม่ต้องผูกมัดตัวเองกับแอปใดแอปหนึ่ง
แท็กอาจเป็นหนึ่งในสามประเภทที่แตกต่างกัน: String, Integer, List ประเภทของแท็กจะกำหนดว่าคุณสามารถใช้ตัวดำเนินการใดกับแท็กนั้นๆ ได้
แท็กสตริง
Anchor link toตัวดำเนินการที่ใช้ได้:
- EQ – กำหนดเป้าหมายอุปกรณ์ที่มีค่าแท็กที่ระบุ
- IN – กำหนดเป้าหมายอุปกรณ์ที่มีค่าแท็กใดๆ ที่ระบุ
- NOTIN – กำหนดเป้าหมายอุปกรณ์ที่ไม่มีค่าแท็กที่ระบุ
- NOTEQ – กำหนดเป้าหมายอุปกรณ์ที่มีค่าแท็กไม่เท่ากับค่าที่ระบุ
- NOTSET – กำหนดเป้าหมายอุปกรณ์ที่ไม่มีค่าสำหรับแท็กที่ระบุ
- ANY – กำหนดเป้าหมายอุปกรณ์ที่มีค่าใดๆ ที่ตั้งไว้สำหรับแท็กที่ระบุ
ตัวอย่าง:
T (\"Age\", EQ, 30) – กรองผู้ใช้ที่มีอายุ 30 ปี
T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – กรองผู้ใช้ที่เลือกสีแดง เขียว หรือน้ำเงินเป็นสีโปรด
T (\"Name", NOTSET, \"\") – กำหนดเป้าหมายอุปกรณ์ที่ไม่มีค่าสำหรับแท็ก Name
คุณสามารถใช้ค่าตัวเลขกับแท็กสตริงได้ แต่ค่าดังกล่าวจะถูกแปลงเป็นสตริง
แท็กจำนวนเต็ม
Anchor link toตัวดำเนินการที่ใช้ได้:
- GTE – มากกว่าหรือเท่ากับค่าที่ระบุ
- LTE– น้อยกว่าหรือเท่ากับค่าที่ระบุ
- EQ – เท่ากับค่าที่ระบุ
- BETWEEN – อยู่ระหว่างค่าต่ำสุดและสูงสุดที่ระบุ
- IN – ค่าใดๆ ที่ระบุ
- NOTIN – ไม่มีค่าที่ระบุถูกกำหนดให้กับอุปกรณ์
- NOTEQ – อุปกรณ์ที่มีค่าแท็กไม่เท่ากับค่าที่ระบุ
- NOTSET – อุปกรณ์ที่ไม่มีค่าสำหรับแท็กที่ระบุ
- ANY – อุปกรณ์ที่มีค่าใดๆ ที่ตั้งไว้สำหรับแท็กที่ระบุ
ตัวอย่าง:
T (\"Level\", EQ, 14) – กรองผู้ใช้ที่อยู่ในระดับ 14 เท่านั้น
T (\"Level\", BETWEEN, [1,5) – กรองผู้ใช้ที่อยู่ในระดับ 1, 2, 3, 4 และ 5
T (\"Level", GTE, 29) – กำหนดเป้าหมายผู้ใช้ที่ไปถึงระดับ 29 เป็นอย่างน้อย
แท็กรายการ
Anchor link toตัวดำเนินการที่ใช้ได้:
- IN – อุปกรณ์ที่มีค่าแท็กใดๆ ที่ระบุ
ตัวอย่าง: T("Category", IN, ["breaking_news","business","politics"])
แท็กวันที่
Anchor link toตัวดำเนินการที่ใช้ได้:
- GTE – มากกว่าหรือเท่ากับค่าที่ระบุ
- LTE– น้อยกว่าหรือเท่ากับค่าที่ระบุ
- EQ – เท่ากับค่าที่ระบุ
- BETWEEN – อยู่ระหว่างค่าต่ำสุดและสูงสุดที่ระบุ
- NOTEQ – อุปกรณ์ที่มีค่าแท็กไม่เท่ากับค่าที่ระบุ
- NOTSET – อุปกรณ์ที่ไม่มีค่าสำหรับแท็กที่ระบุ
- ANY – อุปกรณ์ที่มีค่าใดๆ ที่ตั้งไว้สำหรับแท็กที่ระบุ
ตัวอย่าง:
AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])
AT("7777D-322A7","Last Application Open", GTE, "90 days ago")
การดำเนินการ
Anchor link to- “+” – รวมสองเซต (เท่ากับ OR)
- “*” – ตัดกันสองเซต (เท่ากับ AND)
- “\” – ลบเซตหนึ่งออกจากอีกเซตหนึ่ง (เท่ากับ NOT)
การดำเนินการทั้งหมดเป็นแบบเชื่อมโยงจากซ้ายไปขวา ”+” และ ”*” มีลำดับความสำคัญเท่ากัน "" มีลำดับความสำคัญสูงกว่า คุณสามารถใช้วงเล็บเพื่อกำหนดลำดับความสำคัญของการคำนวณได้
โปรดทราบว่าการดำเนินการ “\” ไม่มีคุณสมบัติสลับที่ A("12345-12345") \ A("67890-67890") ไม่เหมือนกับ A("67890-67890") \ A("12345-12345")
getPushHistory
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
รับประวัติข้อความพร้อมรายละเอียด push
เนื้อหาของคำขอ
Anchor link to| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| auth* | string | API access token จาก Pushwoosh Control Panel |
| limitMessages | integer | จำกัดจำนวนข้อความในการตอบกลับ ค่าที่เป็นไปได้ตั้งแต่ 10 ถึง 1000 |
| source | string | แหล่งที่มาของประวัติ push อาจเป็น null หรือ: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test” |
| searchBy | string | ค่าที่เป็นไปได้ในการค้นหา อาจเป็น null หรือ: “notificationID”, “notificationCode”, “applicationCode”, “campaignCode” |
| value | string | ค่าค้นหาที่ตั้งค่าตามฟิลด์ “searchBy” |
| lastNotificationID | string | ใช้สำหรับการแบ่งหน้า messageId สุดท้ายจากการเรียก /getPushHistory ก่อนหน้า ดูรายละเอียดด้านล่าง |
{ "status_code": 200, "status_message": "OK", "response": { "rows": [{ "id": 10191611434, "code": "8071-07AD1171-77238AD1", "createDate": "2020-09-14 12:26:21", "sendDate": "2020-09-14 12:26:21", "content": { "en": "Hello!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": "E3A64-A5F3C", "filter_conditions": "#In-app Purchase(≠0)", "filter_name": "Purchased something", "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": null, "open": { "C90C0-0E786": { "IOS": 0 } }, "sent": { "C90C0-0E786": { "IOS": 1 } }, "ctr": { "C90C0-0E786": 0 } }, { "id": 10191609202, "code": "41CA-83F8E0D7-7A63822B", "createDate": "2020-09-14 12:25:55", "sendDate": "2020-09-14 12:25:55", "content": { "en": "Hi!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": null, "filter_conditions": null, "filter_name": null, "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": { "2D732-BB981": "News" }, "open": { "C90C0-0E786": { "CHROME": 0, "IOS": 0 } }, "sent": { "C90C0-0E786": { "CHROME": 1, "IOS": 2 } }, "ctr": { "C90C0-0E786": 0 } }] }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "source": null, // ไม่บังคับ ค่าที่เป็นไปได้คือ null, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // ไม่บังคับ ค่าที่เป็นไปได้คือ "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // ไม่บังคับ ค่าค้นหาที่ตั้งค่าตามฟิลด์ "searchBy" "lastNotificationID": 0, // ไม่บังคับ ใช้สำหรับการแบ่งหน้า messageId สุดท้ายจาก // การเรียก /getPushHistory ก่อนหน้า ดูรายละเอียดด้านล่าง "limitMessages": 1000 // ไม่บังคับ ค่าที่เป็นไปได้ตั้งแต่ 10 ถึง 1000 }}เมธอดนี้จะส่งคืนข้อความ 1000 ข้อความจากบัญชีที่จัดเรียงตาม ID ข้อความ หากต้องการรับหน้าที่สอง ให้ระบุ ID ข้อความสุดท้ายของการตอบกลับก่อนหน้าในพารามิเตอร์ lastNotificationId
ประเภทข้อมูลการตอบกลับ
Anchor link toid -- int | 0code -- stringcreateDate -- string (date: %Y-%m-%d %H:%M:%S)sendDate -- string (date: %Y-%m-%d %H:%M:%S)content -- array ( dict {lang: value} | list [])title -- array ( dict {lang: value} | list [])subtitle -- array ( dict {lang: value} | list [])url -- stringios_title -- string | array ( dict {lang: value} ) | nullios_subtitle -- string | array ( dict {lang: value} ) | nullios_root_params -- dict (JSON) | nullandroid_header -- string | array ( dict {lang: value} ) | nullandroid_root_params -- dict (JSON) | nullconditions -- list (JSON) | nullconditions_operator -- string | nullfilter_code -- string | nullfilter_name -- string | nullfilter_conditions -- string | nullgeozone -- string | nullcampaignId -- string | ""campaignName -- string | ""subscription_segments (obsolete) -- list (JSON) | nulldata -- dict (JSON) | nullopen -- dict [dict [string: int]] | "" Example: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}sent -- dict [dict [string: int]] | "" Example: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}ctr -- dict [string: int] | "" Example: {'AAAAA-BBBBB': 1}errors -- dict [string: int] | "" Example: {'ANDROID': 1, 'IOS': 1}cancelMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/cancelMessage
ยกเลิกข้อความที่ตั้งเวลาไว้
เนื้อหาของคำขอ
Anchor link to| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| auth* | string | API access token จาก Pushwoosh Control Panel |
| message* | string | รหัสข้อความ ที่ได้รับในการตอบกลับของ /createMessage |
{ "status_code":200, "status_message":"OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // จำเป็น รหัสข้อความที่ได้รับในการตอบกลับของ /createMessage }}รหัสสถานะ:
| รหัสสถานะ HTTP | status_code | คำอธิบาย |
|---|---|---|
| 200 | 200 | ยกเลิกข้อความสำเร็จ |
| 200 | 210 | ข้อผิดพลาดของอาร์กิวเมนต์ ดู status_message สำหรับข้อมูลเพิ่มเติม |
| 400 | N/A | สตริงคำขอมีรูปแบบไม่ถูกต้อง |
| 500 | 500 | ข้อผิดพลาดภายใน |