Anda dapat menggunakan API untuk mengirim jenis pesan berikut:
Semua jenis ini, kecuali pesan tanggapan, dapat ditetapkan sebagai balas.
Gunakan endpoint POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID/messages untuk mengirim pesan ke pengguna WhatsApp:
POST /<WHATSAPP_BUSINESS_PHONE_NUMBER>/messages
Semua permintaan pengiriman pesan menggunakan format objek induk generik berikut.
{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "<TO>", "type": "<TYPE>", /* TEXT MESSAGES ONLY */ "text": {<TEXT>} /* REACTION MESSAGES ONLY */ "reaction": {<REACTION>} /* MEDIA MESSAGES ONLY. FOR EXAMPLE, FOR IMAGE MEDIA: */ "image": {<IMAGE>} /* LOCATION MESSAGES ONLY */ "location": {<LOCATION>} /* CONTACTS MESSAGES ONLY */ "contacts": {<CONTACTS>} /* INTERACTIVE MESSAGES ONLY */ "interactive": {<INTERACTIVE>} /* TEMPLATE MESSAGES ONLY */ "template": {<TEMPLATE>} }
Placeholder | Deskripsi | Contoh Nilai |
---|---|---|
String | ID WhatsApp atau nomor telepon pelanggan yang menjadi tujuan pengiriman pesan. Lihat Format Nomor Telepon |
|
String | Menunjukkan jenis pesan. |
|
Objek | Konten pesan teks. | Lihat Pesan Teks. |
Objek | Konten pesan tanggapan. | Lihat Pesan Tanggapan. |
Objek | Konten pesan media. Nama properti harus cocok dengan jenis pesan media yang Anda kirim ( | Lihat Pesan Media. |
Objek | Konten pesan lokasi. | Lihat Pesan Lokasi. |
Objek | Konten pesan kontak. | Lihat Pesan Kontak. |
Objek | Konten pesan interaktif. | Lihat Pesan Interaktif. |
Contoh dalam dokumen ini menjelaskan persyaratan payload isi postingan untuk setiap jenis pesan.
Setelah berhasil, API akan menanggapi dengan:
{ "messaging_product": "whatsapp", "contacts": [ { "input": "<WHATSAPP_USER_PHONE_NUMBER>", "wa_id": "<WHATSAPP_USER_ID>" } ], "messages": [ { "id": "<WHATSAPP_MESSAGE_ID>" } ] }
Placeholder | Description | Sample Value |
---|---|---|
String | WhatsApp user's WhatsApp phone number. May not match |
|
String | WhatsApp user's WhatsApp ID. May not match |
|
String | WhatsApp Message ID. This ID appears in associated messages webhooks, such as sent, read, and delivered webhooks. |
|
Plus signs (+
), hyphens (-
), parenthesis ((
,)
), and spaces are supported in send message requests.
We highly recommend that you include both the plus sign and country calling code when sending a message to a customer. If the plus sign is omitted, your business phone number's country calling code is prepended to the customer's phone number. This can result in undelivered or misdelivered messages.
For example, if your business is in India (country calling code 91
) and you send a message to the following customer phone number in various formats:
Number In Send Message Request | Number Message Delivered To | Outcome |
---|---|---|
|
| Correct number |
|
| Correct number |
|
| Potentially wrong number |
|
| Potentially wrong number |
Pesan teks adalah pesan yang hanya berisi isi teks dan pratinjau tautan opsional.
Pesan tanggapan adalah tanggapan emoji yang dapat Anda terapkan pada pesan pengguna WhatsApp sebelumnya yang telah Anda terima.
Anda dapat mengirim pesan audio, dokumen, gambar, stiker, dan video ke pengguna WhatsApp.
Pesan audio menampilkan ikon audio dan tautan ke file audio. Saat pengguna WhatsApp mengetuk ikon, klien WhatsApp memuat dan memutar file audio.
Pesan dokumen adalah pesan yang menampilkan ikon dokumen, yang ditautkan ke sebuah dokumen, yang dapat diketuk oleh pengguna WhatsApp untuk diunduh.
Contoh, inilah pesan gambar dengan keterangan opsional yang disertakan:
Pesan stiker menampilkan gambar stiker animasi atau statis dalam pesan WhatsApp.
Pesan video menampilkan pratinjau gambar mini dari gambar video dengan keterangan opsional. Saat pengguna WhatsApp mengetuk pratinjau, video akan dimuat video dan ditampilkan ke pengguna.
Aset media harus diunggah ke nomor telepon bisnis yang akan mengirim pesan, atau Anda harus menghosting aset di server publik dan menyertakan URL-nya ke dalam permintaan pengiriman pesan.
Untuk mengurangi kemungkinan kesalahan dan menghindari permintaan yang tidak perlu ke server publik Anda, sebaiknya unggah aset media Anda dan gunakan ID-nya saat mengirim pesan.
WhatsApp Cloud API mendukung caching HTTP media. Jika Anda menggunakan tautan (link
) ke aset media di server Anda (bukan menggunakan ID (id
) dari aset yang telah Anda unggah ke server kami), Anda dapat menginstruksikan kami untuk menyimpan cache aset Anda untuk digunakan kembali dengan pesan di masa mendatang dengan memasukkan header di bawah dalam tanggapan server Anda saat kami meminta aset. Jika tidak ada satu pun dari header ini yang disertakan, kami tidak akan melakukan cache aset Anda.
Cache-Control: <CACHE_CONTROL> Last-Modified: <LAST_MODIFIED> ETag: <ETAG>
Header Cache-Control
memberi tahu kami cara menangani caching aset. Kami mendukung arahan berikut:
max-age=n
: Menunjukkan jumlah detik (n
) untuk melakukan cache aset. Kami akan menggunakan kembali cache aset dalam pesan berikutnya sampai waktu ini terlampaui, setelah itu kami akan meminta aset lagi, jika diperlukan. Contoh: Cache-Control: max-age=604800
.no-cache
: Menunjukkan aset dapat di-cache, tetapi harus diperbarui jika nilai Last-Modified
berbeda dari tanggapan sebelumnya. Memerlukan header Last-Modified
. Contoh: Cache-Control: no-cache
.no-store
: Menunjukkan bahwa aset tidak boleh di-cache. Contoh: Cache-Control: no-store
.private
: Menunjukkan bahwa aset dipersonalisasi untuk penerima dan tidak boleh di-cache.Menunjukkan kapan aset tersebut terakhir kali diubah. Digunakan dengan Cache-Control: no-cache
. Jika nilai Last-Modified
berbeda dari tanggapan sebelumnya dan Cache-Control: no-cache
disertakan dalam tanggapan, kami akan memperbarui versi cache aset kami dengan aset dalam tanggapan. Contoh: Date: Tue, 22 Feb 2022 22:22:22 GMT
.
Header ETag
adalah string unik yang mengidentifikasi versi tertentu dari sebuah aset. Contoh: ETag: "33a64df5"
. Header ini diabaikan kecuali header Cache-Control
dan Last-Modified
-keduanya tidak disertakan dalam tanggapan. Dalam hal ini, kami akan melakukan cache aset sesuai dengan logika internal kami sendiri (yang tidak kami ungkapkan).
HTTP/1.1 200 OK Content-Type: image/png Content-Length: 1024 Date: Tue, 22 Feb 2022 22:22:22 GMT ETag: "33a64df5" Cache-Control: max-age=604800 <IMAGE_PAYLOAD>
Pesan lokasi memungkinkan Anda mengirim koordinat lintang dan bujur suatu lokasi ke pengguna WhatsApp.
Untuk mengirim pesan kontak, buat panggilan POST
ke /PHONE_NUMBER_ID/messages
dan lampirkan objek message
dengan type=contact
. Lalu, tambahkan objek contacts
.
Contoh permintaan:
curl -X POST \
'https://graph.facebook.com/v19.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"to": "PHONE_NUMBER",
"type": "contacts",
"contacts": [{
"addresses": [{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "HOME"
},
{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "WORK"
}],
"birthday": "YEAR_MONTH_DAY",
"emails": [{
"email": "EMAIL",
"type": "WORK"
},
{
"email": "EMAIL",
"type": "HOME"
}],
"name": {
"formatted_name": "NAME",
"first_name": "FIRST_NAME",
"last_name": "LAST_NAME",
"middle_name": "MIDDLE_NAME",
"suffix": "SUFFIX",
"prefix": "PREFIX"
},
"org": {
"company": "COMPANY",
"department": "DEPARTMENT",
"title": "TITLE"
},
"phones": [{
"phone": "PHONE_NUMBER",
"type": "HOME"
},
{
"phone": "PHONE_NUMBER",
"type": "WORK",
"wa_id": "PHONE_OR_WA_ID"
}],
"urls": [{
"url": "URL",
"type": "WORK"
},
{
"url": "URL",
"type": "HOME"
}]
}]
}'
Tanggapan yang berhasil mencakup objek dengan pengidentifikasi berawalan wamid. Gunakan ID yang terdaftar setelah wamid untuk melacak status pesan Anda.
{ "messaging_product": "whatsapp", "contacts": [{ "input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID", }] "messages": [{ "id": "wamid.ID", }] }
Pesan interaktif mencakup pesan daftar, tombol balas, tombol URL ajakan bertindak, dan pesan Flows. Untuk mengirim pesan interaktif, buat panggilan POST
ke /PHONE_NUMBER_ID/messages
dan lampirkan objek pesan dengan type=interactive
. Lalu, tambahkan objekinteractive
.
Pesan daftar interaktif memungkinkan Anda untuk menyajikan daftar opsi kepada pengguna WhatsApp untuk dipilih.
Pesan permintaan lokasi menampilkan teks isi dan tombol kirim lokasi. Saat pengguna WhatsApp mengetuk tombol, layar berbagi lokasi muncul yang dapat digunakan oleh pengguna untuk berbagi lokasi mereka.
Pesan tombol balasan interaktif memungkinkan Anda untuk mengirim hingga tiga balasan yang sudah ditentukan sebelumnya untuk dipilih oleh pengguna.
Pelanggan Anda mungkin ragu-ragu untuk mengetuk URL mentah yang berisi string panjang atau tidak jelas dalam pesan teks. Dalam situasi ini, Anda mungkin ingin mengirim pesan interaktif dengan teks isi dan tombol URL ajakan bertindak (CTA).
Tombol URL CTA memungkinkan Anda untuk memetakan URL apa pun ke tombol sehingga Anda tidak perlu menyertakan URL mentah di body pesan interaktif.
POST /<BUSINESS_PHONE_NUMBER_ID>/messages
{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "<CUSTOMER_PHONE_NUMBER>", "type": "interactive", "interactive": { "type": "cta_url", /* Header optional */ "header": { "type": "text", "text": "<HEADER_TEXT>" }, /* Body optional */ "body": { "text": "<BODY_TEXT>" }, /* Footer optional */ "footer": { "text": "<FOOTER_TEXT>" }, "action": { "name": "cta_url", "parameters": { "display_text": "<BUTTON_TEXT>", "url": "<BUTTON_URL>" } } } }
Placeholder | Deskripsi | Contoh Nilai |
---|---|---|
String | Wajib. ID WhatsApp atau nomor telepon pelanggan yang dikirimi pesan. Lihat Format Nomor Telepon. |
|
String | Opsional. Teks header. |
|
String | Wajib. Teks body pesan. |
|
String | Opsional. Teks footer pesan. |
|
String | Wajib. Teks tombol. |
|
String | Wajib. URL yang akan dimuat di browser web standar perangkat saat diketuk oleh pengguna WhatsApp. |
|
curl 'https://graph.facebook.com/v19.0
/106540352242922/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "+16505555555",
"type": "interactive",
"interactive": {
"type": "cta_url",
"header": {
"text": "Available Dates"
},
"body": {
"text": "Tap the button below to see available dates."
},
"footer": {
"text": "Dates subject to change."
},
"action": {
"name": "cta_url",
"parameters": {
"display_text": "See Dates",
"url": "https://www.luckyshrub.com?clickID=kqDGWd24Q5TRwoEQTICY7W1JKoXvaZOXWAS7h1P76s0R7Paec4"
}
}
}
}'
{ "messaging_product": "whatsapp", "contacts": [ { "input": "+16505555555", "wa_id": "+16505555555" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA" } ] }
Setelah membuat WhatsApp Flow, Anda dapat mengirimkannya. Untuk mengirim pesan dengan flow, kami telah memperkenalkan jenis baru Objek Interaktif yang disebut flow
. Berikut ini adalah properti Objek Interaktif yang spesifik untuk flow:
Properti | Jenis | Deskripsi |
---|---|---|
| String | Nilai harus |
| String | Nilai harus |
| String | Flow dapat dalam mode |
| String | Nilai harus |
| String | Token Flow yang dihasilkan oleh bisnis untuk berfungsi sebagai pengidentifikasi. |
| String | ID unik Flow yang disediakan oleh WhatsApp. |
| String | Teks pada tombol CTA. Contoh: "Daftar" Batas karakter - 20 karakter (tanpa emoji). |
| String |
|
| String | Wajib jika |
| String |
|
| String | Opsional. Data input untuk layar pertama Flow. Tidak boleh berupa objek kosong. |
Contoh Permintaan
curl -X POST \ 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "recipient_type": "individual", "messaging_product": "whatsapp", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { "type": "flow", "header": { "type": "text", "text": "Flow message header" }, "body": { "text": "Flow message body" }, "footer": { "text": "Flow message footer" }, "action": { "name": "flow", "parameters": { "flow_message_version": "3", "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s.", "flow_id": "1", "flow_cta": "Book!", "flow_action": "navigate", "flow_action_payload": { "screen": "<SCREEN_NAME>", "data": { "product_name": "name", "product_description": "description", "product_price": 100 } } } } } }'
Contoh Tanggapan
{ "messaging_product": "whatsapp", "contacts": [ { "Input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID" } ], "messages": [ { "id": "wamid.ID" } ] }
Anda dapat mengirim pesan apa pun sebagai balasan ke pesan sebelumnya dalam percakapan dengan memasukkan ID pesan sebelumnya dalam objek context
. Penerima akan menerima pesan baru bersama dengan gelembung kontekstual yang menampilkan konten pesan sebelumnya.
Penerima tidak akan melihat gelembung kontekstual jika:
"type":"template"
)Ini adalah bug yang diketahui yang sedang kami tangani.
Contoh permintaan:
curl -X POST \
'https://graph.facebook.com/v19.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-d '{
"messaging_product": "whatsapp",
"context": {
"message_id": "MESSAGE_ID"
},
"to": "<phone number> or <wa_id>",
"type": "text",
"text": {
"preview_url": False,
"body": "your-text-message-content"
}
}'
Tanggapan yang berhasil menyertakan objek dengan pengidentifikasi prefiks dengan wamid. Gunakan ID yang tercantum setelah wamid untuk melacak status pesan Anda.
Catatan: jika pesan sebelumnya lebih dari 30 hari atau tidak sesuai dengan pesan apa pun dalam percakapan, pesan akan dikirim secara normal, bukan sebagai balasan.
Contoh tanggapan:
{ "messaging_product": "whatsapp", "contacts": [{ "input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID", }] "messages": [{ "id": "wamid.ID", }] }
Fitur ini hanya tersedia untuk bisnis yang berkantor di Singapura dan pelanggannya di Singapura, serta bisnis yang berkantor di India dan pelanggannya di India.
Pesan alamat memberikan pengguna Anda cara yang lebih sederhana untuk membagikan alamat pengiriman dengan bisnis di WhatsApp.
Pesan alamat adalah pesan interaktif yang berisi 4 bagian utama: header
, body
, footer
, dan action
. Di dalam komponen tindakan, bisnis menentukan nama “address_message” dan parameter yang relevan.
Saat ini pesan alamat didukung di dua negara berikut: India dan Singapura. Tabel di bawah ini menjelaskan kolom apa yang didukung di negara mana secara spesifik.
Nama Kolom | Label Tampilan | Jenis Input | Negara yang Didukung | Batasan |
---|---|---|---|---|
| Nama | teks | India, Singapura | Tidak Ada |
| Nomor Telepon | tel | India, Singapura | Hanya nomor telepon yang valid |
| Kode PIN | teks | India | Panjang maksimum: 6 |
| Kode Pos | angka | Singapura | Panjang maksimal: 6 |
| Nomor Flat/Rumah | teks | India | Tidak Ada |
| Nomor Lantai | teks | India | Tidak Ada |
| Nomor Menara | teks | India | Tidak Ada |
| Nama Bangunan/Apartemen | teks | India | Tidak Ada |
| Alamat | teks | India, Singapura | Tidak Ada |
| Landmark/Area | teks | India | Tidak Ada |
| Nomor unit | teks | Singapura | Tidak Ada |
| Kota | teks | India, Singapura | Tidak Ada |
| Negara Bagian | teks | India | Tidak Ada |
Ini adalah contoh panggilan API untuk pesan alamat. Atribut country
adalah kolom wajib dalam parameter tindakan. Jika tidak disertakan, akan ada kesalahan validasi.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country" :"COUNTRY_ISO_CODE" } } } }'
Jika kode area nomor telepon untuk negara tertentu tidak benar, bisnis tidak akan dapat meminta pesan alamat dari penerima. Contoh: bisnis tidak akan dapat meminta pesan alamat dari penerima dengan negara "Singapura" tetapi nomor teleponnya berkode area "91".
Pesan alamat tidak akan mengizinkan melewati secara bersamaan kolom-kolom yang bertentangan. Contoh: Anda tidak dapat melewati sg_post_code
saat country
diatur ke “IN”.
Setelah pesan alamat dikirimkan, bisnis menunggu pengguna untuk mengisi alamat dan mengirimkannya kembali. Alamat yang dimasukkan pengguna dibagikan melalui Webhooks yang terdaftar di proses pengaturan.
Langkah-langkah yang terlibat dalam Pesan Alamat adalah sebagai berikut:
address_message
kepada penggunaDiagram urutan berikut menunjukkan alur integrasi biasanya untuk pesan alamat.
Bisnis dapat melewati atribut tambahan seperti values
, validation_errors
, atau saved_addresses
sebagai bagian dari parameter tindakan interaktif. Anda dapat menemukan informasi tentang setiap penggunaannya di bawah ini.
Parameter Tindakan | Penggunaan |
---|---|
| Bisnis terlebih dahulu mengisi untuk kolom alamat (misalnya: terlebih dahulu mengisi kolom alamat kota dengan “Singapura”) |
| Untuk bisnis, mereka dapat melewati alamat yang disimpan sebelumnya terkait dengan pengguna. Pengguna akan disajikan dengan opsi untuk memilih alamat tersimpan dan bukan mengisinya secara manual |
| Bisnis dapat melemparkan kesalahan di kolom alamat dan WhatsApp akan mencegah pengguna agar tidak mengirimkan alamat sampai masalah terselesaikan. |
Buat panggilan POST
ke /PHONE_NUMBER_ID/messages
menggunakan API WhatsApp untuk mengirim pesan alamat dienkripsi end-to-end kepada pengguna:
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d ' { "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": "JSON Payload" } } }'
Untuk mengirim pesan alamat tanpa alamat tersimpan, WhatsApp akan meminta pengguna atau bisnis untuk memasukkan alamat baru di formulir alamat.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "+91xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "IN", "values": { "name": "CUSTOMER_NAME", "phone_number": "+91xxxxxxxxxx" } } } } }'
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "+65xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "SG", "values": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx" } } } } }'
Untuk mengirim pesan alamat dengan alamat tersimpan, WhatsApp akan meminta pengguna atau bisnis untuk memilih dari alamat tersimpan atau menambahkan opsi alamat. Pengguna dapat mengabaikan alamat tersimpan dan memasukkan alamat baru.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "91xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "IN", "saved_addresses": [ { "id": "address1", "value": { "name": "CUSTOMER_NAME", "phone_number": "+91xxxxxxxxxx", "in_pin_code": "400063", "floor_number": "8", "building_name": "", "address": "Wing A, Cello Triumph,IB Patel Rd", "landmark_area": "Goregaon", "city": "Mumbai" } } ] } } } }'
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "+65xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "SG", "values": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx" }, "saved_addresses": [ { "id": "address1", "value": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx", "sg_post_code": "018937", "address": "9 Straits View, Marina One West Tower", "unit_number": "Suite 29-00", "city": "Singapore" } } ] } } } }'
Tanggapan yang berhasil mengandung objek messages
dengan pengidentifikasi untuk pesan yang baru dibuat.
{ "messaging_product": "whatsapp", "contacts": [{ "input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID", }] "messages": [{ "id": "wamid.ID", }] }
Tanggapan yang gagal akan berisi pesan kesalahan. Lihat Kode Kesalahan dan Status untuk informasi selengkapnya.
Pesan alamat harus dikirim ulang kepada pengguna jika terjadi kesalahan validasi pada server bisnis. Bisnis harus mengirim kembali set nilai yang telah dimasukkan oleh pengguna, bersama dengan kesalahan validasi masing-masing untuk setiap kolom yang tidak valid, seperti yang ditunjukkan pada contoh payload di bawah ini.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "91xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "IN", "values": { "name": "CUSTOMER_NAME", "phone_number": "+91xxxxxxxxxx", "in_pin_code": "666666", "address": "Some other location", "city": "Delhi" }, "validation_errors": { "in_pin_code": "We could not locate this pin code." } } } } }'
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "12065550107", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "SG", "values": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx", "sg_post_code": "666666", "address": "Some other location", "city": "Singapore" }, "validation_errors": { "sg_post_code": "We could not locate this pin code." } } } } }'
Bisnis akan menerima notifikasi pengajuan alamat melalui Webhooks, seperti yang ditunjukkan di bawah ini.
{ "messages": [ { "id": "gBGGFlAwCWFvAgmrzrKijase8yA", "from": "PHONE_NUMBER", "Interactive": { "type": "nfm_reply", "action": "address_message", "nfm_reply": { "name": "address_message", "response_json": “<response_json from client>”, "body": “<body text from client>”, } "timestamp": "1670394125", "type": "interactive" } ] }
Notifikasi Webhooks memiliki nilai-nilai berikut.
Nama Kolom | Jenis | Deskripsi |
---|---|---|
| Objek | Menyimpan tanggapan dari klien |
| String | Akan berupa |
| Objek | Menyimpan data yang diterima dari klien |
| String | Nilai kolom alamat yang diisi oleh pengguna dalam format JSON yang selalu ada |
| String | Teks isi dari klien, apa yang dilihat pengguna |
| String | Akan berupa |
Balasan pesan alamat sebagai jenis tanggapan NFM untuk permintaan pesan alamat di India ditampilkan di bawah ini.
{ "messages": [ { "context": { "from": "FROM_PHONE_NUMBER_ID", "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgARGBI3NjNFN0U5QzMzNDlCQjY0M0QA" }, "from": "PHONE_NUMBER", "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgASGCA5RDhBNENEMEQ3RENEOEEzMEI0RUExRDczN0I1NThFQwA=", "timestamp": "1671498855", "type": "interactive", "interactive": { "type": "nfm_reply", "nfm_reply": { "response_json": "{\"saved_address_id\":\"address1\",\"values\":{\"in_pin_code\":\"400063\",\"building_name\":\"\",\"landmark_area\":\"Goregaon\",\"address\":\"Wing A, Cello Triumph, IB Patel Rd\",\"city\":\"Mumbai\",\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+91xxxxxxxxxx\",\"floor_number\":\"8\"}}", "body": "CUSTOMER_NAME\n +91xxxxxxxxxx\n 400063, Goregaon, Wing A, Cello Triumph,IB Patel Rd, Mumbai, 8", "name": "address_message" } } } ] }
Jika klien tidak mendukung address_message
, pesan secara diam-diam akan gagal dan pesan kesalahan akan dikirimkan kembali kepada bisnis dalam Webhooks. Notifikasi Webhooks yang akan dikirim kembali ditunjukkan di bawah ini:
{ "statuses": [ { "errors": [ { "code": 1026, "href": "https://developers.facebook.com/docs/whatsapp/api/errors/", "title": "Receiver Incapable" } ], "id": "gBGGFlAwCWFvAgkyHMGKnRu4JeA", "message": { "recipient_id": "+91xxxxxxxxxx" }, "recipient_id": "91xxxxxxxxxx", "status": "failed", "timestamp": "1670394125", "type": "message" } ] }
Lihat Pesan Template.
Saat mengirim serangkaian pesan, urutan penyampaian tidak dijamin sesuai dengan urutan permintaan API Anda. Jika Anda perlu memastikan urutan pengiriman pesan, konfirmasikan tanda terima status delivered
dalam webhook pesan sebelum mengirim pesan berikutnya dalam urutan pesan Anda.
Jika Anda mengalami masalah dengan pengiriman pesan, lihat Pesan Tidak Tersampaikan.