Featured

    Featured Posts

  • dimana kehidupan
  • disitulah jawaban

Belajar n8n: Membuat Pengingat Absensi Otomatis ke Grup WhatsApp Kantor


Awalnya saya sudah pernah membuat workflow pengingat absensi menggunakan n8n. Tapi jujur saja, waktu itu proses bikinnya cukup banyak dibantu AI. Jadi meskipun workflow-nya jalan, saya tidak benar-benar paham alurnya.

Membuat Pengingat Absensi Otomatis ke Grup WhatsApp Kantor


Workflow lama yang saya buat kurang lebih seperti ini:

Cron
↓
Baca daftar pegawai
↓
Loop satu per satu
↓
Generate pesan
↓
Kirim WhatsApp personal

Karena pesannya dikirim ke masing-masing nomor pegawai, workflow-nya jadi lumayan panjang.

Nah, beberapa waktu lalu saya kepikiran untuk menyederhanakan semuanya.

Daripada kirim satu-satu ke seluruh pegawai, kenapa tidak kirim sekali saja ke grup WhatsApp kantor?

Selain lebih sederhana, proses maintenance-nya juga jauh lebih mudah.

Kondisi yang saya gunakan

Beberapa catatan setup yang saya pakai:

n8n

Self-hosted.

WhatsApp Gateway

Saya menggunakan:

GOWA

Repository:

https://github.com/aldinokemal/go-whatsapp-web-multidevice

Keamanan

Dashboard GOWA saya amankan menggunakan Cloudflare Access.

Jadi orang luar tidak bisa sembarangan membuka halaman login.

Sedangkan untuk n8n, saya tidak menggunakan URL Cloudflare.

Saya langsung mengakses GOWA menggunakan IP lokal:

http://IP_LOKAL_SERVER:PORT

Tujuannya supaya request dari n8n tidak terhalang proteksi Cloudflare.

Rencana Workflow

Targetnya sederhana:

Pagi

Senin - Jumat
07:45

Kirim ke grup kantor:

Jangan lupa absensi masuk

Sore

Senin - Kamis
16:45

Kirim:

Jangan lupa absensi pulang

Jumat

Jamnya berbeda.

Karena jam kerja kantor berbeda dengan hari biasa.

Membuat Schedule Trigger

Di node pertama saya menggunakan:

Schedule Trigger

Lalu memilih:

Trigger Interval
=
Weeks

Kemudian memilih hari:

Monday
Tuesday
Wednesday
Thursday
Friday

dan mengatur waktu sesuai kebutuhan.

Contoh:

Hour  : 07
Minute: 45

Awalnya saya sempat bingung antara menggunakan:

Days

atau

Weeks

Ternyata yang lebih pas adalah:

Weeks

karena kita bisa memilih hari tertentu dan mengecualikan Sabtu-Minggu.

Membuat Isi Pesan

Node kedua saya menggunakan:

Edit Fields

atau yang dulu dikenal sebagai:

Set

Saya membuat field baru bernama:

message

Isi contohnya:

🌞 Selamat pagi.

Jangan lupa melakukan absensi masuk.

Terima kasih.

Sederhana saja.

Yang penting pesannya tersampaikan.

Mengirim Pesan ke Grup WhatsApp

Bagian ini yang awalnya membuat saya agak bingung.

Karena sebelumnya saya mengirim ke nomor pribadi.

Sedangkan sekarang tujuannya grup WhatsApp.

Ternyata yang dibutuhkan adalah:

Group ID

Formatnya bukan nomor HP.

Kurang lebih seperti ini:

120363xxxxxxxxxxxx@g.us

Yang penting ada akhiran:

@g.us

HTTP Request ke GOWA

Node berikutnya:

HTTP Request

Konfigurasinya:

Method:
POST

URL:

http://IP_LOKAL_SERVER:PORT/send/message

Body JSON:

{
  "phone": "120363xxxxxxxxxxxx@g.us",
  "message": "{{ $json.message }}"
}

Untuk memilih device WhatsApp yang digunakan:

device_id = device_contoh

Karena di server saya ada beberapa device WhatsApp yang terhubung.

Saya ingin workflow ini menggunakan device:

device_contoh

Sempat Bingung Soal Basic Auth

Workflow lama saya menggunakan:

Basic Auth

Sedangkan workflow baru saya mencoba:

Authentication = None

Setelah dicoba ternyata tetap berjalan normal.

Karena request berasal dari jaringan lokal dan endpoint memang bisa diakses dari LAN.

Akhirnya saya memilih yang lebih sederhana:

None

Eksperimen Mention Semua Anggota Grup

Saya juga sempat mencoba:

@everyone

dengan harapan seluruh anggota grup akan terkena mention.

Pesan memang berhasil terkirim:

@everyone

tetapi tidak benar-benar menjadi mention WhatsApp.

Masih tampil sebagai teks biasa.

Untuk sementara saya biarkan saja karena tujuan utama workflow ini hanyalah pengingat absensi.

Tidak terlalu penting harus melakukan mention ke seluruh anggota grup.

Menambahkan Sistem "Hansip Lapor Error"

Sambil belajar, saya juga sekalian membuat workflow khusus untuk menangkap error.

Kalau ada workflow yang gagal, saya ingin mendapatkan laporan otomatis.

Kurang lebih seperti ini:

Error Trigger
↓
Kirim Telegram

Pesan yang saya kirim ke Telegram:

🚨 HANSIP JAGA MELAPOR!

Workflow:
...

Node:
...

Error:
...

Link:
...

Awalnya saya sempat bingung.

Workflow dibuat.

Sudah publish.

Tapi Telegram tidak masuk.

Ternyata ada satu hal yang saya pelajari:

Error Trigger tidak selalu aktif ketika saya hanya menekan tombol:

Execute Workflow

di editor.

Supaya benar-benar teruji, saya membuat workflow yang sengaja error menggunakan kode:

throw new Error("TEST HANSIP PRODUCTION")

Setelah workflow dijalankan sebagai production execution, akhirnya notifikasi Telegram berhasil masuk.

Lumayan puas juga waktu melihat "Hansip" pertama kali berhasil melapor. 😆

Hal Yang Saya Pelajari

Kalau dipikir-pikir, workflow pengingat absensi grup ternyata jauh lebih sederhana daripada workflow pengingat ke nomor personal.

Dari yang awalnya:

Cron
↓
Baca Data
↓
Loop
↓
Generate Pesan
↓
Send WA

menjadi:

Schedule Trigger
↓
Edit Fields
↓
HTTP Request

Lebih pendek.

Lebih mudah dipahami.

Dan lebih gampang dirawat kalau nanti suatu saat perlu diubah.

Penutup

Belajar n8n buat saya menarik karena sering kali yang sulit bukan menambahkan node, tetapi memahami alur datanya.

Kadang workflow bisa jalan, tetapi kita sendiri belum tentu paham kenapa bisa jalan.

Makanya saya mulai menulis catatan-catatan seperti ini.

Selain untuk dokumentasi pribadi, juga sebagai pengingat kalau beberapa bulan lagi saya lupa settingannya dan harus mengulang dari awal.


Disclaimer

Tulisan ini lebih merupakan catatan belajar daripada tutorial resmi.

Proses pembuatan workflow di atas banyak saya lakukan dengan bantuan Microsoft Copilot dan diskusi bolak-balik selama proses troubleshooting.

Jadi jangan dibayangkan saya sudah benar-benar paham semuanya. 😄

Saya masih belajar.

Kalau ada bagian yang menurut teman-teman kurang tepat, sangat mungkin memang ada yang bisa diperbaiki.

Yang penting buat saya, setiap kali mencoba sesuatu, ada catatan yang bisa dibaca lagi saat lupa, dan semoga bermanfaat juga untuk teman-teman yang sedang belajar n8n dari nol seperti saya.

author

Dwi Yanto

Sebuah Catatan Kecil Hidup Inyonk


Tulis yang dikerjakan, Kerjakan apa yang ditulis

Dapatkan Update Gratis disini!

Posting Komentar

www.CodeNirvana.in

Online Sejak 2013 Dwi Yanto | Blogger Templates | Designed By Code Nirvana