logoDokumen
Cari

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
              
              POST v4/push

            
Tampilkan blok kode ini di jendela mengambang

Contoh Permintaan

Header Permintaan

> POST /v4/push HTTP/1.1 > Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
              
              > POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==

            
Tampilkan blok kode ini di jendela mengambang

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" }
              
              {
    "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"
}

            
Tampilkan blok kode ini di jendela mengambang

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
  • Isi notifikasi, yaitu konten yang didorong ke klien.
  • Bersama dengan message, harus memiliki salah satu, dan tidak dapat bersamaan.
  • message JSON Object Opsional
  • Isi pesan, yaitu konten yang didorong ke klien.
  • Bersama dengan notification, harus memiliki salah satu, dan tidak dapat bersamaan.
  • 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" }
                  
                  {
        "from":"push"
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    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.
  • Maksimal 20 tag per sekali push.
  • Komposisi tag yang valid: huruf (case sensitive), angka, garis bawah, karakter Tionghoa.
  • Batas: Panjang setiap tag maksimal 40 byte. (gunakan UTF-8 untuk menghitung panjang)
  • 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.
  • Satu perangkat hanya bisa terhubung ke satu alias, dan sebaliknya.
  • Maksimal 1000 alias per sekali push.
  • Komposisi alias yang valid: huruf (case sensitive), angka, garis bawah, karakter Tionghoa.
  • Batas: Panjang setiap alias maksimal 40 byte. (gunakan UTF-8 untuk menghitung panjang)

  • 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", }
                  
                  {
      "to": "all",
    }
    
                
    Tampilkan blok kode ini di jendela mengambang
    • Push ke beberapa registration ID:
    { "to": { "registration_id": [ "4312kjklfds2", "8914afd2", "45fdsa31" ] } }
                  
                  {
      "to": {
        "registration_id": [
          "4312kjklfds2",
          "8914afd2",
          "45fdsa31"
        ]
      }
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    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
  • Isi notifikasi, yaitu konten yang didorong ke klien.
  • Bersama dengan message, harus memiliki salah satu, dan tidak dapat bersamaan.
  • message JSON Object Opsional
  • Isi pesan, yaitu konten yang didorong ke klien.
  • Bersama dengan notification, harus memiliki salah satu, dan tidak dapat bersamaan.
  • 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" }
                  
                  { "platform" : "web" }
    
                
    Tampilkan blok kode ini di jendela mengambang

    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" } } } }
                  
                  {
        "notification": {
            "web": {
                "alert": "hello, Push!",
                "title": "Tes Push",
                "url":"http://www.google.com",
                "icon":"",
                "image":"",
                "extras": {
                    "news_id": 134,
                    "my_key": "a value"
                }
            }
        }
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    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" } } }
                  
                  {
      "message": {
        "msg_content": "Hi,Push",
        "content_type": "text",
        "title": "msg",
        "extras": {
          "key": "value"
        }
      }
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    options

    Opsi push. Opsi berikut tersedia:

    Kata Kunci Tipe Opsi Arti Deskripsi
    time_to_live Int atau String Opsional Durasi penyimpanan pesan offline (detik)
  • Jika pengguna offline saat push, pesan offline dapat disimpan selama durasi yang ditentukan agar dapat dikirim ulang saat pengguna online.
  • Default 86400 (1 hari), maksimal 15 hari. Jika nilai maksimum yang didukung browser sistem kurang dari nilai valid yang dikirimkan, maka nilai maksimum sistem yang berlaku.
  • Jika diatur ke 0, pesan offline tidak disimpan, hanya pengguna online yang menerima push.
  • 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:
  • Pesan offline yang diterima untuk msg_id ini akan diganti dengan konten baru. Walaupun msg_id sudah diterima pengguna di web, jika notifikasi belum dihapus, konten baru akan menimpa notifikasi sebelumnya.
  • Fungsi override berlaku dalam batas waktu 1 hari. Jika msg_id yang ditentukan tidak ada dalam batas waktu override, error 1003 akan dikembalikan, menandakan bukan operasi override yang valid, dan pesan saat ini tidak akan dikirim.
  • big_push_duration Int Opsional Durasi push bertahap (menit)
  • Dikenal juga sebagai slow push, memperlambat kecepatan push asli, mendistribusikan push ke pengguna target secara merata dalam n menit; nilai maksimum 1440.
  • Maksimal 20 slow push dapat berjalan bersamaan.
  • Jika tidak diatur, maka bukan slow push.
  • web_buttons JSON Object Opsional Tambahkan tombol ke pesan notifikasi
  • Maksimal 2 tombol.
  • Nama tombol dan tautan redirect dapat diatur. Untuk detail, lihat web_buttons.
  • 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": "", } } } }
                  
                     Metode HTTP request: Post
       URL Permintaan: /v4/push
       Format data POST: json
       Contoh data POST:
       {
        "options": {
          "multi_language": {
            "en": {
              "content": "",
              "title": "",
            }
          }
        }
       }
    
                
    Tampilkan blok kode ini di jendela mengambang
    Contoh Respons
    Berhasil: { } Gagal: { "code":400, "data":"", "message":"Informasi error" }
                  
                  Berhasil:
    {
       
    }
    
    Gagal:
    {   
        "code":400,  
        "data":"",
      "message":"Informasi error"
    }   
    
                
    Tampilkan blok kode ini di jendela mengambang

    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" } ]
                  
                  [
      {
        "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"
      }
    ]
    
                
    Tampilkan blok kode ini di jendela mengambang

    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.
  • first_ospush: push dikirim melalui channel sistem terlebih dahulu, tidak melalui channel Engagelab.
  • mtpush: push dipaksa dikirim melalui channel Engagelab.
  • secondary_push: push melalui Engagelab terlebih dahulu, jika Engagelab tidak online baru melalui channel sistem. Channel sistem sebagai metode tambahan (disarankan).
  • ospush:Push hanya dikirim melalui channel sistem.
  • Contoh:

    { "third_party_channel":{ "w3push":{ "distribution":"mtpush" } } }
                  
                  {
      "third_party_channel":{
        "w3push":{
          "distribution":"mtpush"
        }
      }
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    request_id

    ID dari permintaan. Pelanggan mengidentifikasi permintaan dan mengembalikan respons.

    Contoh Permintaan

    { "request_id":"12345678" }
                  
                  {
          "request_id":"12345678"
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    Contoh Respons

    custom_args

    Field opsional yang ditentukan pengguna. Tidak dikembalikan saat respons, tetapi dikembalikan saat callback.

    { "custom_args":"informasi bisnis" }
                  
                  {
      "custom_args":"informasi bisnis"
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    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"}
                  
                  < HTTP/1.1 200 OK
    < Content-Type: application/json
    {"request_id": "18", "msg_id": "1828256757"}
    
                
    Tampilkan blok kode ini di jendela mengambang

    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" }
                  
                  {
        "code": 3002,
        "message": "Field Push.template harus diatur dengan benar saat type adalah template"
    }
    
                
    Tampilkan blok kode ini di jendela mengambang

    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)
  • Notifikasi center dan status lock screen dapat menampilkan hingga 110 karakter dan 55 karakter Tionghoa.
  • Maksimal 62 karakter dan 31 karakter Tionghoa pada pop-up atas, sisanya akan dipotong dengan elipsis.
  • 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
    icon
    Hubungi Sales