Harga berbasis percakapan telah berubah. Lihat Harga untuk mempelajari cara kerja model harga berbasis percakapan baru kami.
Selain itu, visibilitas metric_types
telah berubah mulai tanggal 1 Juli 2023. Lihat tabel Analitik Percakapan untuk detail selengkapnya.
Template Autentikasi
Mulai 1 April 2024, semua template autentikasi yang ada yang bukan merupakan template autentikasi dengan tombol kata sandi satu kali tidak dapat dikirim, diedit, atau diajukan banding.
Template autentikasi akan tersedia di India pada 1 Juli 2024.
Template digunakan saat mengirim pesan template dengan Cloud API yang di-hosting oleh Meta atau On-Premises API. Cloud API meninjau template dan parameter variabel menggunakan pembelajaran mesin untuk melindungi keamanan dan integritas layanan Cloud API. Ketika Cloud API meninjau template dan teks variabel, tidak ada informasi yang dibagikan dengan WhatsApp.
Template ini dapat dibuat menggunakan API Pengelolaan Bisnis atau Pengelola WhatsApp Business. Jumlah template yang dapat dimiliki Akun WhatsApp Business ditentukan oleh bisnis induk. Jika bisnis induk tidak terverifikasi, masing-masing Akun WhatsApp Business dibatasi hingga 250 template. Namun, jika bisnis induk terverifikasi dan setidaknya satu dari Akun WhatsApp Business-nya memiliki nomor telepon bisnis dengan nama tampilan yang disetujui, masing-masing Akun WhatsApp Business dapat memiliki hingga 6.000 template.
Anda akan memerlukan:
Anda dapat menambahkan template pesan dalam bahasa tertentu saat membuat template. Template ini diperhitungkan terhadap batasan Anda. Konsistenlah saat memberikan terjemahan. Lihat artikel pusat bantuan Mengapa saya melihat kesalahan 'struktur tidak tersedia' dalam panggilan balik saya? untuk informasi selengkapnya.
Kirim permintaan POST ke endpoint Akun WhatsApp Business > Template Pesan untuk membuat template.
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates
{ "name": "<NAME>", "category": "<CATEGORY>", "allow_category_change": <ALLOW_CATEGORY_CHANGE>, "language": "<LANGUAGE>", "components": [<COMPONENTS>] }
Placeholder | Deskripsi | Contoh Nilai |
---|---|---|
String | Wajib. Nama template. Maksimal 512 karakter. |
|
Enum | Wajib. Kategori template. Lihat Kategori Template di bawah. |
|
Boolean | Opsional. Atur ke true untuk mengizinkan kami menetapkan kategori secara otomatis. Jika diabaikan, template dapat ditolak karena salah kategori. |
|
Enum | Wajib. Template bahasa dan kode locale. |
|
String | Opsional. Nama yang tepat dari template Galeri Template Utilitas. Pelajari cara membuat template menggunakan Galeri Template Utilitas |
|
Array objek | Opsional. Situs web dan/atau nomor telepon bisnis yang sedang digunakan di template. Catatan: Untuk template utilitas yang berisi tombol, properti ini tidak bersifat opsional. Pelajari cara membuat template menggunakan Galeri Template Utilitas |
|
Array objek | Wajib. Komponen yang membentuk template. Lihat Komponen Template di bawah. | Lihat Komponen Template di bawah. |
Template harus dikategorikan sebagai salah satu kategori berikut. Kategori difaktorkan ke harga dan kategori yang Anda pilih akan divalidasi pada saat pembuatan template.
AUTHENTICATION
MARKETING
UTILITY
Lihat dokumenKategorisasi Template kami untuk menentukan kategori mana yang akan digunakan saat membuat template.
Template terdiri dari berbagai teks, media, dan komponen interaktif, berdasarkan kebutuhan bisnis Anda. Lihat dokumen Komponen Template untuk mengetahui daftar semua komponen yang mungkin dan persyaratannya serta sampel dan contoh kueri.
Saat membuat template, definisikan komponennya dengan menetapkan array objek komponen ke properti komponen di body permintaan.
Contoh: berikut adalah array yang berisi komponen body teks dengan dua variabel dan contoh nilai, komponen tombol nomor telepon, dan komponen tombol URL:
[ { "type": "BODY", "text": "Thank you for your order, {{1}}! Your confirmation number is {{2}}. If you have any questions, please use the buttons below to contact support. Thank you for being a customer!", "example": { "body_text": [ [ "Pablo","860198-230332" ] ] } }, { "type": "BUTTONS", "buttons": [ { "type": "PHONE_NUMBER", "text": "Call", "phone_number": "15550051310" }, { "type": "URL", "text": "Contact Support", "url": "https://www.luckyshrub.com/support" } ] } ]
Lihat dokumen Komponen Template untuk mengetahui daftar semua komponen yang mungkin dan persyaratannya serta sampel dan contoh kueri.
Perhatikan bahwa template dengan kategori AUTHENTICATION
memiliki persyaratan komponen yang unik. Lihat Template Autentikasi.
Saat Anda mengirim permintaan pembuatan template, kami segera memvalidasi kategori menggunakan panduan kategorisasi template kami.
status
ke PENDING
. Lalu template akan menjalani tinjauan template.status
template ke REJECTED
dan memicu Webhooks pembaruan status template pesan dengan reason
diatur ke INCORRECT_CATEGORY
. Kami merekomendasikan Anda mendengarkan Webhooks ini untuk mengidentifikasi template yang ditolak, atau meminta kolom rejected_reason
pada template yang baru dibuat, yang akan memiliki nilai TAG_CONTENT_MISMATCH
.Dalam kedua kasus, status awal template diberikan sebagai bagian dari tanggapan API.
Jika status template Anda telah diatur ke REJECTED
sebagai bagian dari validasi kategori, Anda memiliki beberapa opsi:
Anda dapat menyertakan properti allow_category_change
di permintaan Anda agar kami dapat secara otomatis menetapkan kategori berdasarkan konten template dan pedoman kategorisasi template kami. Hal ini dapat mencegah status template Anda agar tidak segera diatur ke REJECTED
akibat salah kategori.
Harap diperhatikan bahwa kategorisasi otomatis hanya dimungkinkan saat membuat template.
Template dengan status PENDING
sedang menjalani tinjauan template. Kami meninjau konten setiap template yang baru dibuat atau diedit untuk memastikan template tersebut mematuhi pedoman dan kebijakan konten kami. Berdasarkan hasil tinjauan ini, kami secara otomatis akan mengubah statusnya menjadi APPROVED
atau REJECTED
, yang memicu Webhooks pembaruan status template pesan.
Berdasarkan hasil validasi kategori dan tinjauan template, kami mengatur atau mengubah status
template Anda menjadi salah satu nilai berikut:
APPROVED
— Template telah melewati tinjauan template dan telah disetujui, dan sekarang dapat dikirim dalam pesan template.PENDING
— Template melewati validasi kategori dan sedang menjalani tinjauan template.REJECTED
— Template gagal dalam validasi kategori atau tinjauan template. Anda dapat meminta kolom rejected_reason pada template untuk mendapatkan alasannya.Lihat referensi endpoint Template Pesan WhatsApp untuk semua kemungkinan kolom dan status.
Setelah berhasil, API menanggapi dengan ID, status, dan kategori template yang baru dibuat. Ada tiga kemungkinan hasil:
status
-nya adalah PENDING
).status
-nya adalah REJECTED
)status
-nya adalah APPROVED
). Ini hanya mungkin untuk template autentikasi dengan tombol kata sandi sekali pakai.{ "id": "<ID>", "status": "<STATUS>", "category": "<CATEGORY>" }
Placeholder | Deskripsi | Contoh Nilai |
---|---|---|
| ID template. |
|
|
| |
| Kategori template yang Anda tentukan, atau yang kami tetapkan. |
|
Berikut ini adalah contoh permintaan untuk membuat template promosi musiman yang terdiri dari komponen berikut:
Untuk contoh tambahan, lihat Contoh Permintaan.
curl 'https://graph.facebook.com/v19.0
/102290129340398/message_templates' \
-H 'Authorization: Bearer EAAJB...' \
-H 'Content-Type: application/json' \
-d '
{
"name": "seasonal_promotion",
"language": "en_US",
"category": "MARKETING",
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Our {{1}} is on!",
"example": {
"header_text": [
"Summer Sale"
]
}
},
{
"type": "BODY",
"text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",
"example": {
"body_text": [
[
"the end of August","25OFF","25%"
]
]
}
},
{
"type": "FOOTER",
"text": "Use the buttons below to manage your marketing subscriptions"
},
{
"type":"BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Unsubscribe from Promos"
},
{
"type":"QUICK_REPLY",
"text": "Unsubscribe from All"
}
]
}
]
}'
{ "id": "572279198452421", "status": "PENDING", "category": "MARKETING" }
Gunakan Cloud API atau On-Premises API untuk mengirim template dalam pesan template.
Kami merekomendasikan Anda untuk menambahkan tombol Balasan Cepat ke template yang dikategorikan sebagai MARKETING
agar memudahkan pelanggan untuk menolak pesan marketing Anda. Ini akan memberi pelanggan Anda opsi untuk menolak pesan marketing Anda tanpa harus memblokir bisnis Anda. Sebagai hasilnya, Anda mungkin dapat meningkatkan volume berkirim pesan lebih cepat. Silakan lihat artikel ini untuk detail lebih lanjut tentang manfaat menambahkan tombol menolak ke template marketing Anda.
Bisnis Anda harus mengambil langkah-langkah yang diperlukan untuk berhenti mengirim pesan marketing kepada pelanggan yang telah memilih untuk menolaknya. Tidak melakukannya akan berdampak negatif terhadap tingkat pemblokiran dan skor kualitas Anda.
Kirim permintaan GET ke endpoint Akun WhatsApp Business > Template Pesan untuk mendapatkan daftar template yang dimiliki oleh Akun WhatsApp Business.
GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates ?fields=<FIELDS> &limit=<LIMIT>
Placeholder | Deskripsi | Contoh Nilai |
---|---|---|
Daftar yang dipisahkan koma | Opsional. Daftar kolom template yang ingin ditampilkan. |
|
Bilangan bulat | Opsional. Jumlah maksimum template yang ingin ditampilkan di setiap halaman hasil. |
|
curl 'https://graph.facebook.com/v19.0
/102290129340398/message_templates?fields=name,status&limit=3' \
-H 'Authorization: Bearer EAAJB...'
{
"data": [
{
"name": "seasonal_promotion_text_only",
"status": "APPROVED",
"id": "564750795574598"
},
{
"name": "seasonal_promotion_video",
"status": "PENDING",
"id": "1252715608684590"
},
{
"name": "seasonal_promotion_image_header",
"status": "PENDING",
"id": "1372429296936443"
}
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MgZDZD"
},
"next": "https://graph.facebook.com/v19.0
/102290129340398/message_templates?fields=name%2Cstatus&limit=3&after=MgZDZD"
}
}
Anda hanya dapat menampilkan template dengan nilai kolom tertentu dengan menyertakan kolom dan nilai yang diinginkan dalam permintaan Anda. Contoh: sertakan status=REJECTED
untuk hanya mendapatkan template yang telah ditolak.
curl 'https://graph.facebook.com/v19.0
/104996122399160/message_templates?fields=name,status&status=REJECTED' \
-H 'Authorization: Bearer EAAJB...'
{ "data": [ { "name": "seasonal_promotion_text_only_v4", "status": "REJECTED", "id": "564750795574598" }, { "name": "discount_qualifier", "status": "REJECTED", "id": "163917509772674" }, { "name": "limited_time_offer_tuscan_getaway_2023", "status": "REJECTED", "id": "202389039167147" }, { "name": "2023_mar_promo_2", "status": "REJECTED", "id": "1116034925734553" }, { "name": "2023_mar_promo", "status": "REJECTED", "id": "952600926095321" } ] }
Namespace template pesan diperlukan untuk mengirim pesan menggunakan template pesan.
Untuk mendapatkan namespace template, kirim permintaan GET
ke endpoint /{whatsapp-business-account-ID}
dan sertakan kolom message_template_namespace
.
curl -i -X GET "https://graph.facebook.com/v19.0
/{whatsapp-business-account-ID}
?fields=message_template_namespace
&access_token={system-user-access-token}"
Jika berhasil, objek JSON dengan ID Akun WhatsApp Business dan namespace akan ditampilkan:
{ "id": "1972385232742141", "message_template_namespace": "12abcdefghijk_34lmnop" }
Kirim permintaan POST ke endpoint Template Pesan WhatsApp untuk mengedit template. Anda juga dapat mengedit template secara manual menggunakan panel Pengelola WhatsApp > Fitur akun > Template pesan.
APPROVED
, REJECTED
, atau PAUSED
yang bisa diedit.category
atau components
template.category
dari template yang disetujui.POST /<WHATSAPP_MESSAGE_TEMPLATE_ID>
{ "category": "<CATEGORY>", "components": [<COMPONENTS>] }
Placeholder | Deskripsi | Contoh Nilai |
---|---|---|
String | Wajib jika properti komponen ditiadakan. Kategori template. |
|
Array | Wajib jika properti kategori ditiadakan. Array objek komponen template. | Lihat Contoh Permintaan (Mengedit Komponen) di bawah ini. |
Contoh permintaan ke teks body template yang berisi konten marketing dan utilitas untuk hanya berisi konten marketing.
curl 'https://graph.facebook.com/v19.0
/564750795574598' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Our {{1}} is on!",
"example": {
"header_text": [
"Spring Sale"
]
}
},
{
"type": "BODY",
"text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",
"example": {
"body_text": [
[
"the end of April",
"25OFF",
"25%"
]
]
}
},
{
"type": "FOOTER",
"text": "Use the buttons below to manage your marketing subscriptions"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Unsubcribe from Promos"
},
{
"type": "QUICK_REPLY",
"text": "Unsubscribe from All"
}
]
}
]
}'
Contoh permintaan untuk mengubah kategori template dari UTILITY
menjadi MARKETING
.
curl 'https://graph.facebook.com/v19.0
/1252715608684590' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"category": "MARKETING"
}'
Contoh tanggapan jika berhasil.
{ "success": true }
Gunakan endpoint Akun WhatsApp Business > Pesan Template untuk menghapus template berdasarkan nama atau ID.
PENDING_DELETION
dan kami akan mencoba untuk mengirimkan pesan selama 30 hari. Setelah waktu ini Anda akan menerima kesalahan "Struktur Tidak Tersedia" dan pelanggan tidak akan menerima pesan.Menghapus template berdasarkan nama akan menghapus semua template yang cocok dengan nama itu (artinya template dengan nama yang sama tetapi dalam bahasa yang berbeda juga akan dihapus).
DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates ?name=<NAME>
curl -X DELETE 'https://graph.facebook.com/v16.0/102290129340398/message_templates?name=order_confirmation' \ -H 'Authorization: Bearer EAAJB...'
{ "success": true }
Untuk menghapus template berdasarkan ID, sertakan ID template bersama dengan namanya dalam permintaan Anda; hanya template dengan ID template yang cocok yang akan dihapus.
DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates ?hsm_id=<HSM_ID>, &name=<NAME>
curl -X DELETE 'https://graph.facebook.com/v19.0
/102290129340398/message_templates?hsm_id=1407680676729941&name=order_confirmation' \
-H 'Authorization: Bearer EAAJB...'
{ "success": true }