Push API v4
ส่งการแจ้งเตือนหรือข้อความไปยังอุปกรณ์เดียวหรือรายการอุปกรณ์
เนื้อหาการ push จะต้องเป็นออบเจ็กต์ JSON เพียงหนึ่งเดียวเท่านั้น
สำหรับฟังก์ชันที่เกี่ยวข้องกับป้ายกำกับ/นามแฝง โปรดดูที่ AppPushAPI
นี่คือเวอร์ชันล่าสุดของ Push API การปรับปรุงในเวอร์ชัน v4 มีดังนี้:
- ใช้การรับรองความถูกต้องแบบ HTTP Basic เพื่ออนุญาตการเข้าถึง ด้วยวิธีนี้ การร้องขอ API ทั้งหมดสามารถทำได้โดยใช้เครื่องมือ HTTP ทั่วไป เช่น curl และปลั๊กอินเบราว์เซอร์
- เนื้อหาการ push เป็นรูปแบบ JSON
ข้อจำกัดอัตราการร้องขอ
API ของเรามีข้อจำกัดเกี่ยวกับความถี่ในการเรียกใช้ เพื่อให้มั่นใจในความเสถียรและความเป็นธรรมของบริการ ข้อจำกัด QPS (Queries Per Second) สำหรับแต่ละ AppKey มีดังนี้:
- ข้อจำกัดมาตรฐาน: สูงสุด 500 คำขอต่อวินาที
- ข้อจำกัดขั้นสูง: หากคุณเป็นสมาชิกแผนแบบชำระเงินและ AppKey ที่ชำระเงินของคุณต้องการข้อจำกัด QPS ที่สูงกว่า โปรดติดต่อทีมธุรกิจของเรา: Sales@engagelab.com
การตรวจสอบการเรียกใช้
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ /docs/web-push/rest-api/rest-api-overview#authentication-method
ที่อยู่การเรียกใช้
POST v4/push
ตัวอย่างคำขอ
ส่วนหัวคำขอ
> POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
เนื้อหาคำขอ
{
"from": "push",
"to": "all",
"body": {
"platform": "web",
"notification": {
"alert": "Hi,MTPush !",//optional
"web": {
"alert": "web_push",
"title": "web_push",
"url": "http://www.google.com",
"extras": {
"web-key1": "web-value1"
}
}
}
},
"request_id": "12345678",
"custom_args": "business info"
}
พารามิเตอร์คำขอ
โครงสร้างพารามิเตอร์ของการ push มีรายละเอียดดังตารางด้านล่าง
คีย์เวิร์ด | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
from | String | ไม่จำเป็น | ผู้ส่งธุรกิจปัจจุบัน |
to | String หรือ JSON Object | จำเป็น | เป้าหมายการส่ง |
body | JSON Object | จำเป็น | เนื้อหาคำขอการส่ง |
platform | String หรือ JSON Array | จำเป็น | แพลตฟอร์มการ push |
notification | JSON Object | ไม่จำเป็น | |
message | JSON Object | ไม่จำเป็น | |
options | JSON Object | ไม่จำเป็น | พารามิเตอร์การ push |
request_id | String | ไม่จำเป็น | ฟิลด์ที่กำหนดเองโดยผู้ใช้ เพื่อระบุคำขอและจะถูกส่งกลับเมื่อมีการตอบกลับ |
custom_args | JSON Object | ไม่จำเป็น | ฟิลด์ที่กำหนดเองโดยผู้ใช้ ซึ่งจะถูกส่งกลับไปยังผู้ใช้เมื่อมีการเรียกกลับ |
from
ผู้ส่งของธุรกิจปัจจุบัน ค่าเป็นประเภท String และไม่จำเป็น
ตัวอย่างคำขอ
{
"from":"push"
}
to
ออบเจ็กต์อุปกรณ์ push ซึ่งระบุรายการอุปกรณ์ที่สามารถ push ได้ ยืนยันออบเจ็กต์อุปกรณ์ push MTPush มีสองวิธี: Registration ID และการกระจายเสียง
เป้าหมายการ push
คีย์เวิร์ด | ประเภท | ความหมาย | คำอธิบาย | หมายเหตุ |
---|---|---|---|---|
all | String | การกระจายเสียง | Push ไปยังอุปกรณ์ทั้งหมด | Push ไปยังอุปกรณ์เป้าหมายที่ใช้งานภายใน 30 วันที่ผ่านมา |
registration_id | JSON Array | Registration ID | อาร์เรย์ ความสัมพันธ์ระหว่าง registration ID หลายรายการคือ OR หรือการรวม | รหัสอุปกรณ์ สามารถ push ได้สูงสุด 1,000 ข้อความต่อครั้ง |
tag | JSON Array | ป้ายกำกับ | อาร์เรย์ ความสัมพันธ์ระหว่างป้ายกำกับหลายรายการคือ OR หรือการรวม | ใช้ป้ายกำกับเพื่อจัดกลุ่มอุปกรณ์ตามคุณลักษณะขนาดใหญ่หรือกลุ่มย่อยของผู้ใช้ |
tag_and | JSON Array | ป้ายกำกับ AND | อาร์เรย์ ป้ายกำกับหลายรายการมีความสัมพันธ์แบบ AND หรือการตัดกัน | โปรดสังเกตความแตกต่างกับป้ายกำกับ สูงสุด 20 รายการต่อครั้ง |
tag_not | JSON Array | ป้ายกำกับ NOT | อาร์เรย์ ระหว่างป้ายกำกับหลายรายการ จะนำเซตที่รวมกันของป้ายกำกับหลายรายการก่อน แล้วจึงนำส่วนเสริมของผลลัพธ์นั้น | Push ได้สูงสุด 20 รายการต่อครั้ง |
alias | JSON Array | นามแฝง | อาร์เรย์ นามแฝงหลายรายการมีความสัมพันธ์แบบ OR หรือการรวม | ระบุผู้ใช้ด้วยนามแฝง |
ความสัมพันธ์โดยนัยระหว่างหลายค่าในอาร์เรย์คือ OR หรือการรวม อย่างไรก็ตาม tag_and จะแตกต่างกันตรงที่ความสัมพันธ์ระหว่างหลายค่าในอาร์เรย์คือ AND หรือการตัดกัน
tag_not ไม่สามารถใช้เพียงอย่างเดียว ต้องมีอย่างน้อยหนึ่งใน 5 ประเภทอื่น หากความยาวของอาร์เรย์ค่าเป็น 0 ประเภทนั้นจะไม่มีอยู่
ประเภทเหล่านี้สามารถอยู่ร่วมกันได้ ความสัมพันธ์โดยนัยระหว่างหลายพหุนามเมื่ออยู่ร่วมกันคือ AND หรือการตัดกัน ตัวอย่างเช่น:
"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }
คำนวณผลลัพธ์ของฟิลด์ "tag" ก่อน tag1 or tag2 = A
;
จากนั้นคำนวณผลลัพธ์ของฟิลด์ "tag_and" tag3 and tag4 = B
;
จากนั้นคำนวณผลลัพธ์ของฟิลด์ "tag_not" not (tag5 or tag6) = C
;
ผลลัพธ์สุดท้ายของ "to" คือ A and B and C
ตัวอย่างคำขอ
- Push ไปยังทั้งหมด (การกระจายเสียง):
{
"to": "all",
}
- Push ไปยัง registration ID หลายรายการ:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
body
เนื้อหาของคำขอ ฟิลด์ที่รองรับมีดังนี้:
คีย์เวิร์ด | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
platform | String หรือ JSON Array | จำเป็น | แพลตฟอร์มการ push |
notification | JSON Object | ไม่จำเป็น | |
message | JSON Object | ไม่จำเป็น | |
options | JSON Object | ไม่จำเป็น | พารามิเตอร์การ push |
platform
MTPush ปัจจุบันรองรับเฉพาะการ push บนแพลตฟอร์ม Web ดังนั้นคีย์เวิร์ดที่ระบุโดย platform คือ "web"
{ "platform" : "web" }
notification
ออบเจ็กต์การแจ้งเตือนเป็นหนึ่งในออบเจ็กต์เนื้อหาหลักที่ถูก push (อีกอันคือข้อความ) และถูก push ไปยังเว็บเป็นการแจ้งเตือน
คีย์เวิร์ด | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
web | JSON Object | จำเป็น | คุณสมบัติแพลตฟอร์ม | พารามิเตอร์การ push ของแพลตฟอร์ม ดู #web |
web
การแจ้งเตือนบนแพลตฟอร์ม Web
คีย์เวิร์ด | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
alert | String หรือ JSON Object | จำเป็น | เนื้อหา | เนื้อหาข้อความเอง ซึ่งระบุที่นี่ จะแทนที่ข้อมูลการแจ้งเตือนที่ระบุโดยระดับสูงกว่า |
url | String | จำเป็น | url ของ web push | ที่อยู่สำหรับกระโดดเมื่อคลิกการแจ้งเตือน |
title | String | ไม่จำเป็น | หัวข้อ | หัวข้อข้อความ |
Extras | JSON Object | ไม่จำเป็น | ฟิลด์ส่วนขยาย | ที่นี่คุณสามารถกำหนดข้อมูล Key / Value ในรูปแบบ JSON สำหรับการใช้งานทางธุรกิจ |
icon | String | ไม่จำเป็น | ไอคอนการแจ้งเตือน | ขนาดแนะนำ 192*192px ไม่มีข้อจำกัดบังคับ; ขนาดสูงสุดที่อนุญาต 1M รูปแบบที่รองรับ: JPG, PNG, GIF รองรับ Chrome, Firefox (Safari และ Edge ระบบไม่สามารถกำหนดเองได้โดยค่าเริ่มต้น) |
image | String | ไม่จำเป็น | ภาพขนาดใหญ่สำหรับการแจ้งเตือน | ขนาดแนะนำ 360*180px ไม่มีข้อจำกัดบังคับ; ขนาดสูงสุดที่อนุญาต 1M รูปแบบที่รองรับ: JPG, PNG, GIF รองรับ Chrome, Edge (ไม่รองรับ Firefox และ Safari) |
{
"notification": {
"web": {
"alert": "hello, Push!",
"title": "Push Test",
"url":"http://www.google.com",
"icon":"",
"image":"",
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
message
ข้อความในแอป หรือข้อความกำหนดเอง ส่วนนี้จะไม่แสดงบนเบราว์เซอร์ หลังจากรับข้อความแล้ว SDK จะส่งต่อไปยังเว็บ และเว็บจะประมวลผลลอจิกธุรกิจ
ข้อความประกอบด้วยฟิลด์ต่อไปนี้:
คีย์เวิร์ด | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
msg_content | String หรือ JSON Object | จำเป็น | เนื้อหาข้อความ |
title | String | ไม่จำเป็น | หัวข้อข้อความ |
content_type | String | ไม่จำเป็น | ประเภทเนื้อหาข้อความ |
Extras | JSON Object | ไม่จำเป็น | พารามิเตอร์เพิ่มเติมในรูปแบบ JSON |
ตัวอย่าง:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
options
ตัวเลือกการ push ตัวเลือกที่มีดังนี้:
คีย์เวิร์ด | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
time_to_live | Int หรือ String | ไม่จำเป็น | ระยะเวลารักษาข้อความออฟไลน์ (วินาที) | |
override_msg_id | Long | ไม่จำเป็น | รหัสข้อความที่จะแทนที่ | หากการ push ปัจจุบันเป็นการแทนที่การ push ก่อนหน้า msg_id ของการ push ก่อนหน้าจะสร้างผลการแทนที่ นั่นคือ: |
big_push_duration | Int | ไม่จำเป็น | ระยะเวลาการ push ด้วยความเร็วคงที่ (นาที) | |
multi_language | json object | ไม่จำเป็น | การตั้งค่าการ push หลายภาษา | การตั้งค่าสำหรับการปรับตัวเนื้อหาการ push ให้เข้ากับหลายภาษา ดู #multi_language สำหรับรายละเอียดเพิ่มเติม |
third_party_channel | JSON Object | ไม่จำเป็น | ข้อมูลการกำหนดค่าช่องทางระบบเว็บ | ดูพารามิเตอร์ที่ถูกต้องสำหรับผู้ใช้ที่มีการกำหนดค่าช่องทางระบบ #third_party_channel |
plan_id | String | ไม่จำเป็น | ตัวระบุแผนการ push | คุณต้องสร้างค่าการระบุแผนก่อน สามารถสร้างบนคอนโซลหรือผ่าน API |
cid | String | ไม่จำเป็น | ตัวระบุคำขอ push ใช้เพื่อป้องกันการ push ซ้ำ | อนุญาตเฉพาะตัวอักษร ตัวเลข ขีดล่าง และเครื่องหมายลบ และความยาวไม่เกิน 64 ตัวอักษร โปรดทราบว่าฟิลด์นี้ต้องไม่ซ้ำกันภายใต้ AppKey เดียวกัน |
multi_language
ฟิลด์นี้คือฟังก์ชันการ push หลายภาษาของบริการ EngageLab Push ช่วยให้คุณสามารถ push เนื้อหาการแจ้งเตือนที่กำหนดเองไปยังผู้ใช้ในภาษาต่างๆ โดยการระบุหลายภาษาและเนื้อหาข้อความ หัวข้อ และหัวข้อย่อยของ iOS ที่เกี่ยวข้องในคำขอ push คุณสามารถส่งการแจ้งเตือน push ที่เหมาะสมตามการตั้งค่าภาษาของผู้ใช้
พารามิเตอร์คำขอ
คีย์เวิร์ด | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
en | string | ไม่จำเป็น | คีย์หลายภาษา | สอดคล้องกับภาษาของผู้ใช้ ดูรหัสคีย์ในภาคผนวก |
content | string | ไม่จำเป็น | เนื้อหาข้อความ | แทนที่ข้อมูลใน notification.web.alert, message.msg_content ตามภาษาของผู้ใช้ |
title | string | ไม่จำเป็น | หัวข้อข้อความ | แทนที่ข้อมูลใน notification.web.title, message.title ตามภาษาของผู้ใช้ |
ตัวอย่างคำขอ
HTTP request method: Post
Request URL: /v4/push
POST data format: json
POST data example:
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
}
}
}
}
ตัวอย่างการตอบกลับ
เมื่อสำเร็จ:
{
}
เมื่อล้มเหลว:
{
"code":400,
"data":"",
"message":"Error information"
}
third_party_channel
ฟิลด์นี้ใช้เพื่อกรอกข้อมูลส่วนบุคคลของช่องทางระบบเว็บ ชื่อคีย์คือ w3push และค่าคือ Json Object Object Object ประกอบด้วยฟิลด์การกระจายเพียงหนึ่งฟิลด์ที่ไม่จำเป็นของประเภท String
คีย์เวิร์ด | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
distribution | จำเป็น | String | เมื่อ Engagelab และช่องทางระบบอยู่ร่วมกัน ตั้งค่าลำดับความสำคัญของการส่ง | ค่าจะต้องไม่เป็นสตริงว่าง |
ตัวอย่าง:
{
"third_party_channel":{
"w3push":{
"distribution":"mtpush"
}
}
}
request_id
รหัสของคำขอ ลูกค้าระบุคำขอและส่งกลับการตอบสนอง
ตัวอย่างคำขอ
{
"request_id":"12345678"
}
ตัวอย่างการตอบกลับ
custom_args
ฟิลด์ที่กำหนดเองโดยผู้ใช้ซึ่งไม่จำเป็น จะไม่ถูกส่งกลับเมื่อมีการตอบสนอง แต่จะถูกส่งกลับเมื่อมีการเรียกกลับ
{
"custom_args":"business info"
}
พารามิเตอร์การตอบกลับ
การตอบกลับที่สำเร็จ
ฟิลด์ | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
request_id | String | ไม่จำเป็น | รหัสที่กำหนดเองที่ส่งในคำขอ จะถูกส่งกลับตามเดิมเมื่อมีการตอบสนอง |
message_id | String | จำเป็น | รหัสข้อความเพื่อระบุข้อความเฉพาะ |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id": "18", "msg_id": "1828256757"}
การตอบกลับที่ล้มเหลว
รหัสสถานะ HTTP เป็น 4xx หรือ 5xx และเนื้อหาการตอบกลับประกอบด้วยฟิลด์ต่อไปนี้
ฟิลด์ | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
code | int | จำเป็น | รหัสข้อผิดพลาด สำหรับข้อมูลเพิ่มเติม โปรดดู #return-codedescription |
message | String | จำเป็น | รายละเอียดข้อผิดพลาด |
{
"code": 3002,
"message": "Push.template field must be set correctly when type is template"
}
การตอบกลับ
รหัสสถานะ HTTP
อ้างอิง:/docs/web-push/rest-api/http-status-code
รหัสการส่งกลับ
รหัส | คำอธิบาย | คำอธิบายโดยละเอียด | รหัสสถานะ HTTP |
---|---|---|---|
20101 | พารามิเตอร์การ push ไม่ถูกต้อง | registration_id ไม่ถูกต้องหรือไม่ใช่ของ appkey ปัจจุบัน | 400 |
21001 | รองรับเฉพาะวิธีการ HTTP Post | ไม่รองรับวิธีการ Get | 405 |
21002 | ขาดพารามิเตอร์ที่จำเป็น | ต้องแก้ไข | 400 |
21003 | ค่าพารามิเตอร์ไม่ถูกต้อง | ต้องแก้ไข | 400 |
21004 | การตรวจสอบล้มเหลว | ต้องแก้ไข สำหรับข้อมูลเพิ่มเติม โปรดดูที่การตรวจสอบการเรียกใช้ | 401 |
21005 | เนื้อหาข้อความใหญ่เกินไป | ต้องแก้ไข ความยาวของ Notification ต้องจำกัดที่ 2048 ไบต์ | 400 |
21008 | พารามิเตอร์ app_key ไม่ถูกต้อง | ต้องแก้ไข โปรดตรวจสอบว่า appkey ที่คุณส่งตรงกับในข้อมูลแอปพลิเคชันหรือไม่ และมีช่องว่างเพิ่มเติมหรือไม่ | 400 |
21009 | ข้อผิดพลาดระบบภายใน | ต้องแก้ไข | 400 |
21011 | ไม่มีเป้าหมายการ push ที่ตรงตามเงื่อนไข | โปรดตรวจสอบ | 400 |
21015 | การตรวจสอบพารามิเตอร์คำขอล้มเหลว | พารามิเตอร์ที่ไม่คาดคิด | 400 |
21016 | การตรวจสอบพารามิเตอร์คำขอล้มเหลว | ประเภทพารามิเตอร์ไม่ถูกต้องหรือความยาวพารามิเตอร์เกินขีดจำกัด | 400 |
21030 | หมดเวลาบริการภายใน | ลองอีกครั้งในภายหลัง | 503 |
23006 | ข้อผิดพลาดพารามิเตอร์ | ค่าสูงสุดของ big_push_duration คือ 1440 | 400 |
23008 | ข้อจำกัดความเร็วอินเทอร์เฟซ | QPS ของอินเทอร์เฟซ push ของแอปพลิเคชันเดียวถึงขีดจำกัดบน (500 qps) | 400 |
27000 | ข้อผิดพลาดหน่วยความจำระบบ | โปรดลองอีกครั้ง | 500 |
27001 | ข้อผิดพลาดพารามิเตอร์ | ข้อมูลการตรวจสอบว่างเปล่า | 401 |
27008 | ข้อผิดพลาดพารามิเตอร์ | distribution ใน third_party_channel ไม่ว่างเปล่า แต่เนื้อหา alert ของ notification ว่างเปล่า | 401 |
27009 | ข้อผิดพลาดพารามิเตอร์ | รูปแบบของ distribution ใน third_party_channel ไม่ถูกต้องหรือว่างเปล่า | 401 |
ข้อจำกัดการ push
ช่องทาง | ความยาวหัวข้อ | ความยาวเนื้อหา | คำแนะนำอื่นๆ |
---|---|---|---|
Engagelab | ไม่จำกัด แต่จำกัดขนาดรวมของเนื้อหาข้อความ | ไม่จำกัด แต่จำกัดขนาดรวมของเนื้อหาข้อความ | ความยาวของ Notification MTPush จำกัดที่ 4000 ไบต์ |
ช่องทางระบบ | <20 อักขระ (40 อักขระภาษาอังกฤษ) | ไม่มี |
รหัสหลายภาษา
ภาษา | รหัสภาษา |
---|---|
ภาษาอังกฤษ | en |
อาหรับ | ar |
จีน (ตัวย่อ) | zh-Hans |
จีน (ตัวเต็ม) | zh-Hant |
เช็ก | cs |
เดนมาร์ก | da |
ดัตช์ | nl |
ฝรั่งเศส | fr |
เยอรมัน | de |
ฮินดี | hi |
อิตาลี | it |
ญี่ปุ่น | ja |
เกาหลี | ko |
มลายู | ms |
รัสเซีย | ru |
สเปน | es |
ไทย | th |
เวียดนาม | vi |
อินโดนีเซีย | id |
นอร์เวย์ | no |
สวีเดน | sv |
โปแลนด์ | pl |
ตุรกี | tr |
ฮิบรู | he |
โปรตุเกส | pt |
โรมาเนีย | ro |
ฮังการี | hu |
ฟินแลนด์ | fi |
กรีก | el |