Messages API
createMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
สร้างการแจ้งเตือนแบบพุชใหม่
Request Body
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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง "en": "English", // ใช้ "wns_content" แทนสำหรับ Windows "fr": "French" }, "title": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง "en": "Title", // จะถูกละเว้นหากมีการระบุหัวข้อเฉพาะแพลตฟอร์ม "fr": "Titre" // 'ios_title', 'android_header' ฯลฯ }, // ดูตัวอย่างพารามิเตอร์เฉพาะแพลตฟอร์มด้านล่าง "subtitle":{ // ไม่จำเป็น อ็อบเจกต์หรือสตริง "en": "Subtitle", // จะถูกละเว้นหากมีการระบุหัวข้อเฉพาะแพลตฟอร์ม "fr": "Sous-titre" // 'ios_subtitle' ฯลฯ }, // ดูตัวอย่างพารามิเตอร์เฉพาะแพลตฟอร์มด้านล่าง "ignore_user_timezone": true, // ไม่จำเป็น "timezone": "America/New_York", // ไม่จำเป็น หากไม่ระบุ ค่าเริ่มต้นสำหรับ "send_date" คือ UTC-0 // ดู https://php.net/manual/timezones.php สำหรับ // โซนเวลาที่รองรับ "campaign": "CAMPAIGN_CODE", // ไม่จำเป็น รหัสแคมเปญที่คุณต้องการ // กำหนดข้อความพุชนี้ "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 ขีดจำกัดการควบคุมปริมาณจะไม่ถูกนำไปใช้กับ // การแจ้งเตือนแบบพุชนี้โดยเฉพาะ // เกี่ยวข้องกับการสร้างเทมเพลต โปรดดูคู่มือ Template Engine เพื่อเรียนรู้เพิ่มเติม "template_bindings": { // ไม่จำเป็น "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // ไม่จำเป็น ตัวยึดตำแหน่งสำหรับเนื้อหาแบบไดนามิกแทนแท็กของอุปกรณ์ "firstname": "John", "lastname": "Doe" }, "message_type": "marketing", // ไม่จำเป็น "marketing" หรือ "transactional" // หากไม่ระบุ ผู้ใช้ที่มี PW_ControlGroup: true จะไม่ได้รับข้อความ
// พารามิเตอร์ Frequency capping ตรวจสอบให้แน่ใจว่าได้กำหนดค่า Global frequency capping ใน Control Panel แล้ว // Frequency capping ไม่มีผลกับข้อความ transactional // ในกรณีอื่นๆ ทั้งหมด รวมถึงการไม่ระบุ "message_type" จะมีการใช้ frequency capping "capping_days": 30, // ไม่จำเป็น จำนวนวันสำหรับ frequency capping (สูงสุด 30 วัน) "capping_count": 10, // ไม่จำเป็น จำนวนพุชสูงสุดที่สามารถส่งจาก // แอปเฉพาะไปยังอุปกรณ์หนึ่งๆ ภายในระยะเวลา 'capping_days' // ในกรณีที่ข้อความที่สร้างขึ้นเกิน // ขีดจำกัด 'capping_count' สำหรับอุปกรณ์หนึ่งๆ ข้อความนั้น // จะไม่ถูกส่งไปยังอุปกรณ์นั้น "capping_exclude": true, // ไม่จำเป็น หากตั้งค่าเป็น true การแจ้งเตือนแบบพุชนี้ // จะไม่ถูกนับรวมใน capping สำหรับพุชในอนาคต "capping_avoid": true, // ไม่จำเป็น หากตั้งค่าเป็น true capping จะไม่ถูกนำไปใช้กับ // การแจ้งเตือนแบบพุชนี้โดยเฉพาะ
// หากต้องการบันทึกข้อความไปยัง 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": [ // ไม่จำเป็น ระบุ tokens หรือ hwids เพื่อส่งพุชเป้าหมาย "hwid_XXXX" // การแจ้งเตือน ไม่เกิน 1000 tokens/hwids ใน ], // อาร์เรย์ หากตั้งค่า ข้อความจะถูกส่งไปยัง // อุปกรณ์ในรายการเท่านั้น ไม่อนุญาตให้ใช้ Application Group สำหรับรายการอุปกรณ์ // iOS push tokens สามารถเป็นตัวพิมพ์เล็กเท่านั้น "to": [ // ไม่จำเป็น สำหรับอีเมล, SMS และช่องทางที่คล้ายกัน รายชื่อผู้รับ "email_1", "email_2" // (เช่น ที่อยู่อีเมล, หมายเลขโทรศัพท์) สูงสุด 1000 รายการ ], // สำหรับพุช ให้ใช้ "devices" แทน // การแจ้งเตือนแบบพุชที่เน้นผู้ใช้เป็นศูนย์กลาง "users": [ // ไม่จำเป็น หากตั้งค่า ข้อความจะถูกส่งไปยัง "user_XXXX" // user ID ที่ระบุเท่านั้น (ตั้งค่าผ่านการเรียก /registerUser) ], // หากระบุพร้อมกับ devices หรือ to // อย่างหลังจะถูกละเว้น ไม่เกิน 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, // จำเป็น พารามิเตอร์นี้จำเป็นสำหรับการส่งการแจ้งเตือนแบบพุช 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, // จำเป็น พารามิเตอร์นี้จำเป็นสำหรับการส่งการแจ้งเตือนแบบพุช 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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เพิ่มหัวข้อเฉพาะ iOS สำหรับการแจ้งเตือนแบบพุช "en": "title" }, "ios_subtitle": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เพิ่มหัวข้อย่อยเฉพาะ iOS สำหรับการแจ้งเตือนแบบพุช "en": "subtitle" }, "ios_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เพิ่มเนื้อหาเฉพาะ iOS สำหรับการแจ้งเตือนแบบพุช "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", // ไม่จำเป็น รหัสหมวดหมู่ iOS8 จาก Pushwoosh "ios_root_params": { // ไม่จำเป็น พารามิเตอร์ระดับรากไปยังพจนานุกรม aps "aps": { "content-available": "0", // ไม่จำเป็น ตั้งค่า "1" เพื่อส่งพุชเงียบและ "0" สำหรับพุชปกติ "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 เดียวกันจะถูกจัดกลุ่ม // บนหน้าจอล็อกและใน Notification Center "ios_critical": true, // ไม่จำเป็น ทำเครื่องหมายการแจ้งเตือน iOS เป็นการแจ้งเตือนที่สำคัญ // เล่นเสียงแม้ว่าอุปกรณ์จะปิดเสียงหรือ // เปิดโหมดห้ามรบกวน "ios_category_custom": "category", // ไม่จำเป็น หมวดหมู่ APNS ที่กำหนดเอง "ios_interruption_level": "active", // ไม่จำเป็น หนึ่งใน "passive", "active", "time-sensitive", // "critical" ระบุความสำคัญและ // เวลาในการส่งการแจ้งเตือน โปรดดู // คู่มือการพุชครั้งเดียวสำหรับรายละเอียด "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, // ไม่จำเป็น ยกเลิกการแจ้งเตือนแบบพุชด้วย "voip": true, // จำเป็น พารามิเตอร์ VoIP พารามิเตอร์นี้จำเป็นสำหรับการส่งการแจ้งเตือนแบบพุช VoIP "callerName": "callerName", // ไม่จำเป็น พารามิเตอร์ VoIP ชื่อผู้โทร หากไม่ระบุ จะแสดง "unknown caller" "video": true, // ไม่จำเป็น พารามิเตอร์ VoIP ระบุว่ารองรับการโทรวิดีโอหรือไม่ }, // Message ID ที่ระบุ (รับ ID จาก Message History) "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, // ไม่จำเป็น การสั่นบังคับของ 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 เดียวกันจะถูกจัดกลุ่มใน // Notification Center }] }}พารามิเตอร์ Huawei
{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น API access token จาก Pushwoosh Control Panel "notifications": [{ "huawei_android_header": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง หัวข้อการแจ้งเตือน "en": "header" }, "huawei_android_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เนื้อหาการแจ้งเตือน "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, // ไม่จำเป็น การสั่นบังคับของ 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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง หัวข้อของการแจ้งเตือน "en": "content" }, "safari_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เนื้อหาของการแจ้งเตือน "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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุส่วนหัว "en": "title" // ของข้อความในพารามิเตอร์นี้ }, "chrome_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุเนื้อหา "en": "content" // ของข้อความในพารามิเตอร์นี้ }, "chrome_icon": "URL.png", // ไม่จำเป็น URL แบบเต็มไปยังไอคอนหรือเส้นทางไฟล์ทรัพยากรส่วนขยาย "chrome_gcm_ttl": 3600, // ไม่จำเป็น พารามิเตอร์ Time to live – อายุการใช้งานสูงสุดของข้อความเป็นวินาที "chrome_duration": 20, // ไม่จำเป็น สูงสุด 50 วินาที เปลี่ยนเวลาแสดงผลพุชของ chrome // ตั้งค่าเป็น 0 เพื่อแสดงพุชจนกว่าผู้ใช้จะโต้ตอบกับมัน "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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุส่วนหัวของข้อความได้ที่นี่ "en": "title" }, "firefox_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุเนื้อหาของข้อความได้ที่นี่ "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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุส่วนหัวของข้อความได้ที่นี่ "en": "header" }, "adm_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุเนื้อหาของข้อความได้ที่นี่ "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 // ไม่จำเป็น ลำดับความสำคัญของพุชในลิ้นชักพุชของ 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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เพิ่มหัวข้อสำหรับการแจ้งเตือนแบบพุช "en": "title" }, "mac_subtitle": { // ไม่จำเป็น เพิ่มหัวข้อย่อยสำหรับการแจ้งเตือนแบบพุช "en": "subtitle" }, "mac_content": { // ไม่จำเป็น เพิ่มเนื้อหาสำหรับการแจ้งเตือนแบบพุช "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 // ในรูปแบบของอ็อบเจกต์หรือสตริง "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 เครื่องในอาร์เรย์ ด้วยเหตุนี้ ข้อความดังกล่าวจะไม่แสดงใน Message History ของคุณ
หากต้องการดูรายงานพุชในระหว่างขั้นตอนการทดสอบ ให้ใช้ API messaging tracing การเปิดตัวเลือกนี้ ON จะช่วยให้คุณ สามารถลบล้างขีดจำกัดนี้เป็นเวลา 1 ชั่วโมงและบันทึกพุชดังกล่าวใน Message History การติดตามข้อความ API จะปิด OFF โดยอัตโนมัติหลังจาก 1 ชั่วโมง
การติดตามข้อความ API สามารถเปิดใช้งานได้ที่หน้า Message History โดยคลิก Start API messaging tracing ที่มุมขวาบน
เงื่อนไขแท็ก
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
#การใช้งานif [ ! -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: ข้อความ %%
%% การรับรองความถูกต้อง & App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% เริ่มต้น %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% ตัวเลือกความละเอียดของไคลเอนต์ HTTP flase, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% สงคราม JSON !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 ไปยัง JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%เมธอด post, %%คำขอ {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%ตัวเลือก HTTP [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%ตัวเลือก []), io:format("And received ~p", [Response]).class PushNotification
#- เอกสาร PushWoosh API https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- สองเมธอดที่นี่: # - PushNotification.new.notify_all(message) แจ้งเตือนทั้งหมดด้วยตัวเลือกเดียวกัน # - PushNotification.new.notify_devices(notification_options = {}) แจ้งเตือนอุปกรณ์เฉพาะด้วยตัวเลือกที่กำหนดเอง
include HTTParty #ตรวจสอบให้แน่ใจว่าได้ประกาศ gem HTTParty ใน gemfile ของคุณ https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- เปลี่ยนเป็นการตั้งค่าของคุณ @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 = {}) #- ตัวเลือกเริ่มต้น, ยกเลิกการคอมเมนต์ :data หรือ :devices หากจำเป็น default_notification_options = { # YYYY-MM-DD HH:mm หรือ 'now' :send_date => "now", # อ็อบเจกต์( language1: 'content1', language2: 'content2' ) หรือสตริง :content => { :fr => "Test", :en => "Test" }, # สตริง JSON หรืออ็อบเจกต์ JSON "custom": "json data" #:data => { # :custom_data => value #}, # ละเว้นฟิลด์นี้ (การแจ้งเตือนแบบพุชจะถูกส่งไปยังอุปกรณ์ทั้งหมดสำหรับแอปพลิเคชัน) หรือระบุรายการ ID ของอุปกรณ์ #:devices => {} }
#- การรวมกับตัวเลือกเฉพาะ final_notification_options = default_notification_options.merge(notification_options)
#- การสร้างการเรียกสุดท้าย options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- การดำเนินการเรียก API POST ด้วย HTTPARTY - :body => options.to_json ช่วยให้เราสามารถส่ง json เป็นอ็อบเจกต์แทนที่จะเป็นสตริง response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// ใช้คลาส JSON จาก 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: # สำหรับ Python 3.0 และใหม่กว่า from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # กลับไปใช้ urllib2 ของ Python 2 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
ลบข้อความที่ตั้งเวลาไว้
Request Body
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// ดู https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// สร้างอินสแตนซ์ของคำขอ$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// เรียกใช้ Web Service '/deleteMessage'$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
ดึงรายละเอียดข้อความ
Request Body
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
สร้างการแจ้งเตือนแบบพุชเป้าหมายใหม่
Request Body
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 | หากไม่ระบุ ค่าเริ่มต้นสำหรับ “send_date” คือ UTC-0 |
| timezone | string | หากไม่ระบุ ค่าเริ่มต้นสำหรับ “send_date” คือ UTC-0 |
| campaign | string | รหัสของแคมเปญ ที่คุณต้องการกำหนดข้อความพุชนี้ |
| content* | string | เนื้อหาการแจ้งเตือน ดูรายละเอียดในตัวอย่างคำขอ |
| transactionId | string | ตัวระบุข้อความที่ไม่ซ้ำกันเพื่อป้องกันการซ้ำซ้อนของข้อความในกรณีที่เกิดปัญหาเครือข่าย จัดเก็บไว้ที่ฝั่งของ Pushwoosh เป็นเวลา 5 นาที |
| link | string | ลิงก์ที่จะเปิดเมื่อผู้ใช้เปิดข้อความพุช |
| minimize_link | integer | 0 - ไม่ย่อ, 2 - bit.ly ค่าเริ่มต้น = 2 |
| data | object | สตริง JSON หรืออ็อบเจกต์ JSON จะถูกส่งเป็นพารามิเตอร์ “u” ใน payload (แปลงเป็นสตริง JSON) |
| preset | string | รหัส Preset |
| send_rate | integer | การควบคุมปริมาณ ค่าที่ถูกต้องคือตั้งแต่ 100 ถึง 1000 พุชต่อวินาที |
| 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", // ไม่จำเป็น หากไม่ระบุ ค่าเริ่มต้นสำหรับ "send_date" คือ UTC-0 // ข้อมูลเพิ่มเติม https://php.net/manual/timezones.php "campaign": "CAMPAIGN_CODE", // ไม่จำเป็น รหัสแคมเปญที่คุณต้องการกำหนดข้อความพุชนี้ "content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง ใช้ "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 // Google URL shortener ถูกปิดใช้งานตั้งแต่วันที่ 30 มีนาคม 2019 // โปรดทราบว่าตัวย่อลิงก์มีข้อจำกัด // เกี่ยวกับจำนวนการเรียก "data": { // ไม่จำเป็น สตริง JSON หรืออ็อบเจกต์ JSON "key": "value" // จะถูกส่งเป็นพารามิเตอร์ "u" ใน payload }, // (แปลงเป็นสตริง JSON) "preset": "XXXXX-XXXXX", // ไม่จำเป็น รหัส Push Preset จาก Control Panel ของคุณ "send_rate": 100, // ไม่จำเป็น การควบคุมปริมาณ ค่าที่ถูกต้องคือตั้งแต่ 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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง "en": "English", // ใช้ "wns_content" แทนสำหรับ Windows "de": "Deutsch" }, "ignore_user_timezone": true, // ไม่จำเป็น "timezone": "America/New_York", // ไม่จำเป็น หากไม่ระบุ ค่าเริ่มต้นสำหรับ "send_date" คือ UTC-0 // ข้อมูลเพิ่มเติม https://php.net/manual/timezones.php "campaign": "CAMPAIGN_CODE", // ไม่จำเป็น รหัสแคมเปญที่คุณต้องการกำหนดข้อความพุชนี้
// พารามิเตอร์ที่เกี่ยวข้องกับ iOS "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", // ไม่จำเป็น รหัสหมวดหมู่ iOS8 จาก Pushwoosh "ios_category_custom": "category", // ไม่จำเป็น หมวดหมู่ APNS ที่กำหนดเอง "ios_root_params": { // ไม่จำเป็น พารามิเตอร์ระดับรากไปยังพจนานุกรม aps "aps": { "content-available": "0", // ไม่จำเป็น ตั้งค่า "1" เพื่อส่งพุชเงียบและ "0" สำหรับพุชปกติ "mutable-content": 1 // จำเป็นสำหรับไฟล์แนบสื่อของ iOS10+ }, "attachment": "YOUR_ATTACHMENT_URL", // URL ไฟล์แนบสื่อของ iOS10+ "data": {} // ไม่จำเป็น ข้อมูลที่ผู้ใช้ให้มา สูงสุด 4KB }, "apns_trim_content": 1, // ไม่จำเป็น (0|1) ตัดสตริงเนื้อหาที่เกินด้วยจุดไข่ปลา "ios_title": { // ไม่จำเป็น เพิ่มหัวข้อสำหรับการแจ้งเตือนแบบพุชของ iOS "en": "title" }, "ios_subtitle": { // ไม่จำเป็น เพิ่มหัวข้อย่อยสำหรับการแจ้งเตือนแบบพุชของ iOS "en": "subTitle" }, "ios_content": { // ไม่จำเป็น เพิ่มเนื้อหาสำหรับการแจ้งเตือนแบบพุชของ iOS "en": "content" },
// พารามิเตอร์ที่เกี่ยวข้องกับ Android "android_root_params": { // ไม่จำเป็น อ็อบเจกต์ key-value ที่กำหนดเอง "key": "value" // พารามิเตอร์ระดับรากสำหรับผู้รับ payload ของ android }, "android_sound": "soundfile", // ไม่จำเป็น ไม่มีนามสกุลไฟล์ หากเว้นว่างไว้ อุปกรณ์ // จะไม่ส่งเสียงเมื่อได้รับการพุช "android_sound_off": true, // ไม่จำเป็น เปิด/ปิดเสียงที่ตั้งค่าโดยฟิลด์ "android_sound" "android_header": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง ส่วนหัวการแจ้งเตือนของ Android "en": "header" }, "android_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เนื้อหาการแจ้งเตือนของ 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, // ไม่จำเป็น การสั่นบังคับของ 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, // ไม่จำเป็น ลำดับความสำคัญของพุชในลิ้นชักพุชของ 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": { // ไม่จำเป็น เพิ่มหัวข้อสำหรับการแจ้งเตือนแบบพุช "en": "title" }, "mac_subtitle": { // ไม่จำเป็น เพิ่มหัวข้อย่อยสำหรับการแจ้งเตือนแบบพุชของ MacOS "en": "subtitle" }, "mac_content": { // ไม่จำเป็น เพิ่มเนื้อหาสำหรับการแจ้งเตือนแบบพุชของ MacOS "en": "content" },
// พารามิเตอร์ที่เกี่ยวข้องกับ Windows "wns_content": { // จำเป็น เนื้อหา (XML หรือ raw) ของการแจ้งเตือนที่เข้ารหัส // ใน base64 ของ MIME ในรูปแบบของอ็อบเจกต์หรือสตริง "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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง หัวข้อของการแจ้งเตือน "en": "title" }, "safari_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง เนื้อหาของการแจ้งเตือน "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, // ไม่จำเป็น เปลี่ยนเวลาแสดงผลพุชของ chrome ตั้งค่าเป็น 0 เพื่อแสดงพุช // จนกว่าผู้ใช้จะโต้ตอบกับมัน "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": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุส่วนหัวของข้อความได้ที่นี่ "en": "title" }, "firefox_content": { // ไม่จำเป็น อ็อบเจกต์หรือสตริง คุณสามารถระบุเนื้อหาของข้อความได้ที่นี่ "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 Deprecated
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
รับประวัติข้อความพร้อมรายละเอียดพุช
Request Body
Anchor link to| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| auth* | string | API access token จาก Pushwoosh Control Panel |
| limitMessages | integer | จำกัดจำนวนข้อความในการตอบสนอง ค่าที่เป็นไปได้ตั้งแต่ 10 ถึง 1000 |
| source | string | แหล่งที่มาของประวัติพุช อาจเป็น 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
ลบข้อความที่ตั้งเวลาไว้
Request Body
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 | ข้อผิดพลาดภายใน |