Messages API
createMessage
Anchor link toPOST
https://api.pushwoosh.com/json/1.3/createMessage
สร้างการแจ้งเตือนพุชใหม่
เนื้อหาของคำขอ
Anchor link toชื่อ | ประเภท | คำอธิบาย |
---|---|---|
auth* | string | โทเค็นการเข้าถึง API จาก 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 จาก 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", // ไม่บังคับ หากละเว้น จะใช้ UTC-0 เป็นค่าเริ่มต้นสำหรับ "send_date" // ดู 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" ในเพย์โหลด (แปลงเป็นสตริง 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, // ไม่บังคับ การควบคุมปริมาณ ค่าที่ถูกต้องคือตั้งแต่ 100 ถึง 1000 pushes/second
// เกี่ยวข้องกับการสร้างเทมเพลต โปรดอ้างอิงถึงคู่มือ Template Engine เพื่อเรียนรู้เพิ่มเติม "template_bindings": { // ไม่บังคับ "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // ไม่บังคับ ตัวยึดตำแหน่งสำหรับเนื้อหาไดนามิกแทนแท็กของอุปกรณ์ "firstname": "John", "lastname": "Doe" },
// พารามิเตอร์การจำกัดความถี่ ตรวจสอบให้แน่ใจว่าได้กำหนดค่าการจำกัดความถี่ส่วนกลางใน Control Panel แล้ว "capping_days": 30, // ไม่บังคับ จำนวนวันสำหรับการจำกัดความถี่ (สูงสุด 30 วัน) "capping_count": 10, // ไม่บังคับ จำนวนพุชสูงสุดที่สามารถส่งจาก // แอปเฉพาะไปยังอุปกรณ์ใดอุปกรณ์หนึ่งภายในระยะเวลา 'capping_days' // ในกรณีที่ข้อความที่สร้างขึ้นเกินขีดจำกัด // 'capping_count' สำหรับอุปกรณ์ ข้อความนั้นจะไม่ถูก // ส่งไปยังอุปกรณ์นั้น "capping_exclude": true, // ไม่บังคับ หากตั้งค่าเป็น true การแจ้งเตือนพุชนี้จะไม่ // ถูกนับรวมในการจำกัดความถี่สำหรับการพุชในอนาคต "capping_avoid": true, // ไม่บังคับ หากตั้งค่าเป็น true การจำกัดความถี่จะไม่ถูกนำมาใช้กับ // การแจ้งเตือนพุชนี้โดยเฉพาะ
// หากต้องการบันทึกข้อความไปยังกล่องข้อความผ่าน API ให้ใช้ "inbox_date" หรือ "inbox_image" // ข้อความจะถูกบันทึกเมื่อมีการใช้พารามิเตอร์เหล่านี้อย่างน้อยหนึ่งตัว "inbox_date": "2017-02-02", // ไม่บังคับ ระบุเวลาที่จะลบข้อความออกจากกล่องข้อความ // ข้อความจะถูกลบออกจากกล่องข้อความเวลา 00:00:01 UTC // ของวันที่ระบุ ดังนั้นวันก่อนหน้าคือ // วันสุดท้ายที่ผู้ใช้สามารถเห็นข้อความในกล่องข้อความของพวกเขา // หากไม่ได้ระบุ วันที่ลบเริ่มต้นคือ // วันถัดไปหลังจากวันที่ส่ง "inbox_image": "Inbox image URL", // ไม่บังคับ รูปภาพที่จะแสดงใกล้กับข้อความ "inbox_days": 5, // ไม่บังคับ ระบุเวลาที่จะลบข้อความออกจาก // กล่องข้อความ (อายุของข้อความในกล่องข้อความเป็นวัน) // สามารถใช้แทนพารามิเตอร์ "inbox_date" ได้ // สูงสุด 30 วัน
"devices": [ // ไม่บังคับ ระบุโทเค็นหรือ hwids เพื่อส่งการแจ้งเตือนพุชเป้าหมาย "hwid_XXXX" // ไม่เกิน 1000 โทเค็น/hwids ใน ], // อาร์เรย์ หากตั้งค่า ข้อความจะถูกส่งไปยัง // อุปกรณ์ในรายการเท่านั้น ไม่อนุญาตให้ใช้ Application Group สำหรับรายการอุปกรณ์ // โทเค็นพุชของ iOS สามารถเป็นตัวพิมพ์เล็กเท่านั้น
// การแจ้งเตือนพุชที่เน้นผู้ใช้เป็นศูนย์กลาง "users": [ // ไม่บังคับ หากตั้งค่า ข้อความจะถูกส่งไปยัง "user_XXXX" // ID ผู้ใช้ที่ระบุเท่านั้น (ตั้งค่าผ่านการเรียก /registerUser) ], // หากระบุร่วมกับพารามิเตอร์ devices // พารามิเตอร์หลังจะถูกละเว้น ไม่เกิน 1000 ID ผู้ใช้ // ในอาร์เรย์ ไม่อนุญาตให้ใช้ Application Group สำหรับรายการผู้ใช้ //
// ตัวกรองและเงื่อนไข "filter": "FILTER_NAME", // ไม่บังคับ "conditions": [ // ไม่บังคับ ดูหมายเหตุด้านล่าง "Country", "EQ", "France", "Language", "EQ", "en" ], "conditions_operator": "AND" // ไม่บังคับ ตัวดำเนินการตรรกะสำหรับอาร์เรย์เงื่อนไข // ค่าที่เป็นไปได้: AND | OR. AND เป็นค่าเริ่มต้น }] }}
พารามิเตอร์เฉพาะแพลตฟอร์ม
Anchor link toพารามิเตอร์ iOS
Anchor link to{ "request": { "application": "12345-67891", // จำเป็น รหัสแอปพลิเคชัน Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น โทเค็นการเข้าถึง API จาก 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", // ไม่บังคับ ID หมวดหมู่ iOS8 จาก Pushwoosh "ios_root_params": { // ไม่บังคับ พารามิเตอร์ระดับรากไปยังพจนานุกรม aps "aps": { "content-available": "0", // ไม่บังคับ ตั้งค่า "1" เพื่อส่งพุชแบบเงียบ และ "0" สำหรับพุชปกติ "mutable-content": 1 // จำเป็นสำหรับไฟล์แนบสื่อ iOS10+ }, "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 จาก Pushwoosh Control Panel "notifications": [{ "android_header": { // ไม่บังคับ ส่วนหัวการแจ้งเตือน Android "en": "header" }, "android_content": { // ไม่บังคับ เนื้อหาการแจ้งเตือน Android "en": "content" }, "android_root_params": { // ไม่บังคับ อ็อบเจกต์ key-value ที่กำหนดเอง "key": "value", // พารามิเตอร์ระดับรากสำหรับผู้รับเพย์โหลด android "CancelID": 12345678 // ไม่บังคับ ยกเลิกการแจ้งเตือนพุชด้วย }, // 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, // ไม่บังคับ การบังคับสั่นของ Android สำหรับพุชที่มีลำดับความสำคัญสูง "android_led": "#rrggbb", // ไม่บังคับ สี LED แบบเลขฐานสิบหก อุปกรณ์จะพยายามประมาณค่าให้ดีที่สุด "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 จาก 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 แบบเลขฐานสิบหก อุปกรณ์จะพยายามประมาณค่าให้ดีที่สุด "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" // พารามิเตอร์ระดับรากสำหรับผู้รับเพย์โหลด 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 จาก 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 จาก 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 จาก 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 จาก 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 จาก 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 จาก Pushwoosh Control Panel "notifications": [{ "wns_content": { // จำเป็น เนื้อหา (XML หรือ raw) ของการแจ้งเตือนที่เข้ารหัสใน MIME's base64 // ในรูปแบบของอ็อบเจกต์ หรือ สตริง "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 เครื่องในอาร์เรย์ ด้วยเหตุนี้ ข้อความดังกล่าวจะไม่แสดงในประวัติข้อความของคุณ
หากต้องการดูรายงานพุชในช่วงทดสอบ ให้ใช้ การติดตามข้อความ API การเปิดตัวเลือกนี้ ON จะทำให้คุณสามารถ ลบล้างขีดจำกัดนี้เป็นเวลา 1 ชั่วโมง และบันทึกพุชดังกล่าวในประวัติข้อความ การติดตามข้อความ API จะปิดโดยอัตโนมัติหลังจากผ่านไป 1 ชั่วโมง
การติดตามข้อความ API สามารถเปิดใช้งานได้ที่หน้า ประวัติข้อความ โดยคลิก 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: ค่าแท็กเท่ากับโอเปอแรนด์
- IN: ค่าแท็กตัดกับโอเปอแรนด์ (โอเปอแรนด์ต้องเป็นอาร์เรย์เสมอ)
- NOTEQ: ค่าแท็กไม่เท่ากับโอเปอแรนด์
- NOTIN: ค่าแท็กไม่ตัดกับโอเปอแรนด์ (โอเปอแรนด์ต้องเป็นอาร์เรย์เสมอ)
- GTE: ค่าแท็กมากกว่าหรือเท่ากับโอเปอแรนด์
- LTE: ค่าแท็กน้อยกว่าหรือเท่ากับโอเปอแรนด์
- BETWEEN: ค่าแท็กมากกว่าหรือเท่ากับค่าต่ำสุดของโอเปอแรนด์ แต่น้อยกว่าหรือเท่ากับค่าสูงสุดของโอเปอแรนด์ (โอเปอแรนด์ต้องเป็นอาร์เรย์เสมอ)
- NOTSET: ไม่ได้ตั้งค่าแท็ก ไม่พิจารณาโอเปอแรนด์
- ANY: แท็กมีค่าใดๆ ไม่พิจารณาโอเปอแรนด์
แท็กสตริง
Anchor link toโอเปอเรเตอร์ที่ใช้ได้: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
โอเปอแรนด์ที่ใช้ได้:
- EQ, NOTEQ: โอเปอแรนด์ต้องเป็นสตริง
- IN, NOTIN: โอเปอแรนด์ต้องเป็นอาร์เรย์ของสตริง เช่น
["value 1", "value 2", "value N"]
- NOTSET: ไม่ได้ตั้งค่าแท็ก ไม่พิจารณาโอเปอแรนด์
- ANY: แท็กมีค่าใดๆ ไม่พิจารณาโอเปอแรนด์
แท็กจำนวนเต็ม
Anchor link toโอเปอเรเตอร์ที่ใช้ได้: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
โอเปอแรนด์ที่ใช้ได้:
- EQ, NOTEQ, GTE, LTE: โอเปอแรนด์ต้องเป็นจำนวนเต็ม
- IN, NOTIN: โอเปอแรนด์ต้องเป็นอาร์เรย์ของจำนวนเต็ม เช่น
[value 1, value 2, value N]
- BETWEEN: โอเปอแรนด์ต้องเป็นอาร์เรย์ของจำนวนเต็ม เช่น
[min_value, max_value]
- NOTSET: ไม่ได้ตั้งค่าแท็ก ไม่พิจารณาโอเปอแรนด์
- ANY: แท็กมีค่าใดๆ ไม่พิจารณาโอเปอแรนด์
แท็กวันที่
Anchor link toโอเปอเรเตอร์ที่ใช้ได้: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
โอเปอแรนด์ที่ใช้ได้:
"YYYY-MM-DD 00:00"
(สตริง)- unix timestamp
1234567890
(จำนวนเต็ม) "N days ago"
(สตริง) สำหรับโอเปอเรเตอร์ EQ, BETWEEN, GTE, LTE
แท็กบูลีน
Anchor link toโอเปอเรเตอร์ที่ใช้ได้: EQ, NOTSET, ANY
โอเปอแรนด์ที่ใช้ได้: 0, 1, true, false
แท็กรายการ
Anchor link toโอเปอเรเตอร์ที่ใช้ได้: IN, NOTIN, NOTSET, ANY
โอเปอแรนด์ที่ใช้ได้: โอเปอแรนด์ต้องเป็นอาร์เรย์ของสตริง เช่น ["value 1", "value 2", "value N"]
ตัวอย่างโค้ด /createMessage
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 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 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 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 => {} }
#- การรวมกับตัวเลือกเฉพาะ final_notification_options = default_notification_options.merge(notification_options)
#- การสร้างการเรียกสุดท้าย options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- การดำเนินการเรียก POST API ด้วย 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: # 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 จาก Pushwoosh Control Panel |
message* | string | รหัสข้อความที่ได้รับจากคำขอ /createMessage |
{ "status_code": 200, "status_message": "OK"}
{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น โทเค็นการเข้าถึง API จาก 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 จาก 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 จาก Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // จำเป็น รหัสข้อความหรือ ID ข้อความ }}
createTargetedMessage
Anchor link toPOST
https://api.pushwoosh.com/json/1.3/createTargetedMessage
สร้างการแจ้งเตือนพุชแบบกำหนดเป้าหมายใหม่
เนื้อหาของคำขอ
Anchor link toชื่อ | ประเภท | คำอธิบาย |
---|---|---|
auth* | string | โทเค็นการเข้าถึง API จาก 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 | รหัสของแคมเปญที่คุณต้องการกำหนดข้อความพุชนี้ไป |
content* | string | เนื้อหาการแจ้งเตือน ดูรายละเอียดในตัวอย่างคำขอ |
transactionId | string | ตัวระบุข้อความที่ไม่ซ้ำกันเพื่อป้องกันการซ้ำซ้อนของข้อความในกรณีที่มีปัญหาเครือข่าย จัดเก็บไว้ที่ฝั่ง Pushwoosh เป็นเวลา 5 นาที |
link | string | ลิงก์ที่จะเปิดเมื่อผู้ใช้เปิดข้อความพุช |
minimize_link | integer | 0 - ไม่ย่อ, 2 - bit.ly ค่าเริ่มต้น = 2 |
data | object | สตริง JSON หรืออ็อบเจกต์ JSON จะถูกส่งผ่านเป็นพารามิเตอร์ “u” ในเพย์โหลด (แปลงเป็นสตริง JSON) |
preset | string | รหัส Preset |
send_rate | integer | การควบคุมปริมาณ ค่าที่ถูกต้องคือตั้งแต่ 100 ถึง 1000 พุชต่อวินาที |
inbox_date | string | ระบุเวลาที่จะลบข้อความออกจากกล่องข้อความ |
inbox_image | string | URL ของรูปภาพที่จะแสดงใกล้กับข้อความในกล่องข้อความ |
{ "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 จาก 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", // ไม่บังคับ รหัสแคมเปญที่คุณต้องการกำหนดข้อความพุชนี้ไป "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 // ตัวย่อ URL ของ Google ถูกปิดใช้งานตั้งแต่วันที่ 30 มีนาคม 2019 // โปรดทราบว่าตัวย่อลิงก์มีข้อจำกัด // เกี่ยวกับจำนวนการเรียก "data": { // ไม่บังคับ สตริง JSON หรืออ็อบเจกต์ JSON "key": "value" // จะถูกส่งผ่านเป็นพารามิเตอร์ "u" ในเพย์โหลด }, // (แปลงเป็นสตริง JSON) "preset": "XXXXX-XXXXX", // ไม่บังคับ รหัส Push Preset จาก Control Panel ของคุณ "send_rate": 100, // ไม่บังคับ การควบคุมปริมาณ ค่าที่ถูกต้องคือตั้งแต่ 100 ถึง 1000 pushes/second "dynamic_content_placeholders": { // ไม่บังคับ ตัวยึดตำแหน่งสำหรับเนื้อหาไดนามิกแทนแท็กของอุปกรณ์ "firstname": "John", "lastname": "Doe" },
// หากต้องการบันทึกข้อความไปยังกล่องข้อความผ่าน API ให้ใช้ "inbox_date" หรือ "inbox_image" // ข้อความจะถูกบันทึกเมื่อมีการใช้พารามิเตอร์เหล่านี้อย่างน้อยหนึ่งตัว "inbox_image": "Inbox image URL", // ไม่บังคับ รูปภาพที่จะแสดงใกล้กับข้อความ "inbox_date": "2017-02-02" // ไม่บังคับ ระบุเวลาที่จะลบข้อความออกจากกล่องข้อความ // ข้อความจะถูกลบออกจากกล่องข้อความเวลา 00:00:01 UTC ของ // วันที่ระบุ ดังนั้นวันก่อนหน้าคือวันสุดท้าย // ที่ผู้ใช้สามารถเห็นข้อความในกล่องข้อความของพวกเขา // หากไม่ได้ระบุ วันที่ลบเริ่มต้นคือวันถัดไป // หลังจากวันที่ส่ง }}
{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น โทเค็นการเข้าถึง API จาก 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", // ไม่บังคับ หากละเว้น จะใช้ UTC-0 เป็นค่าเริ่มต้นสำหรับ "send_date" // ข้อมูลเพิ่มเติม 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", // ไม่บังคับ ID หมวดหมู่ 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" // พารามิเตอร์ระดับรากสำหรับผู้รับเพย์โหลด 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 แบบเลขฐานสิบหก อุปกรณ์จะพยายามประมาณค่าให้ดีที่สุด "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) ของการแจ้งเตือนที่เข้ารหัส // ใน MIME's base64 ในรูปแบบของอ็อบเจกต์ หรือ สตริง "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สิ่งสำคัญที่ต้องเข้าใจคือแท็กถูกแชร์ระหว่างแอป และเป็นเครื่องมือที่ทรงพลังมากสำหรับการแบ่งกลุ่มและกรองผู้ใช้เป้าหมายของคุณโดยไม่ต้องผูกติดกับแอปใดแอปหนึ่ง
แท็กอาจเป็นหนึ่งในสามประเภทที่แตกต่างกัน: สตริง, จำนวนเต็ม, รายการ ประเภทของแท็กจะกำหนดว่าคุณสามารถใช้โอเปอเรเตอร์ใดสำหรับแท็กนั้นๆ
แท็กสตริง
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
รับประวัติข้อความพร้อมรายละเอียดพุช
เนื้อหาของคำขอ
Anchor link toชื่อ | ประเภท | คำอธิบาย |
---|---|---|
auth* | string | โทเค็นการเข้าถึง API จาก 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 | ใช้สำหรับการแบ่งหน้า Last 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 จาก 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, // ไม่บังคับ ใช้สำหรับการแบ่งหน้า Last 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 จาก Pushwoosh Control Panel |
message* | string | รหัสข้อความที่ได้รับในการตอบกลับของ /createMessage |
{ "status_code":200, "status_message":"OK"}
{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // จำเป็น โทเค็นการเข้าถึง API จาก Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // จำเป็น รหัสข้อความที่ได้รับในการตอบกลับของ /createMessage }}
รหัสสถานะ:
รหัสสถานะ HTTP | status_code | คำอธิบาย |
---|---|---|
200 | 200 | ยกเลิกข้อความสำเร็จ |
200 | 210 | ข้อผิดพลาดของอาร์กิวเมนต์ ดู status_message สำหรับข้อมูลเพิ่มเติม |
400 | N/A | สตริงคำขอมีรูปแบบไม่ถูกต้อง |
500 | 500 | ข้อผิดพลาดภายใน |