Membuat whatsapp bot dengan PHP

Chatbot statis berguna untuk menjawab pertanyaan user yang hanya membutuhkan informasi-informasi umum, seperti FAQ.

Namun untuk informasi yang bersifat dinamis, seperti ketersediaan stok, harga yang berubah-ubah, detail profil user, dan sebagainya, dashboard fonnte tidak bisa membantu lebih jauh.

Disinilah penggunaan webhook akan berguna.

Kamu bisa membuat informasi apapun yang dibutuhkan secara dinamis dan realtime langsung dari database dengan menggunakan webhook

Tutorial ini memerlukan pemahaman dasar tentang bahasa pemrograman PHP. Kalau kamu belum memiliki pengalaman menuliskan kode atau tidak tahu harus melakukan apa, sebaiknya pertimbangkan untuk menggunakan jasa developer.

Prasyarat

Sebelum menggunakan API ini, kamu harus mendaftar kalau belum punya akun, kemudian login dan tambah device.

Copy token (API key) yang ada di menu device untuk digunakan sebagai authorization saat mengirimkan API.

Lalu, konekkan device sebelum mulai mengirimkan pesan.

Gunakan libcurl terbaru dengan versi PHP diatas 7.1 sebagaimana diperlukan dalam sebagai requirement oleh PHP.

Referensi API lengkap ada di halaman dokumentasi fonnte dan postman.

Kode webhook

Dengan menggunakan webhook fonnte, kamu bisa membuat whatsapp bot secara dinamis sesuai dengan isi database.

Tapi tidak perlu khawatir, kami tidak bisa mengakses database yang dipakai.

Semua kode tetap berada di server sendiri.

Kamu hanya perlu menginput url filenya ke inputan webhook di menu device->edit

Pertama-tama, copy kode dibawah ini

<?php
header('Content-Type: application/json; charset=utf-8');

$json = file_get_contents('php://input');
$data = json_decode($json, true);
$device = $data['device'];
$sender = $data['sender'];
$message = $data['message'];
$member= $data['member']; //group member who send the message
$name = $data['name'];
$location = $data['location'];
//data below will only received by device with all feature package
//start
$url =  $data['url'];
$filename =  $data['filename'];
$extension=  $data['extension'];
//end

function sendFonnte($target, $data) {
	$curl = curl_init();

	curl_setopt_array($curl, array(
	  CURLOPT_URL => "https://api.fonnte.com/send",
	  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 => array(
	    	'target' => $target,
	    	'message' => $data['message'],
	    	'url' => $data['url'],
	    	'filename' => $data['filename'],
	    ),
	  CURLOPT_HTTPHEADER => array(
	    "Authorization: TOKEN"
	  ),
	));

	$response = curl_exec($curl);

	curl_close($curl);

	return $response;
}

if ( $message == "test" ) {
	$reply = [
		"message" => "working great!",
	];
} elseif ( $message == "image" ) {
	$reply = [
		"message" => "image message",
		"url" => "https://filesamples.com/samples/image/jpg/sample_640%C3%97426.jpg",
	];
} elseif ( $message == "audio" ) {
	$reply = [
	        "message" => "audio message",
		"url" => "https://filesamples.com/samples/audio/mp3/sample3.mp3",
		"filename" => "music",
	];
} elseif ( $message == "video" ) {
	$reply = [
		"message" => "video message",
		"url" => "https://filesamples.com/samples/video/mp4/sample_640x360.mp4",
	];
} elseif ( $message == "file" ) {
	$reply = [
		"message" => "file message",
		"url" => "https://filesamples.com/samples/document/docx/sample3.docx",
		"filename" => "document",
	];
} else {
	$reply = [
		"message" => "Sorry, i don't understand. Please use one of the following keyword :
		    
Test
Audio
Video
Image
File",
];
}

sendFonnte($sender, $reply);

Fungsi sendFonnte bisa menggunakan seluruh API parameter yang tersedia di API fonnte

Kamu bisa mendapatkan data dari database dan membuat balasannya.

Kemudian. simpan kode ini dan input absolute urlnya ke inputan webhook di menu device->edit.

Url ini wajib bersifat public.

Contoh : https://fonnte.com/urlwebhook.php

Yang terakhir dan yang paling penting adalah mengubah setting autoread ke on.

Setting ini ada dibawah inputan url webhook.

Dengan demikian, devicenya sudah bisa membalas pesan whatsapp dengan dinamis.

17 thoughts on “Membuat whatsapp bot dengan PHP”

  1. apakah fonnte ini hanya mendukung bahasa pemrograman php? bagaimana jika membuat chatbot dengan berbasis python, apakah bekerja dengan baik?

    Reply
  2. Mau nanya min, misalnya kalau ada http request selain dari fonnte ke webhook server kita kan harusnya kita kasih semacam signature gitu ya kan? Tapi masalahnya gk ada signature yg dikirim fonnte ke webhook kita dan di kita juga ada credential pembanding, bisa jadi nanti ada request dari luar fonnte yang ngasih request ke dalam webhook kita jadi bahaya nih, jadi gimana ya? Soalnya kalau di payment gateway mereka ada semacam signature/tanda tangan dari kode transaksi tertentu, jadi di fonnte gk ada ngirimin credential gitu?

    Reply
    • untuk signature belum ada mas di webhook memang, nanti bakal diupdate. sudah ada di roadmap, cuma belum dibuat fiturnya, masih nunggu antrian dari fitur2 lainnya dulu

      Reply
  3. Saya mencoba di beberapa aplikasi saya sudah berhasil kirim WA ke personal. Yang saya tanayakan, bagaimana caranya jika kirim WAnya ke Group WA ?? Mohon Pencerahannya, terimakasih..

    Reply

Leave a Comment