Unified Developer API
Integrasikan WhatsApp, Telegram, Messenger, dan Instagram ke dalam aplikasi Anda hanya dengan satu API tunggal. Kelola pesan keluar dan terima notifikasi real-time dengan mudah.
Rate Limits
Maksimal 60 request per menit untuk setiap API Key yang aktif.
Protocols
Sistem API kami hanya menerima request dengan format JSON via HTTPS.
Base URL
https://app.cloudchat.id/api/public/v1
Authentication
Sistem CloudChat menggunakan metode Bearer Token. Letakkan API Key rahasia Anda di dalam HTTP Header Authorization.
Jaga Kerahasiaan API Key Anda!
Jangan pernah memasukkan API Key di dalam kode sisi-klien (seperti Javascript di Browser atau Aplikasi Mobile). Jika kunci Anda bocor, segera lakukan Regenerate Key di halaman pengaturan App.
Contoh Header HTTP
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
Send Text Message (Unofficial)
Endpoint ini digunakan untuk mengirim pesan teks biasa ke nomor tujuan. Digunakan khusus jika Aplikasi Anda ditautkan dengan WhatsApp Unofficial (Scan QR).
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"channel": "whatsapp",
"type": "text",
"to": "6281234567890",
"content": {
"text": "Halo! Ini adalah pesan teks dari CloudChat API."
}
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Penting:
Pastikan nomor tujuan to selalu menggunakan kode negara tanpa awalan '+' atau '0'. Contoh yang benar: 6281234567890.
Send Media (Unofficial)
Kirim file media seperti Gambar (JPG, PNG), Video (MP4), atau Dokumen (PDF). Pastikan URL media yang dilampirkan dapat diakses oleh publik (Publicly Accessible).
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"channel": "whatsapp",
"type": "image",
"to": "6281234567890",
"url": "https://cloudchat.id/assets/sample.jpg",
"media_url": "https://cloudchat.id/assets/sample.jpg",
"content": {
"caption": "๐ Promo Spesial Hari Ini! Dapatkan diskon 50%."
}
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Perhatian Parameter Media:
Untuk melewati sistem validasi keamanan kami, Anda wajib menyertakan parameter url di luar struktur content (seperti pada contoh di atas).
- url : (Wajib) Tautan langsung ke file media Anda.
- content.caption : (Opsional) Teks keterangan di bawah gambar/video.
Check WA Number
Endpoint ini digunakan untuk memvalidasi apakah sebuah nomor terdaftar aktif di WhatsApp. Parameter session_id bersifat opsional jika API Key Anda hanya terhubung ke 1 device WhatsApp.
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"phone": "6281234567890"
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/check-number',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Contoh Respons API:
API akan mengembalikan JSON dengan parameter is_registered bernilai true atau false.
{
"success": true,
"message": "Nomor terdaftar di WhatsApp.",
"data": {
"phone": "6281234567890",
"jid": "[email protected]",
"is_registered": true
}
}Send Template (Unofficial)
Gunakan endpoint ini untuk mengirim pesan interaktif yang sudah Anda desain di menu Bot Templates. Sistem akan secara otomatis menyisipkan variabel dan menggabungkannya dengan media/tombol yang telah Anda atur di dashboard.
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"to": "6281234567890",
"template_id": 12,
"variables": [
"Budi Santoso",
"Rp 500.000"
]
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/send-template',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Penjelasan Parameter:
- to : (Wajib) Nomor WhatsApp tujuan.
- template_id : (Wajib) ID Template (Dapat disalin dari halaman Templates).
- variables : (Opsional) Array yang berisi teks pengganti untuk variabel {{1}}, {{2}}, dst di dalam konten template Anda.
Send Message (Meta Official)
Gunakan Endpoint khusus ini untuk membalas pesan dengan teks atau media biasa tanpa menggunakan template. Endpoint ini HANYA BERLAKU jika Anda membalas pelanggan dalam batas waktu Jendela 24-Jam Meta.
Endpoint Meta:
Selalu gunakan /api/public/v1/meta/messages untuk WhatsApp Official.
Contoh Mengirim Teks:
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"to": "6281234567890",
"type": "text",
"text": "Halo! Ini adalah balasan cepat via WhatsApp Official API."
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/meta/messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Catatan untuk Media (Official):
Jika Anda ingin mengirim media dalam 24 jam (tanpa template), Anda cukup mengubah type menjadi "image", "video", atau "document", lalu tambahkan parameter "media_url": "https://..." dan "text": "Caption media" pada payload di atas.
Send Media (Meta Official)
Gunakan endpoint ini untuk mengirim file media seperti Gambar (JPG/PNG), Video (MP4), Dokumen (PDF), atau Audio tanpa menggunakan template. Endpoint ini HANYA BERLAKU dalam batas Jendela 24-Jam percakapan aktif Meta.
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"to": "6281234567890",
"type": "image",
"media_url": "https://cloudchat.id/assets/promo.jpg",
"text": "๐ Promo Spesial Hari Ini! Dapatkan diskon 50%."
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/meta/messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Parameter Media:
- type : Ganti dengan "image", "video", "document", atau "audio".
- media_url : (Wajib) Tautan publik ke file media Anda. Pastikan diawali dengan https://.
- text : (Opsional) Caption atau keterangan teks di bawah media gambar/video.
Send Template (Meta Official)
Gunakan Endpoint khusus ini hanya jika Anda memulai percakapan baru di luar jendela 24-jam. Anda wajib mengirimkan Template yang sudah disetujui Meta.
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"to": "6281234567890",
"type": "template",
"template_name": "hello_world",
"language": "id",
"components": {
"header_image": "https://cloudchat.id/assets/promo.jpg",
"body_variables": [
"Budi Santoso",
"Rp 500.000",
"25 Maret 2026"
]
}
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/meta/messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Penjelasan Payload Template
- template_name : (Wajib) Nama template Anda persis seperti yang ada di Dashboard Meta Business Manager.
- language : (Wajib) Kode bahasa template. Contoh:
iduntuk Bahasa Indonesia,en_USuntuk English. - components.header_image : (Opsional) URL gambar publik jika template Anda memiliki header bertipe IMAGE. Ganti key menjadi
header_videoatauheader_documentsesuai tipe header template Anda. - components.body_variables : (Opsional) Array berisi teks pengganti untuk variabel {{1}}, {{2}}, {{3}}, dst di dalam body template. Urutan harus sesuai dengan posisi variabel di template.
Penting: Sinkronisasi Template
Agar isi template tampil lengkap di Inbox CloudChat (bukan hanya [Template]: nama_template), Anda wajib melakukan sinkronisasi template terlebih dahulu di menu Pengaturan → WhatsApp Official → Sinkronisasi Template. Tanpa sinkronisasi, pesan tetap terkirim ke penerima dengan benar, namun tampilan di Inbox hanya menampilkan nama template saja.
Contoh Lengkap: Template dengan 4 Variabel
Jika template Anda memiliki body: "Halo {{1}}, hasil: {{2}}, diagnosis: {{3}}, oleh {{4}}", maka payload-nya:
{
"to": "6281234567890",
"type": "template",
"template_name": "hasil_crm_aktivasi",
"language": "id",
"components": {
"body_variables": [
"Budi Santoso",
"Normal",
"Tidak ada kelainan",
"Klinik Mata"
]
}
}Send Interactive (Meta Official)
Kirim pesan interaktif (tombol reply, list menu dropdown, dll) murni bergaya WhatsApp Official Meta. Hanya dapat digunakan dalam jendela 24-jam percakapan. Anda memiliki kontrol penuh pada struktur JSON di dalam objek content.
<?php
$curl = curl_init();
// Payload JSON yang dikirimkan
$payload = '{
"to": "6281234567890",
"type": "interactive",
"content": {
"type": "button",
"header": {
"type": "text",
"text": "๐ PROMO SPESIAL"
},
"body": {
"text": "Apakah Anda ingin mengambil diskon 50% hari ini?"
},
"footer": {
"text": "Berlaku hingga besok"
},
"action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "AMBIL_PROMO",
"title": "Ya, Ambil!"
}
},
{
"type": "reply",
"reply": {
"id": "TOLAK_PROMO",
"title": "Tidak, Makasih"
}
}
]
}
}
}';
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.cloudchat.id/api/public/v1/meta/messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Struktur Media (Meta Official API)
Berbeda dengan Unofficial, pada Meta Official media Wajib diletakkan di dalam objek header. Anda bisa menyesuaikan tipe medianya dengan mengubah value type menjadi image, video, atau document sesuai kebutuhan file yang dikirim.
Fleksibilitas Penuh:
Endpoint ini meneruskan 100% isi dari objek content Anda langsung ke Meta. Silakan sesuaikan strukturnya dengan dokumentasi resmi Meta API untuk mengirim List Messages, CTA URL, atau Catalog.
Katalog Payload Interaktif Meta
Tipe: CTA URL (Tombol Link)
Ganti objek action pada payload di atas menjadi seperti ini untuk membuat tombol yang membuka website:
"action": {
"name": "cta_url",
"parameters": {
"display_text": "Kunjungi Website",
"url": "https://www.labtik.com"
}
}Tipe: Copy Offer Code
Ganti objek action untuk membuat tombol yang menyalin kode promo ke clipboard pengguna secara otomatis:
"action": {
"name": "copy_code",
"parameters": {
"display_text": "Salin Kode",
"id": "PROMO2026"
}
}Tipe: List Message (Menu Dropdown)
Ganti keseluruhan objek content dengan format JSON ini untuk membuat menu dropdown (maksimal 10 opsi):
{
"type": "list",
"header": { "type": "text", "text": "Menu Utama" },
"body": { "text": "Silakan pilih layanan yang Anda butuhkan di bawah ini." },
"footer": { "text": "CloudChat Automation" },
"action": {
"button": "Lihat Daftar Menu",
"sections": [
{
"title": "Produk & Layanan",
"rows": [
{ "id": "MENU_PRODUK", "title": "Daftar Produk", "description": "Lihat katalog lengkap kami" },
{ "id": "MENU_HARGA", "title": "Pricelist", "description": "Daftar harga terbaru" }
]
},
{
"title": "Bantuan",
"rows": [
{ "id": "MENU_CS", "title": "Hubungi CS", "description": "Chat langsung dengan agen" }
]
}
]
}
}Webhooks (Terima Pesan)
Terima data secara real-time ke server Anda setiap kali ada pesan masuk. Anda dapat menggunakan Webhook ini untuk membuat sistem Auto-Reply, Chatbot AI, atau merekam data ke database Anda.
1Format Webhook WA Unofficial
Jika aplikasi Anda ditautkan dengan WhatsApp Unofficial, sistem kami akan mengirimkan JSON ini ke URL Anda:
{
"event": "message.received",
"channel": "whatsapp",
"session_id": "SESSION_12345",
"data": {
"message_id": "msg_987654321",
"from": "6281234567890",
"sender_name": "Budi Santoso",
"type": "text",
"text": "test",
"media_url": null,
"button_id": null,
"timestamp": 1709650000
}
}2Format Webhook WA Official (Meta)
Jika aplikasi Anda ditautkan dengan Meta Official, sistem kami akan langsung mem-forward JSON asli (Struktur Entry/Changes/Messages) dari server Meta:
{
"object": "whatsapp_business_account",
"entry": [
{
"id": "1234567890",
"changes": [
{
"value": {
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "628123456789",
"phone_number_id": "987654321"
},
"contacts": [
{
"profile": { "name": "Budi Santoso" },
"wa_id": "6281234567890"
}
],
"messages": [
{
"from": "6281234567890",
"id": "wamid.HBgNNjI4M...",
"timestamp": "1709650000",
"text": { "body": "Halo, mau pesan!" },
"type": "text"
}
]
},
"field": "messages"
}
]
}
]
}3Contoh Auto-Reply PHP (Untuk WA Unofficial)
<?php
/**
* CLOUDCHAT WEBHOOK - PHP 7.0+ ULTIMATE VERSION
* Fitur: Handle Teks, Promo (Gambar+Tombol), Media Inbound, & Anti-Timeout
*/
// 1. Respon 200 OK & Tutup koneksi segera agar CloudChat tidak timeout (2 detik limit)
http_response_code(200);
header('Content-Type: application/json; charset=utf-8');
// Memutus koneksi ke client tapi script tetap jalan di background
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
// 2. Tangkap data Webhook
$json = file_get_contents('php://input');
$payload = json_decode($json, true);
// Proteksi: Hanya proses jika ada data pesan masuk
if (!isset($payload['event']) || $payload['event'] !== 'message.received') {
exit;
}
// Ekstrak data menggunakan fitur PHP 7 (Null Coalescing Operator ??)
$sender = $payload['data']['from'] ?? '';
$msgType = $payload['data']['type'] ?? 'text'; // image, video, document, text
$msgText = strtolower($payload['data']['text'] ?? "");
$incomingMedia = $payload['data']['media_url'] ?? null;
/**
* 3. FUNGSI HELPER: BALAS PESAN UNIVERSAL
* Bisa kirim teks, tombol, dan melampirkan gambar sekaligus.
*/
function sendReply($to, $type, $content, $mediaUrl = null) {
$apiUrl = "https://app.cloudchat.id/api/public/v1/messages";
$apiKey = "YOUR_API_KEY_RAHASIA"; // Ganti dengan API Key milik Anda
$postData = [
"channel" => "whatsapp",
"to" => $to,
"type" => $type,
"content" => $content
];
// Jika tipe pesan butuh lampiran media luar (seperti gambar di atas tombol)
if ($mediaUrl) {
$postData["media_url"] = $mediaUrl;
}
$curl = curl_init($apiUrl);
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($postData),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . $apiKey,
"Content-Type: application/json"
],
CURLOPT_TIMEOUT => 10
]);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
/**
* 4. LOGIKA AUTO-REPLY LENGKAP
*/
// SKENARIO A: Jika User Mengirim Gambar (Media)
if ($msgType === 'image') {
$content = [
"text" => "Wah, fotonya keren banget! ๐ Mau di-edit pakai teknologi AI Cloudchat?",
"footer" => "CloudChat Media Service",
"buttons" => [
["id" => "edit_yes", "text" => "Ya, Edit Pakai AI"],
["id" => "edit_no", "text" => "Gak, Simpan Saja"]
]
];
// Balas pakai tombol interaktif
sendReply($sender, "button", $content);
}
// SKENARIO B: Jika User Mengetik "promo" (Keyword)
elseif ($msgText === "promo") {
$content = [
"title" => "๐ PROMO TERBATAS",
"text" => "Dapatkan diskon 50% untuk langganan CloudChat hari ini saja!",
"footer" => "Klik tombol di bawah ini:",
"buttons" => [
["id" => "claim", "text" => "Ambil Promo"],
["id" => "cs", "text" => "Tanya Admin"]
]
];
// Kirim Balasan: Gambar Promo + Tombol Pilihan
sendReply($sender, "button", $content, "https://app.cloudchat.id/icons/twitter-x.png");
}
// SKENARIO C: Jika User Mengetik "test"
elseif ($msgText === "test") {
$replyText = [
"text" => "Sistem CloudChat berjalan sempurna! โ
\n\nNomor Anda: " . $sender . "\nWaktu: " . date("H:i:s")
];
sendReply($sender, "text", $replyText);
}
// SKENARIO D: Jika user klik tombol (Handle Button Click)
elseif (isset($payload['data']['button_id'])) {
$buttonId = $payload['data']['button_id'];
sendReply($sender, "text", ["text" => "Anda baru saja memilih aksi: " . $buttonId]);
}
exit;
?>4Contoh Auto-Reply PHP (Untuk WA Official Meta)
Script ini mengekstrak JSON dari struktur Meta dan membalas pesan teks biasa langsung ke endpoint /meta/messages.
<?php
/**
* CLOUDCHAT WEBHOOK - WHATSAPP OFFICIAL (META API)
* PHP 7.4+ MODERN VERSION
*/
// 1. Respon 200 OK ke Meta SECEPAT MUNGKIN
http_response_code(200);
header('Content-Type: application/json; charset=utf-8');
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
// 2. Tangkap data Webhook Meta
$json = file_get_contents('php://input');
$payload = json_decode($json, true);
if (!isset($payload['object']) || $payload['object'] !== 'whatsapp_business_account') {
exit;
}
$value = $payload['entry'][0]['changes'][0]['value'] ?? [];
$message = $value['messages'][0] ?? null;
if (!$message) exit;
$sender = $message['from'];
$msgType = $message['type'];
$msgText = strtolower($message['text']['body'] ?? "");
/**
* 3. FUNGSI BALAS PESAN OFFICIAL (UPDATE: SUPPORT IMAGE)
*/
function sendMetaReply($to, $type, $content) {
$apiUrl = "https://app.cloudchat.id/api/public/v1/meta/messages";
$apiKey = "YOUR_API_KEY_RAHASIA";
$postData = [
"to" => $to,
"type" => $type
];
// LOGIKA PENYUSUNAN PAYLOAD BERDASARKAN TIPE
if ($type === 'interactive') {
$postData['content'] = $content;
} elseif ($type === 'image') {
// Format kirim gambar standalone (Meta Style)
$postData['image'] = [
"link" => $content // Content berisi URL Gambar
];
} else {
// Teks biasa
$postData['text'] = [
"body" => $content
];
}
$curl = curl_init($apiUrl);
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($postData),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . $apiKey,
"Content-Type: application/json"
],
CURLOPT_TIMEOUT => 10
]);
curl_exec($curl);
curl_close($curl);
}
/**
* 4. LOGIKA AUTO-REPLY LENGKAP
*/
// SKENARIO A: Jika User Mengirim Gambar -> Balas dengan Gambar juga
if ($msgType === 'image') {
sendMetaReply($sender, "image", "https://app.cloudchat.id/icons/twitter-x.png");
}
// SKENARIO B: Jika User Mengetik "promo" -> Balas pakai GAMBAR + TOMBOL
elseif ($msgText === "promo") {
$interactive = [
"type" => "button",
"header" => [
"type" => "image", // ๐ KITA PASANG GAMBAR DI HEADER TOMBOL
"image" => [
"link" => "https://app.cloudchat.id/icons/twitter-x.png"
]
],
"body" => [
"text" => "Halo! Ini promo khusus Meta Official dengan gambar di atas."
],
"footer" => [
"text" => "CloudChat Official"
],
"action" => [
"buttons" => [
["type" => "reply", "reply" => ["id" => "claim", "title" => "Ambil Promo"]]
]
]
];
sendMetaReply($sender, "interactive", $interactive);
}
// SKENARIO C: Jika User Mengetik "foto" -> Kirim Gambar Standalone
elseif ($msgText === "foto") {
sendMetaReply($sender, "image", "https://app.cloudchat.id/icons/sample-banner.png");
}
// SKENARIO D: Jika User Mengetik "test"
elseif ($msgText === "test") {
sendMetaReply($sender, "text", "Sistem Official Aktif & Mendukung Kirim Gambar! ๐ธ");
}
exit;
?>Error Reference
Daftar kode status HTTP yang mungkin dikembalikan oleh API kami jika terjadi kegagalan.
| HTTP Status Code | Deskripsi / Solusi |
|---|---|
| 400 Bad Request |
Parameter tidak valid atau tidak lengkap. Pastikan Anda telah mengirimkan data sesuai struktur JSON yang diminta. |
| 401 Unauthorized |
Otentikasi Gagal. API Key Anda tidak dimasukkan di header, salah ketik, atau telah dihapus. |
| 403 Forbidden |
Akses Ditolak. Aplikasi Anda telah dinonaktifkan, atau mencoba mengirim ke channel yang belum di-mapping. |
| 500 Server Error |
Gangguan Gateway. Sistem kami sedang mengalami kendala, atau perangkat Anda terputus koneksinya. |