Akhdani Tech Talk 2021 Series #1 – Otomatisasi Pekerjaan Menggunakan Bot WhatsApp

Otomatisasi Pekerjaan Menggunakan Bot WhatsApp

Oleh: Gita Marshelina, Wiby Putra Adyan Ramdhani, Aria Enggar Pamungkas

Masalah dan Ide

WhatsApp hingga saat ini masih dipakai oleh semua anggota tim di lingkungan PT Akhdani Reka Solusi (ARS) sebagai media komunikasi. Bagaimana jika kita bisa memanfaatkan WhatsApp untuk lebih jauh lagi? Dalam lingkungan ARS pada pekerjaan HokBen Rework, bot WhatsApp mulai digunakan untuk otomatisasi pengecekan sumber daya server dan rekapitulasi pembayaran hanya dengan mengirim pesan tertentu pada jalur grup. Berdasarkan hal tersebut, kita bisa memanfaatkan bot ini sebagai portal untuk memudahkan pekerjaan kita yang berulang-ulang, seperti melihat rekap laporan harian (daily report), detail info proyek, hingga integrasi dengan tools lain seperti Trello atau Airtable untuk melihat status atau detil tugas yang diberikan.

Rencana Implementasi

1. Menggunakan Bot WhatsApp

Bot WhatsApp yang digunakan bukan dari API resmi WhatsApp, melainkan proyek open source dari

https://github.com/open-wa/wa-automate-nodejs

Instalasi library ini membutuhkan syarat berikut:

  • Kebutuhan Perangkat Keras
    1. Satu buah server, bisa sebuah PC/laptop ataupun VPS.
    2. Smartphone yang terkoneksi internet
  • Kebutuhan Perangkat Lunak
    1. NodeJS
    2. PHP
    3. Database
  • Tahapan Instalasi

Untuk instalasi sistem yang perlu dilakukan adalah:

  1. Instalasi dan konfigurasi library dan software yang diperlukan
  2. Membuat script sesuai kebutuhan
  3. Scan QR code
    2. Cara kerja sistem Bot WhatsApp

Pada dasarnya library NodeJS tersebut akan menggunakan headless Chromium yang dikendalikan oleh library ini. Dari mulai membuka WhatsApp web dan menampilkan QR code yang kemudian akan dipindai menggunakan smartphone yang sudah dipasang aplikasi WhatsApp.

1

Gambar 1. Cara Kerja Sistem Bot WhatsApp

Setelah login menggunakan QR berhasil, library ini akan otomatis membaca DOM teks pesan yang masuk, baik melalui grup maupun pribadi untuk kemudian dibaca konten pesan tersebut. Jika konten pesan ada yang cocok dengan kata kunci yang sudah didefinisikan, maka library ini akan meneruskan eksekusi kode sesuai yang telah dibuat sebelumnya. Berikut contoh kode eksekusi yang telah dibuat:

2

Gambar 2. Contoh Kode

3. Skrip BOT Dinamis

Skrip bot yang dinamis akan membuat bot WhatsApp bisa menerima masukan dan mengerjakan tugas yang lebih beragam dan bisa ditambah sewaktu-waktu, untuk skrip ini direncanakan akan dibuat dalam bahasa pemrograman PHP. Untuk pengelolaan skripnya akan dibuatkan aplikasi web sebagai admin panel.

3

Gambar 3. Contoh Tampilan Halaman Index Admin Panel

4

Gambar 4. Contoh Tampilan Halaman Tambah Script 

4. Contoh Integrasi dengan Tools Lain
  • Trello dan Airtable

Trello dan Airtable keduanya menyediakan API untuk bisa diakses via HTTP Request.  Untuk info lebih lanjut perihal Trello dan Airtable bisa dibaca pada tautan berikut:

https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/
https://airtable.com/api
  • Mengambil data dari Google Sheet

Google menyediakan API untuk mengambil data dari dalam google sheet melalui script misalnya menggunakan PHP. Integrasi ini bisa dimanfaatkan misal untuk meminta data pelamar, data pegawai yang belum mengisi daily report, dan lain-lain. Untuk mengambil data dari Google Sheet bisa menggunakan cara pada tautan berikut: 

https://www.srijan.net/blog/integrating-google-sheets-with-php-is-this-easy-know-how
  • Jobstreet

Untuk mengambil lowongan perusahaan bisa menggunakan curl ke

http://157.230.35.21/jobstreet_api.php

yang sudah dikonfigurasi khusus untuk mengambil lowongan di PT Akhdani Reka Solusi.

  • Build aplikasi di Jenkins

Jenkins menyediakan API untuk melakukan job pada Jenkins misalnya build aplikasi yang telah dikonfigurasi sebelumnya menggunakan REST API. Untuk informasi lebih lengkap bisa dibaca pada tautan berikut:

https://www.jenkins.io/doc/book/using/remote-access-api/

Scheduled Meeting dari Google Calendar dan Zoom

Google menyediakan API untuk membuat event meeting menggunakan Google Calendar dan generate link Google Meet secara otomatis. Seperti halnya Zoom juga menyediakan API untuk membuat meeting. Langkahnya bisa dilakukan dengan cara yang terlampir pada tautan berikut:

https://developers.google.com/calendar/create-events
https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate

Dalam rencana implementasi, untuk membuat event meeting menggunakan curl dengan metode seperti berikut:

https://usefulangle.com/post/29/google-calendar-api-create-event-php

 Cara Pemakaian dan Contoh

Penggunaan bot ini dilakukan melalui dua cara, yaitu jalur grup atau jalur pribadi. Dari sisi server akan ditentukan juga mana perintah yang bisa direspon hanya melalui jalur pribadi atau bisa direspon di jalur grup. Gambar di bawah ini adalah contoh implementasi bot WhatsApp untuk info lowongan pekerjaan di ARS melalui jalur pribadi dan contoh mengubah gambar menjadi stiker melalui jalur grup:

5

Gambar 5. Contoh Respon Chat Bot Melalui Pesan Pribadi

6

Gambar 6. Contoh Respon Chat Bot Melalui Pesan Grup


Masalah yang Pernah Muncul

Pada penggunaan bot ini pernah mengalami masalah, di antaranya adalah:

  • Smartphone tidak terhubung ke internet.

Disarankan handphone harus dalam keadaan selalu terhubung ke jaringan internet. Jika sewaktu-waktu jaringan internet bermasalah dan pesan tidak diterima bot, bot akan tetap membalas pesan ketika internet kembali terhubung.

  • Session web WhatsApp berakhir.

Maka harus dilakukan scan QR code ulang.

  • Error pada script/modul.

Harus ada pengecekan atau testing berkala, memastikan script selalu uptodate.

Mengenal Keamanan API (Application Programming Interface)

API (Application Programming Interface) merupakan sekumpulan sintak yang berisi perintah atau fungsi yang dapat digunakan untuk berinteraksi dengan sistem operasi tertentu atau dengan sistem lainnnya. Sebuah API dapat diimplementasikan dengan menulis sintaks dalam program yang menyediakan sarana untuk meminta layanan program tersebut.

Sebagai contoh, Facebook menyediakan API sehingga para pengembang website dapat mengintegrasikan komentar di websitenya langsung melalui komentar akun Facebook si pengunjung, atau yang lebih spesifik lagi API Facebook juga dapat digunakan untuk membuat fungsi auto post artikel ke Facebook saat artikel di website ditambahkan. Semua ini dapat dilakukan karena Facebook menyediakan API untuk dapat mengakses sebagian fungsi dari program Facebook.

Berikut adalah ilustrasi permintaan layanan data pelanggan ke sistem (misalnya) X menggunakan API:

contoh-api

Sistem X mengembalikan data pelanggan sesuai dengan permintaan yang diminta oleh client dengan berbagai format data yang disediakan oleh sistem, misalnya JSON, XML, dan sebagainya. Pada contoh di atas, data yang dikirimkan oleh sistem X merupakan data pelanggan dan bisa dibayangkan apabila ketika data pelanggan yang dikirimkan kepada client di tengah jalan sebelum diambil oleh seseorang atau hacker untuk kepentingan yang tidak seharusnya? Misal data yang diambilnya adalah nomor telepon, alamat, dan nomor kartu kredit. Tentunya hal tersebut tidak boleh terjadi ketika menggunakan API. Oleh karena itu, API  harus didesain sebagus mungkin agar terhindar dari hal-hal semacam itu.

Ada tiga faktor utama yang menjadi sasaran hacker terhadap penggunaan API. Ketiga faktor itu adalah parameter, identitas, man-in-the-middle. Berikut adalah penjalasan dari ketiga faktor tersebut.

  1. Parameter, sasaran ini dilakukan dengan cara mengirimkan data input secara terus menerus kepada suatu fungsi API agar hacker mendapatkan data yang diinginkan olehnya, sepertinya misalnya data pelanggan. Para hacker dapat membaca respon balikan dari API, karena biasanya API mendefinisikan dengan jelas data balikan yang dikirim. Sasaran ini memang bukan hal baru, namun sering banyak digunakan karena kebanyakan developer mengabaikan untuk memfilter inputan pada api yang digunakan.
  2. Identitas, dilakukan dengan cara mengekploitasi kelemahan dari otentikasi, otorisasi dan penggunaan session. Kelemahan pada API dicari  karena kesalahan dalam mempraktekkan penggunaan otentikasi, otorisasi, dan session pada API. Dalam penggunaan API dalam suatu sistem, biasanya API pengirim memiliki suatu identitas (key) agar dikenali oleh API penerima. API key ini tersimpan pada aplikasi pengirim yang digunakan untuk keperluan autorisasi misalnya. Meskipun API key ini disimpan secara baik oleh pengirim API, biasanya API key mudah untuk ditemukan oleh hacker. Yang perlu digaris bawahi adalah jangan pernah memperlakukan API key sebagai sesuatu yang rahasia.
  3. Man-in-the-middle, pada hal ini, hacker memposisikan dirinya berada diantara pengirim API (client) dan penerima API. Hacker melakukannya dengan cara mengambil data yang dikirimkan oleh user, lalu mengubah data tersebut, dan diteruskan kepada penerima API. Hal ini dapat terjadi karena data yang dikirimkan oleh client tidak terenkripsi. API yang tidak menggunakan SSL/TLS sangat rentan terhadap serangan ini. Namun sayangnya, kebiasaan developer membiarkan hal ini agar komunikasi antara pengirim API dan penerima API dapat dilihat dengan jelas. man-in-the-middle

 

Untuk menanggulangi ancaman dari ketiga faktor tersebut, API harus dibuat lebih aman dan tetap dapat berfungsi dengan semestinya. Berikut adalah penjelasan cara untuk menanggulangi acaman yang mungkin terjadi pada penggunaan API.

  1. Memvalidasi parameter, langkah pertama yang dilakukan adalah dengan cara memvalidasi semua data yang masuk oleh penerima API, pastikan data yang diterima valid dan tidak menyebabkan kerusakan. Cara yang paling efektif adalah dengan mendeskripsikan input apa saja yang boleh diterima oleh suatu fungsi pada penerima API. Selalu periksa inputan bertipe raw untuk menghindari SQL injection. Selain itu berhati hati dengan serangan denial of service (Dos) yang dapat menyebabkan penerima API menjadi hang atau tidak berfungsi karena menerima begitu banyak data dan ditambah lagi apabila data yang dikirimkan data bertingkat. Gunakan pendeteksi virus untuk memeriksa beberapa konten file apabila penerima API dapat mendecode base64 attachment agar file attachment tersebut benar-benar bebas dari virus.
  2. Gunakan SSL/TLS untuk semua API. Untuk jaman sekarang, SSL bukan hal yang mewah lagi, tapi merupakan kebutuhan yang mendasar sebagai API. Dengan menambahkan SSL/TLS dan menerapkannya dengan benar merupakan hal yang sangat efektif untuk melawan serangan man-in-the-middle. SSL/TLS memberikan kepercayaan integritas pertukaran data diantara pengirim dan penerima API.
  3. Identitas user dan sistem yang menggunakan API merupakan sesuatu yang harus diimplementasikan dan dimanajemen secara terpisah. Selain menggunakan identitas user dan sistem sebagai tambahan keamanan, ada faktor lain yang dapat ditambahakan seperti alamat IP pengirim API, waktu akses API, identifikasi hardware (untuk penggunaan mobile apps), geolokasi, dan lainnya.

Sumber :

https://www.tuliskode.com/mengenal-konsep-application-programming-interface-api/

https://stormpath.com/blog/secure-your-rest-api-right-way

https://www.ca.com/content/dam/ca/us/files/ebook/five-simple-strategies-for-securing-apis.pdf

https://19yw4b240vb03ws8qm25h366-wpengine.netdna-ssl.com/wp-content/uploads/securing-the-api-stronghold.pdf

https://www.upwork.com/hiring/mobile/tips-for-building-a-safe-secure-api/

https://19yw4b240vb03ws8qm25h366-wpengine.netdna-ssl.com/wp-content/uploads/securing-the-api-stronghold.pdf