Whatsapp adalah instant messanging yang paling banyak digunakan di Indonesia, akan sangat bermanfaat jika kita bisa membuat bot nya dan kali ini kita akan mencoba membuat sebuah bot Whatsapp simple dengan NodeJS!

Yang Dibutuhkan

  • VPS (opsional, bisa nitip di VPS adminnya)
  • Akun Onesender
  • Akun Whatsapp
  • Akun Replit (untuk hosting kode NodeJs)

Apa Itu Onesender?

https://onesender.net adalah aplikasi WhatsApp API (unofficial). Tool sudah digunakan sebagai media notifikasi toko online, website, alat absensi, notifikasi layanan vaksin Covid 19 atau juga bot

Dibanding official API yang harganya sangat mahal karena biayanya perpesan, Onesender menawarkan biaya yang lebih murah dengan skema berlangganan tanpa batas berapa jumlah pesan yang bisa kita kirim.

Install OneSender

Untuk proses instalasinya, kalian PM saja adminnya untuk dibantu proses install.

Onesender bisa diinstall di VPS atau bisa juga di komputer kalian sendiri, tergantung kebutuhan kalian. kalau saya sendiri menginstallnya di VPS agar hidup 24 jam nonstop.

Pairing

Proses pairingnya sangat gampang, kalian tinggal login ke dashboard Onesender lalu scan QR codenya menggunakan Whatsapp yang terinstall di HP kalian.

Kalian perlu beberapa detail yang ada di dashboard Onesender untuk kita gunakan dalam proses penulisan kode nanti

  • API url
  • API key

Koding Time

Saya disini menggunakan https://replit.com/ untuk menghosting kode NodeJs yang akan kita gunakan untuk webhook.

Buat sebuah project baru dengan bahasa NodeJs dan install package express , axios dan body-parser

Buat dahulu webhook sederhana untuk melihat data seperti apa yang dikirim oleh OneSender ke webhook

const express = require('express');
const app = express();
const axios = require('axios');
const bodyParser = require('body-parser');

app.use(bodyParser.json());

app.get('/', (req, res) => {
  res.send("hello world");
});

app.post('/webhook', (req, res) => {
  res.status(200).send('ok');
  
  console.log(req.body);

});
  app.listen(process.env.PORT || 5000, async () => {
    console.log('🚀 app running on port', process.env.PORT || 5000)
  })

Kode di atas akan membuat url /webhook sebagai contoh disini url yang saya buat adalah https://onesender.kripul.repl.co/webhook

Buka setting di dashboard Onesender dan ubah konfigurasi webhooknya ke url replit yang barusan kita buat.

Sekarang kita coba kirim chat ke nomor Whatsapp yang sudah kita pairing dengan Onesender, seharusnya akan muncul console log seperti

{
  messages: [
    {
      from: '[email protected]',
      id: '7C6D721E4094851CE807B3DEE6C5C24C',
      text: {
      	body: 'isi pesan yang dikirim ke nomor whatsapp onesender'
      },
      timestamp: '2022-07-03T10:12:47.356Z',
      type: 'text'
    }
  ]
}

Mengirim Pesan

Kita sudah tahu data yang dikirim oleh Onesender, Sekarang kita akan membuat kode untuk membalas chat yang masuk.

Jika ada pesan yang masuk secara otomatis kita akan membalas pesan tersebut menggunakan API dari Onesender, kalian bisa melihat contoh-contoh penggunaan API nya di https://documenter.getpostman.com/view/11282121/Uyr8md8U

Disini saya menggunakan axios , kita ubah kode yang sebelumnya kita gunakan menjadi seperti di bawah

const express = require('express');
const app = express();
const axios = require('axios');
const bodyParser = require('body-parser');


app.use(bodyParser.json());

app.get('/', (req, res) => {
  res.send("hello world");
});
app.post('/webhook', (req, res) => {
  res.status(200).send('ok');

  // get whatsapp number
  const rawnumber = req.body.messages[0].from;
  const wanumber = rawnumber.substring(0, rawnumber.lastIndexOf("@"));
  const isipesan = req.body.messages[0].text.body;

  // sending messages using axios
  axios({
    method: 'post',
    url: process.env['APIURL'],
    headers: { 
      'Authorization': process.env['APIKEY']
    },
  data: {
    recipient_type: 'individual',
    to: wanumber,
    type: 'text',
    text: {
      body: isipesan
    }
  }
}).then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});;

});
  // Listening
  app.listen(process.env.PORT || 5000, async () => {
    console.log('🚀 app running on port', process.env.PORT || 5000)
  })

Silahkan coba kirim pesan lagi ko nomor Whatsapp yang sudah kita pairing, nomor tersebut akan membalas pesan kita secara otomatis.

Kode di atas hanya sekedar contoh simple nya saja, kalian bisa mengkreasikan sendiri. Yang terpenting adalah kita mendapatkan isi pesan yang masuk dan nomor pengirim pesan.

Jika kalian butuh bantuan, kalian bisa menghubungi saya di Hubungi Saya nanti akan saya berikan juga kupon untuk harga spesial berlangganan Onesender :D

Kode di atas bisa kalian akses di https://replit.com/@kripul/onesender?v=1

FAQ

Q : Apa bisa menghosting kodenya di shared hosting?

A : Bisa, asal hostingnya support NodeJs

Q : Nomor Whatsapp nya aman?

A : Aman-aman saja jika tidak digunakan untuk spaming