Webhook adalah salah satu fitur OneSender (dalam pengembangan). Cara kerja webhook yaitu mengirimkan pesan masuk (inbox) ke url external. Fitur ini dapat Anda kembangkan lebih lanjut untuk membuat sistem bot atau responser.
Ilustrasi webhook OneSender seperti ilustrasi di bawah.
1. User kirim pesan WhatsApp
2. OneSender mengirimkan pesan tersebut ke url external / message processor.
3. Message processor mengirimkan pesan respond ke OneSender.
4. OneSender mengirimkan pesan respond ke user.
Jika anda familiar dengan webhook Telegram, cara kerja webhook OneSender hampir sama.
Mengaktifkan fitur OneSender #
Fitur ini masih dalam tahap pengembangan. Untuk mengaktifkannya Anda perlu mengubah file config.yaml dan entry pengaturan di database.
File config.yaml #
whatsapp: record_inbox: true webhook: enabled: true instant: false token_name: ApiKey token_value: 123456789 url: https://eniu033vm7j9.x.pipedream.net
Keterangan setting #
– enabled: mengaktifkan webhook. true = aktif, false = tidak aktif
– instant: pesan dikirim seketika atau mengunggu OneSender menyelesaikan sending job lain. true = aktif, false = tidak aktif. Jika pesan webhook tidak terkirim isi dengan false.
– token_name: nama entry request header untuk otorisasi. Wajib diisi. Contoh: ApiKey
– token_value: isi token header. Wajib diisi. Contoh: 384782347328947sdfsfd
– url: endpoint webhook.
Tabel setting #
Silahkan ubah tabel kirimwa_settings. Lalu ubah entry setting sebagai berikut: webhook.enabled, webhook.header_key, webhook.header_value, webhook.instant, webhook.url.
Keterangan setting #
– webhook.enabled: mengaktifkan webhook. 1 = aktif, 0 = tidak aktif
– webhook.instant: pesan dikirim seketika atau mengunggu OneSender menyelesaikan sending job lain. 1 = aktif, 0 = tidak aktif. Jika pesan webhook tidak terkirim isi dengan 0.
– webhook.header_key: nama entry request header untuk otorisasi. Wajib diisi. Contoh: ApiKey
– webhook.header_value: isi token header. Wajib diisi. Contoh: 384782347328947sdfsfd
– webhook.url: endpoint webhook.
Format webhook #
Berikut ini contoh pesan yang dikirim oleh OneSender ke url external/message processor.
Person #
{ "contact": { "name": "John Snow", "phone": "628120000001", "type": "person" }, "created_at": "2021-11-15T00:54:31.024Z", "message": "Hello apa kabar?", "received_at": "2021-11-15T00:54:30Z", "token": "5028BD042FB9EB4F38EC6746D7A8486D" }
Group #
{ "contact": { "name": "Mentoring Bisnis #1", "phone": "628120000001-1473638645", "type": "group" }, "created_at": "2021-11-15T00:55:46.284Z", "message": "Message to group", "received_at": "2021-11-15T00:55:45Z", "token": "C362823D61BC895DF11D3D06DC74321C" }
Contoh Penerapan #
PHP #
function send_wa($phone, $message) { $authorization = "Authorization: Bearer _GANTI_DENGAN_TOKEN_ANDA_"; $url = 'http://_GANTI_DENGAN_URL_ONESENDER_ANDA_/api/send/text'; $curl = curl_init(); $messageObj = [ 'phone' => $phone, 'message' => $message, ]; curl_setopt_array($curl, array( CURLOPT_URL => $url, 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 => json_encode($messageObj), CURLOPT_HTTPHEADER => array( $authorization, 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); return $response; } function command_info($input) { $message = "🤖 Hi.. ini adalah pesan otomatis yang dikirim sistem. Anda dapat menggunakan command berikut: */faq* Informasi seputar product OneSender */beli* Link pembelian OneSender */support* Link support */info* Menampilkan pesan ini "; echo send_wa( $input->contact->phone, $message ); } $rawData = file_get_contents("php://input"); $input = json_decode( $rawData ); if (json_last_error() == JSON_ERROR_NONE) { $command = strtolower( $input->message ); switch($command) { case '/info': command_info($input); break; } }