Push API v4
Kirim notifikasi atau pesan ke satu perangkat atau daftar perangkat
Konten push hanya dapat berupa satu objek push dalam format JSON
Untuk fungsi terkait label/alias, silakan merujuk ke AppPushAPI.
Ini adalah versi terbaru dari Push API. Peningkatan pada versi v4 adalah sebagai berikut:
- Menggunakan HTTP Basic Authentication untuk otorisasi akses. Dengan cara ini, seluruh permintaan API dapat diselesaikan menggunakan alat HTTP umum, seperti curl dan plugin browser.
- Konten push dalam format JSON
Batas Frekuensi Permintaan
API kami memberlakukan batas frekuensi panggilan untuk memastikan stabilitas dan keadilan layanan. Batas QPS (Queries Per Second) untuk setiap AppKey adalah sebagai berikut:
- Batas Standar: Maksimal 500 permintaan per detik.
- Batas Lanjutan: Jika Anda adalah pelanggan paket berbayar dan AppKey berbayar Anda memerlukan batas QPS yang lebih tinggi, silakan hubungi tim bisnis kami: Sales@engagelab.com.
Validasi Panggilan
Untuk informasi lebih lanjut, lihat Metode Autentikasi
Alamat Panggilan
POST v4/push
Contoh Permintaan
Header Permintaan
> POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Body Permintaan
{
"from": "push",
"to": "all",
"body": {
"platform": "web",
"notification": {
"alert": "Hi,MTPush !",//opsional
"web": {
"alert": "web_push",
"title": "web_push",
"url": "http://www.google.com",
"extras": {
"web-key1": "web-value1"
}
}
}
},
"request_id": "12345678",
"custom_args": "informasi bisnis"
}
Parameter Permintaan
Struktur parameter push, dijelaskan secara detail pada tabel berikut.
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| from | String | Opsional | Pengirim bisnis saat ini |
| to | String atau JSON Object | Wajib | Target pengiriman |
| body | JSON Object | Wajib | Isi permintaan pengiriman |
| platform | String atau JSON Array | Wajib | Platform push |
| notification | JSON Object | Opsional | |
| message | JSON Object | Opsional | |
| options | JSON Object | Opsional | Parameter push |
| request_id | String | Opsional | Field opsional kustom yang digunakan pelanggan untuk mengidentifikasi permintaan dan dikembalikan saat respons. |
| custom_args | JSON Object | Opsional | Field opsional yang dikustomisasi oleh pelanggan, yang akan dikembalikan saat callback. |
from
Pengirim bisnis saat ini. Nilai berupa tipe String dan opsional.
Contoh Permintaan
{
"from":"push"
}
to
Objek perangkat push, menunjukkan daftar perangkat yang dapat dikirimi push. Konfirmasi objek perangkat push. MTPush menyediakan dua metode: Registration ID dan broadcast.
Target Push
| Kata Kunci | Tipe | Arti | Deskripsi | Catatan |
|---|---|---|---|---|
| all | String | Broadcast | Push ke semua perangkat | Push ke perangkat yang aktif dalam 30 hari terakhir. |
| registration_id | JSON Array | Registration ID | Array. Hubungan antara beberapa registration ID adalah OR, yaitu gabungan. | ID perangkat. Maksimal 1.000 pesan dapat dikirim sekaligus. |
| tag | JSON Array | Tag | Array. Hubungan antara beberapa tag adalah OR, yaitu gabungan. | Gunakan tag untuk melakukan segmentasi atribut perangkat atau pengguna dalam skala besar. |
| tag_and | JSON Array | Tag AND | Array. Beberapa tag dalam hubungan AND, yaitu irisan. | Berbeda dengan tag, maksimal 20 tag per sekali push. |
| tag_not | JSON Array | Tag NOT | Array. Gabungan dari beberapa label diambil terlebih dahulu, lalu diambil komplemennya. | Maksimal 20 tag per sekali push. |
| alias | JSON Array | Alias | Array. Beberapa alias adalah hubungan OR, yaitu gabungan. | Identifikasi pengguna dengan alias. |
Hubungan implisit antara beberapa nilai dalam array adalah OR, yaitu gabungan; namun, tag_and berbeda karena hubungan antara beberapa nilai dalam array adalah AND, yaitu irisan.
Jika tag_not digunakan sendiri, maka akan dilakukan pemrosesan tag_not di antara pengguna broadcast.
Tipe-tipe ini dapat hidup berdampingan. Hubungan implisit antara beberapa polinomial saat berdampingan adalah AND, yaitu irisan. Contoh:
"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }
Hitung hasil dari field "tag" terlebih dahulu tag1 atau tag2 = A;
Kemudian hitung hasil dari field "tag_and" tag3 dan tag4 = B;
Kemudian hitung hasil dari field "tag_not" bukan (tag5 atau tag6) = C;
Hasil akhir dari "to" adalah A dan B dan C .
Contoh Permintaan
- Push ke semua perangkat (broadcast):
{
"to": "all",
}
- Push ke beberapa registration ID:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
body
Isi dari permintaan. Field yang didukung sebagai berikut:
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| platform | String atau JSON Array | Wajib | Platform push |
| notification | JSON Object | Opsional | |
| message | JSON Object | Opsional | |
| options | JSON Object | Opsional | Parameter push |
platform
MTPush saat ini hanya mendukung push platform Web, jadi kata kunci yang ditentukan oleh platform adalah "web".
{ "platform" : "web" }
notification
Objek notifikasi adalah salah satu objek konten entitas yang didorong (yang lain adalah message) dan didorong ke web sebagai notifikasi
| Kata Kunci | Tipe | Opsi | Arti | Deskripsi |
|---|---|---|---|---|
| web | JSON Object | Wajib | Properti platform | Parameter push platform, lihat web |
web
Notifikasi pada platform Web
| Kata Kunci | Tipe | Opsi | Arti | Deskripsi |
|---|---|---|---|---|
| alert | String atau JSON Object | Wajib | Isi | Konten pesan itu sendiri, jika diisi di sini, akan menimpa informasi alert yang diisi oleh induk. |
| url | String | Wajib | url push web | Alamat tujuan saat notifikasi diklik |
| title | String | Opsional | Judul | Judul pesan |
| Extras | JSON Object | Opsional | Field tambahan | Anda dapat menyesuaikan informasi Key/Value dalam format JSON untuk kebutuhan bisnis. |
| icon | String | opsional | ikon notifikasi | Disarankan 192*192px, tidak wajib; batas ukuran maksimal 1M, format: JPG, PNG, GIF, mendukung Chrome, Firefox (Safari dan Edge tidak dapat dikustomisasi) |
| image | String | Opsional | Gambar besar untuk notifikasi | Disarankan 360*180px, tidak wajib; batas ukuran maksimal 1M, format: JPG, PNG, GIF, didukung Chrome, Edge (Firefox dan Safari tidak didukung) |
{
"notification": {
"web": {
"alert": "hello, Push!",
"title": "Tes Push",
"url":"http://www.google.com",
"icon":"",
"image":"",
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
message
Pesan dalam aplikasi (In-App messages) atau pesan kustom. Konten ini tidak ditampilkan di browser. Setelah menerima pesan, SDK meneruskannya ke Web, dan Web memproses logika bisnis.
Pesan berisi field berikut:
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| msg_content | String atau JSON Object | Wajib | Konten pesan |
| title | String | Opsional | Judul pesan |
| content_type | String | Opsional | Tipe konten pesan |
| Extras | JSON Object | Opsional | Parameter opsional dalam format JSON |
Contoh:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
options
Opsi push. Opsi berikut tersedia:
| Kata Kunci | Tipe | Opsi | Arti | Deskripsi |
|---|---|---|---|---|
| time_to_live | Int atau String | Opsional | Durasi penyimpanan pesan offline (detik) | |
| override_msg_id | Long | Opsional | ID pesan yang akan ditimpa | Jika push saat ini untuk menimpa push sebelumnya, isi msg_id push sebelumnya di sini untuk efek override, yaitu: |
| big_push_duration | Int | Opsional | Durasi push bertahap (menit) | |
| web_buttons | JSON Object | Opsional | Tambahkan tombol ke pesan notifikasi | |
| multi_language | JSON Object | Opsional | Pengaturan push multi-bahasa | Pengaturan adaptasi multi-bahasa untuk konten push. Untuk detail, lihat deskripsi multi_language. |
| third_party_channel | JSON Object | Opsional | Informasi konfigurasi channel sistem Web | Parameter valid hanya untuk pengguna yang dikonfigurasi dengan channel sistem. Untuk detail, lihat deskripsi third_party_channel. |
| plan_id | String | Opsional | Identifier rencana push | Nilai identifier rencana harus dibuat terlebih dahulu, dapat dibuat di konsol atau melalui API. |
| cid | String | Opsional | Identifier permintaan push untuk mencegah push duplikat | Hanya boleh huruf, angka, garis bawah, dan tanda hubung, maksimal 64 karakter. Field ini harus unik di bawah AppKey yang sama. |
multi_language
Field ini adalah fungsi push multi-bahasa dari layanan EngageLab Push. Anda dapat mengirimkan konten notifikasi yang disesuaikan ke pengguna dalam berbagai bahasa. Dengan menentukan beberapa bahasa beserta konten pesan, judul, dan iOS subtitle yang sesuai dalam permintaan push, Anda dapat mengirimkan notifikasi push yang sesuai dengan pengaturan bahasa pengguna.
Parameter Permintaan
| Kata Kunci | Tipe | Opsi | Arti | Deskripsi |
|---|---|---|---|---|
| en | string | Opsional | Kunci multi-bahasa | Sesuai dengan bahasa pengguna, lihat lampiran untuk kode kunci |
| content | string | Opsional | Konten pesan | Mengganti data pada notification.web.alert, message.msg_content sesuai bahasa pengguna |
| title | string | Opsional | Judul pesan | Mengganti data pada notification.web.title, message.title sesuai bahasa pengguna |
Contoh Permintaan
Metode HTTP request: Post
URL Permintaan: /v4/push
Format data POST: json
Contoh data POST:
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
}
}
}
}
Contoh Respons
Berhasil:
{
}
Gagal:
{
"code":400,
"data":"",
"message":"Informasi error"
}
web_buttons
Gunakan parameter web_buttons untuk mendeskripsikan id, teks, ikon, dan url tombol. Deskripsi parameter sebagai berikut:
| Kata Kunci | Tipe | Opsi | Arti | Deskripsi |
|---|---|---|---|---|
| id | Wajib | String | id tombol | Didukung mulai versi chrom48+ |
| text | Wajib | String | isi tombol | Didukung mulai versi chrom48+ |
| icon | Opsional | String | ikon tombol | Didukung mulai versi chrom50+ |
| url | Wajib | String | tautan redirect tombol | Didukung mulai versi chrom48+. Jika web_buttons digunakan, field url pada parameter web tidak berlaku |
Contoh penggunaan sebagai berikut:
[
{
"id": "like-button",
"text": "Suka",
"icon": "http://i.imgur.com/N8SN8ZS.png",
"url": "https://yoursite.com"
},
{
"id": "read-more-button",
"text": "Baca selengkapnya",
"icon": "http://i.imgur.com/MIxJp1L.png",
"url": "https://yoursite.com"
}
]
third_party_channel
Field ini digunakan untuk mengisi informasi personalisasi channel sistem Web. Nama kunci adalah w3push, dan nilainya berupa Json Object. Object hanya berisi satu field distribution opsional bertipe String
| Kata Kunci | Tipe | Opsi | Arti | Deskripsi |
|---|---|---|---|---|
| distribution | Wajib | String | Jika Engagelab dan channel sistem hidup berdampingan, atur prioritas pengiriman. | Nilai tidak boleh string kosong. |
Contoh:
{
"third_party_channel":{
"w3push":{
"distribution":"mtpush"
}
}
}
request_id
ID dari permintaan. Pelanggan mengidentifikasi permintaan dan mengembalikan respons.
Contoh Permintaan
{
"request_id":"12345678"
}
Contoh Respons
custom_args
Field opsional yang ditentukan pengguna. Tidak dikembalikan saat respons, tetapi dikembalikan saat callback.
{
"custom_args":"informasi bisnis"
}
Parameter Respons
Respons Berhasil
| field | tipe | opsi | deskripsi |
|---|---|---|---|
| request_id | String | Opsional | ID kustom yang dikirimkan pada permintaan, dikembalikan sebagaimana adanya pada respons. |
| message_id | String | Wajib | ID pesan untuk mengidentifikasi pesan secara unik. |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id": "18", "msg_id": "1828256757"}
Respons Gagal
Kode status http adalah 4xx atau 5xx dan body respons berisi field berikut.
| Field | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| code | int | wajib | kode error. Untuk informasi lebih lanjut, lihat deskripsi return-code |
| message | String | wajib | detail error |
{
"code": 3002,
"message": "Field Push.template harus diatur dengan benar saat type adalah template"
}
Respons
Kode status HTTP
Referensi:HTTP-Status-Code
Kode Return
| Kode | Deskripsi | Penjelasan Detail | HTTP status code |
|---|---|---|---|
| 20101 | Parameter push tidak valid. | registration_id tidak valid atau tidak milik appkey saat ini. | 400 |
| 21001 | Hanya metode HTTP Post yang didukung. | Metode Get tidak didukung. | 405 |
| 21002 | Parameter wajib hilang. | Harus diperbaiki | 400 |
| 21003 | Nilai parameter tidak valid | Harus diperbaiki | 400 |
| 21004 | Verifikasi gagal. | Harus diperbaiki. Untuk info lebih lanjut, lihat verifikasi panggilan. | 401 |
| 21005 | Body pesan terlalu besar. | Harus diperbaiki. Panjang Notification dibatasi 2048 byte. | 400 |
| 21008 | Parameter app_key tidak valid. | Harus diperbaiki. Pastikan appkey yang Anda kirimkan sama dengan di informasi aplikasi dan tidak ada spasi tambahan. | 400 |
| 21009 | Error sistem internal | Harus diperbaiki | 400 |
| 21011 | Tidak ada target push yang memenuhi syarat. | Silakan periksa | 400 |
| 21015 | Verifikasi parameter permintaan gagal. | Parameter tidak terduga | 400 |
| 21016 | Verifikasi parameter permintaan gagal. | Tipe parameter salah atau panjang parameter melebihi batas. | 400 |
| 21030 | Timeout Layanan Internal | Coba lagi nanti | 503 |
| 23006 | Error parameter | Nilai maksimum big_push_duration adalah 1440. | 400 |
| 23008 | Batas kecepatan antarmuka | QPS antarmuka push aplikasi tunggal mencapai batas atas (500 qps) | 400 |
| 27000 | Error Memori Sistem | Silakan coba lagi | 500 |
| 27001 | Error parameter | Informasi verifikasi kosong. | 401 |
| 27008 | Error parameter | Distribution pada third_party_channel tidak kosong, tapi konten alert pada notification kosong. | 401 |
| 27009 | Error parameter | Format distribution pada third_party_channel tidak valid atau kosong. | 401 |
Batasan Push
| Channel | Panjang Subjek | Panjang Konten | Instruksi Lain |
|---|---|---|---|
| Engagelab | Tidak dibatasi, tapi total ukuran body pesan dibatasi | Tidak dibatasi, tapi total ukuran body pesan dibatasi | Panjang Notification MTPush dibatasi 4000 byte. |
| Channel Sistem | <20 karakter (40 karakter Inggris) | Tidak ada |
Kode Multi-bahasa
| Bahasa | Kode |
|---|---|
| Inggris | en |
| Arab | ar |
| Tionghoa (Sederhana) | zh-Hans |
| Tionghoa (Tradisional) | zh-Hant |
| Ceko | cs |
| Denmark | da |
| Belanda | nl |
| Prancis | fr |
| Jerman | de |
| Hindi | hi |
| Italia | it |
| Jepang | ja |
| Korea | ko |
| Melayu | ms |
| Rusia | ru |
| Spanyol | es |
| Thailand | th |
| Vietnam | vi |
| Indonesia | id |
| Norwegia | no |
| Swedia | sv |
| Polandia | pl |
| Turki | tr |
| Ibrani | he |
| Portugis | pt |
| Rumania | ro |
| Hungaria | hu |
| Finlandia | fi |
| Yunani | el |
| Ukraina | uk |
| Laos | lo |
| Portugis (Portugal) | pt_PT |
| Portugis (Brasil) | pt_BR |
| Spanyol (Argentina) | es_AR |
| Spanyol (Spanyol) | es_ES |
| Spanyol (Amerika Latin) | es_419 |










