Apa itu WhatsApp NET Client?
WhatsApp NET Client adalah library gratis untuk .NET Developer yang digunakan untuk mengembangkan aplikasi WhatsApp klien berbasis desktop. Library ini dikembangkan di atas teknologi .NET dengan menggunakan bahasa pemrograman C#, sehingga bisa juga digunakan untuk semua bahasa pemrograman .NET selain C# seperti VB.NET, F#, C++ dan bahasa .NET lainnya.
Jadi dengan menggunakan library ini Anda bisa dengan mudah membuat aplikasi-aplikasi yang membutuhkan komunikasi dengan aplikasi WhatsApp Web, seperti:
- WhatsApp Blast
- WhatsApp Bot
- Dan Aplikasi WhatsApp klien lainnya
Arsitektur
Saat ini pengembangan WhatsApp NET Client menggunakan engine Baileys - WhatsApp Web API untuk berkomunikasi secara langsung dengan WhatsApp server menggunakan WebSocket
.
Fitur
Feature | Status |
---|---|
Headless/no window | ✅ |
Otomatis menyimpan sesi login (jadi scan qr code WAnya cukup sekali saja) | ✅ |
Mendukung penggunaan multi account WA, untuk contohnya bisa Anda lihat di https://github.com/WhatsAppNETClient/WhatsAppNETClientMultiAccount | ✅ |
Grab contacts untuk membaca kontak WA sehingga hasilnya bisa disimpan ke database | ✅ |
Grab groups dan members untuk membaca data group beserta anggotanya sehingga hasilnya juga bisa disimpan ke database | ✅ |
Mengirim pesan personal atau group | ✅ |
Mengirim banyak pesan (broadcast) | ✅ |
Mengirim pesan dengan gambar, audio, video, stiker, gif dan semua jenis dokumen | ✅ |
Mengirim pesan dengan gambar, audio, video, dan semua jenis dokumen via URL | ✅ |
Mengirim pesan dengan tipe list , button dan CTA button |
✅ |
Bisa juga menambahkan gambar di pesan dengan tipe button |
✅ |
ReplyMessage (quoted message) | ✅ |
Mention user | ✅ |
Bisa menyimpan gambar, audio, video, semua jenis dokumen termasuk vcard dari pesan yang masuk | ✅ |
Bisa juga mengirim dan membaca pesan dengan tipe vcard , location , live location |
✅ |
Bisa membuat group, menambahkan/menghapus member group (syaratnya nomor WA harus sebagai admin) | ✅ |
Bisa membaca pesan dari group dan mendapatkan informasi pengirimnya | ✅ |
Bisa menghapus pesan yang ada di group | ✅ |
Bisa mendapatkan nomor WA yang digunakan untuk scan QRCode | ✅ |
Cek histori pesan berdasarkan nomor WA, jumlah pesan yang ditampilkan bisa diatur lewat parameter limit |
✅ |
Subscribe event ChangeState untuk memonitoring perubahan status koneksi |
✅ |
Subscribe event OnUnreadMessage untuk memonitoring pesan yang belum terbaca |
✅ |
Subscribe event OnCreatedGroupStatus untuk memonitoring status pembuatan group |
✅ |
Subscribe event GroupJoin untuk memonitoring user yang join ke group |
✅ |
Subscribe event GroupLeave untuk memonitoring user keluar dari group |
✅ |
Subscribe event OnReceiveBusinessProfiles untuk memonitoring hasil pengecekan profil bisnis |
✅ |
Subscribe event ReceiveMessage , untuk memonitoring pesan masuk |
✅ |
Subscribe event ReceiveMessageStatus untuk memonitoring status pesan yang dikirim berhasil atau gagal. |
✅ |
Subscribe event MessageAck untuk memonitoring status pesan setelah di kirim (pending, sudah diterima/baca, dll) |
✅ |
Tersedia fitur untuk verifikasi valid atau tidaknya nomor WA. Fitur ini cocok untuk mengirimkan broadcast ke nomor-nomor yang belum ada di daftar kontak atau nomor-nomor hasil generate. | ✅ |
Tersedia fitur untuk mengecek profil bisnis | ✅ |
Tersedia juga fitur REST API , sehingga semua fitur library WhatsApp NET Client juga bisa diakses via REST API baik secara local maupun remote. Untuk contoh penggunaannya bisa Anda lihat di https://github.com/WhatsAppNETClient/WhatsAppNETAPIRestApi |
✅ |
Archive chat (semua atau berdasarkan nomor WA) | ✅ |
Delete chat (semua atau berdasarkan nomor WA) | ✅ |
Pengesetan status online/offline | ✅ |
Logout | ✅ |
Bisa dengan mudah diintegrasikan dengan semua jenis database | ✅ |
Persyaratan Sistem
- Windows 8, 10 dan windows versi terbaru
- .NET Framework 4.5 dan .NET versi terbaru
- Node.js versi 14.16.x atau versi terbaru
- Software git (version control)
Instalasi
1. Menginstall Node.js
Kenapa harus menginstall Node.js? Karena dalam pengembangannya WhatsApp NET Client ini, saya menggunakan Baileys - WhatsApp Web API sebagai engine untuk berkomunikasi dengan WhatsApp, sehingga diperlukan Node.js karena Baileys - WhatsApp Web API sendiri dikembangkan di atas platform ini.
Untuk menginstall Node.js sangat mudah sekali, Anda tinggal download file instalasinya di sini dengan memilih versi yang sesuai dengan panduan saya di atas. Setelah itu tinggal lakukan instalasi dan mengikuti petunjuk yang ada.
2. Mengclone Repository WhatsAppNETAPINodeJs
WhatsApp NET API NodeJs adalah program kecil yang saya tulis menggunakan bahasa pemrograman java script yang di dalamnya terdapat module untuk mengakses library Baileys - WhatsApp Web API dan node-signalr.
- Baileys - WhatsApp Web API berfungsi untuk berkomunikasi dengan WhatsApp server via WebSocket.
- Node-signalr berfungsi sebagai signalR client yang bertugas untuk berkomunikasi dengan signalR server yang saya tanam di dalam library WhatsApp NET Client.
Untuk mengclone repository WhatsApp NET API NodeJs caranya sangat gampang, Anda tinggal mendownload software git dan menginstallnya.
Setelah itu Anda jalankan command prompt
kemudian masuk ke drive C
atau D
, kemudian ketik perintah berikut:
git clone https://github.com/WhatsAppNETClient/WhatsAppNETAPINodeJs2.git
Jangan lupa menekan enter ya hehehe, setelah itu lanjutkan dengan mengetikan perintah cd WhatsAppNETAPINodeJs2
, kemudian ketikan perintah terakhir yaitu npm install
dan sekali lagi jangan lupa di enter.
Kemudian tunggu sampai proses instalasi module-module Node.js yang dibutuhkan selesai. Kalo untuk tampilan prosesnya lebih kurang seperti berikut, jadi mungkin di pc/laptop Anda akan mendapatkan tampilan yang berbeda.
Setelah itu baca file README
yang ada di folder C:\WhatsAppNETAPINodeJs2
kemudian lakukan langkah-langkah sesuai instruksi yang ada.
3. Mengclone Repository Contoh Penggunaan Library WhatsApp NET Client
Langkah-langkah ini sebenarnya sama seperti sebelumnya, Anda tinggal pindah direktori atau mau pindah drive yang lain sama saja. Tapi untuk langkah-langkah di sini saya tetap menggunakan drive C
untuk mengclone repositoy contoh penggunaan library WhatsApp NET Client.
Karena posisi kia sekarang ada di direktori C:\WhatsAppNETAPINodeJs2
, jadi kita harus kembali dulu ke root drive C dengan mengetikan perintah cd\
, setelah itu ketik perintah berikut:
git clone https://github.com/WhatsAppNETClient/WhatsAppNETClient2.git
Ok, sampai di sini berarti langkah-langkah instalasi sudah selesai, kalo Anda buka windows explorer kemudian pindah ke drive C
, maka akan mendapatkan dua direktor baru dengan nama WhatsAppNETAPINodeJs2
dan WhatsAppNETClient2
yang merupakan hasil dari langkah-langkah sebelumnya.
Membuka Project Contoh Penggunaan Library WhatsApp NET Client
Caranya gampang, tinggal buka file WhatsAppNETAPI.sln
yang ada di direktori C:\WhatsAppNETClient2\src
.
Contoh penggunaan library WhatsApp NET Client ini saya buat dalam dua bahasa yaitu bahasa C# dan VB.NET.
Oh iya mumpung saya ingat hehe, project ini saya buat dengan menggunakan Visual Studio .NET 2015 Community, jadi minimal Anda harus sudah menginstall Visual Studio .NET 2015 Community atau versi yang lebih baru.
Oke setelah membuka file WhatsAppNETAPI.sln
, klik kanan solution WhatsAppNETAPI
-> Rebuild Solution
. Langkah ini bertujuan untuk merestore semua paket nuget yang digunakan di dalam project ini.
Setelah itu Anda bisa langsung menjalankan project dengan menekan tombol F5, kemudian mengeset lokasi direktori WhatsAppNETAPINodeJs
yang merupakan hasil dari langkah-langkah sebelumnya, kemudian klik tombol Start.
Melaporkan Bug atau Error
Secara teknis dalam pengembangan sebuah aplikasi jelas tidak mungkin 100% bebas dari bug. Nah jika Anda menemukan bug atau error pada saat menggunakan library WhatsApp NET Client ini, silahkan Anda laporkan di halaman https://github.com/WhatsAppNETClient/WhatsAppNETClient2/issues.
Screenshot Project Contoh Penggunaan Library WhatsApp NET Client
Tampilan awal demo project WhatsApp NET Client
Mohon maaf untuk beberapa screenshot berikutnya belum saya update, jadi masih menggunakan screenshot versi lama 😁
Scan awal QRCode cukup sekali saja, untuk koneksi berikutnya sudah tidak diperlukan lagi karna library ini otomatis menyimpan session autentikasinya.
Contoh subscribe pesan yang masuk, ada beberapa informasi yang bisa anda dapatkan seperti tanggal/jam, nomor/nama pengirim, pesan dan nama file jika pesan mengandung gambar, audio, video dan file dokumen lainnya.
Contoh hasil dari fitur grab data contact, di fitur ini Anda bisa mendapatkan informasi nomor/nama kontak, short name dan verified Name.
Contoh hasil dari fitur grab group dan anggotanya, di fitur ini Anda bisa mendapatkan informasi nama group dan membernya (nomor/nama kontak, short name dan verified Name).
Contoh subscribe pesan yang keluar, di fitur ini Anda bisa mendapatkan status pengiriman pesan apakah berhasil atau gagal (nomor kontak belum terdaftar di WhatsApp).
Info Rilis
v3.0.0 (2023-02-12)
Di versi ini WhatsApp NET Client menggunakan library Baileys - WhatsApp Web API untuk berkomunikasi dengan WhatsApp server menggantikan library whatsapp-web.js.
- Fitur baru:
- Penambahan fitur untuk mengirim pesan button CTA (Call to action)
- Penambahan fitur untuk mengirim pesan kontak (vcard)
- Penambahan fitur untuk mengirim pesan sticker
- Penambahan fitur untuk mengirim pesan gif
- Penambahan fitur untuk mengeset status online atau offline
- Penambahan fitur untuk membuat group
- Penambahan fitur untuk menambahkan/menghapus member group
- Penambahan fitur untuk menghapus pesan di group
- Penambahan fitur untuk mengecek profil bisnis
- Penambahan fitur untuk membaca pesan live location
- Penambahan fitur untuk mengeset status pesan sudah dibaca (di versi sebelumnya pesan masuk otomatis diset sudah terbaca)
- Mengaktifkan kembali fitur hapus chat
- Penambahan property CountryCode, untuk mengeset kode area (default: 62)
- Penambahan event OnCreatedGroupStatus, OnUnreadMessage, OnReceiveBusinessProfiles, OnGroupJoin dan OnGroupLeave
- Refactoring:
- Parameter method
VerifyWANumber(IList<string> contacts, bool checkProfile = false)
menjadiVerifyWANumber(IList<string> contacts)
- Parameter method
- Improve:
- Tambahan parameter groupId di method
GetGroups
untuk menampilkan member dari group tertentu - Fitur untuk mengirim pesan
list
,button
danlocation
sudah bisa digunakan lagi - Fitur untuk menghapus chat sudah bisa digunakan lagi
- Tidak kompatible dengan contoh project yang masih menggunakan library veri 2.9.0 (perlu ada penyesuain kode)
- Tambahan parameter groupId di method
- Deprecated:
- Event OnChangeBatteryEventHandler
- Event GetBatteryStatus
- Method SetStatus
- Method GetUnreadMessage, sudah digantikan dengan event OnUnreadMessage
- Method GetCurrentState
- Property ChromePath
- Property IsMultiDevice
- Property Headless
v2.9.0 (2022-03-12)
- Penambahan event
Monitoring Log
untuk memonitoring log (INFO/ERROR) yang dikirim dari WhatsAppNETAPINodeJs. Salah satu manfaat dari event ini bisa digunakan untuk mendeteksi crash yang terjadi pada chrome browser. - Penambahan method
GetCurrentState
. Walaupun sudah ada eventChangeState
untuk memonitoring perubahan status koneksi, hanya saja event ini tidak diupdate secara realtime sehingga untuk mendapatkan status koneksi terkini tinggal panggil methodGetCurrentState
. - Penambahan dukungan untuk menghandle telepon masuk (berupa notifikasi pesan masuk).
v2.8.1 (2022-03-06)
- Fitur baru:
- Penambahan property
Headless
untuk keperluan development. Jadi Anda bisa mengatur sendiri apakah ingin menampilkan atau menyembunyikan chrome browser.
- Penambahan property
- Improve:
- Perubahan hak akses property
IsMultiDevice
dari read only menjadi read/write. Jadi untuk mengaktifkan fitur multi device tinggal set propertyIsMultiDevice
menjadi true.
- Perubahan hak akses property
- Deprecated:
- Repository
WhatsAppNETAPINodeJsMultideviceBETAsudah tidak digunakan, dukungan multi device sudah ditambahkan ke repo WhatsAppNETAPINodeJs.
- Repository
v2.8.0 (2022-02-21)
- Fitur baru:
- Penambahan fitur mention
- Improve:
- Penambahan property
id
utk pesan dengan tipe button dan list - Penambahan property
selectedButtonId
danselectedRowId
di classMessage
ketika menerima pesan masuk dengan tipeButton
atauList
. Dua property ini digunakan untuk mendapatkan id button/list yang dipilih - Bisa menambahkan gambar untuk pesan dengan tipe
Button
- Penambahan property
v2.7.0 (2022-02-05)
- Fitur baru:
- Penambahan fitur untuk verifikasi valid atau tidaknya nomor WA. Fitur ini cocok untuk mengirimkan broadcast ke nomor-nomor yang belum ada di daftar kontak atau nomor-nomor hasil generate.
- Penambahan dukungan untuk WA Multi-device
- Penambahan property
IsMultiDevice
untuk mendeteksi apakah WA yang digunakan adalah WA Multi-device atau bukan.
v2.6.0 (2022-01-21)
- Fitur baru:
- Implementasi event
message_ack
untuk memonitoring status pesan setelah di kirim (pending, sudah diterima/baca, dll) - Implementasi event
change_battery
untuk memonitoring status battery. Status battery akan diupdate secara berkala, dan jika ingin mendapatkan status battery terkini tinggal panggil methodGetBatteryStatus
. - Penambahan fitur untuk mendapatkan histori pesan berdasarkan nomor WA, jumlah pesan yang ditampilkan bisa diatur lewat parameter
limit
. - Penambahan fitur untuk mengaktifkan layanan
REST API
, sehingga semua fitur library WhatsApp NET Client juga bisa diakses viaREST API
baik secara local maupun remote. Untuk contoh penggunaannya bisa Anda lihat di https://github.com/WhatsAppNETClient/WhatsAppNETAPIRestApi
- Implementasi event
v2.5.0 (2022-01-13)
- Fitur baru:
- Implementasi event
group_join
untuk memonitoring user yang join ke group - Implementasi event
group_leave
untuk memonitoring user yang keluar dari group - Penambahan property
GetCurrentNumber
untuk mendapatkan nomor WA yang digunakan untuk scan QRCode - Penambahan fitur untuk mengeset status
- Penambahan fitur untuk mengarsipkan/menghapus chat berdasarkan nomor WA
- Implementasi event
v2.4.0 (2021-10-31)
- Fitur baru:
- Penambahan fitur untuk mengirimkan pesan dengan format
list
(tidak support untuk WA bisnis) - Penambahan fitur untuk mengirimkan pesan dengan format
button
- Penambahan property
pushname
di class contact sebagai alternatif untuk mendapatkan informasi nama pengirim yang belum terdaftar di kontak
- Penambahan fitur untuk mengirimkan pesan dengan format
v2.3.0 (2021-08-19)
- Fitur baru:
- Penambahan fitur
multi account WA
. Contoh penggunaannya bisa Anda lihat disini
Di versi 2.3.0 ini terjadi penambahan parameter
sessionId
di semua event handler yang ada, sehingga harus Anda sesuaikan secara manual.Contoh beberapa event handler yang harus sesuaikan:
private void OnStartupHandler(string message) private void OnScanMeHandler(string qrcodePath) private void OnReceiveMessageHandler(WhatsAppNETAPI.Message message)
Anda tinggal menambahkan parameter
sessionId
dengan tipestring
seperti berikut:private void OnStartupHandler(string message, string sessionId) private void OnScanMeHandler(string qrcodePath, string sessionId) private void OnReceiveMessageHandler(WhatsAppNETAPI.Message message, string sessionId)
- Penambahan fitur
v2.2.0 (2021-08-12)
- Fitur baru:
- Penambahan fitur untuk mendapatkan informasi group tanpa member
- Penambahan fitur untuk mengirim lokasi
- Penambahan fitur logout
- Perbaikan bug:
- Subscribe status pesan keluar yang dikirimkan ke group
- Improve:
- Pembacaan pesan dari group, sudah bisa mendapatkan informasi pengirim pesan
- Menambahkan informasi versi WhatsApp web dan Chrome pada saat inisialisasi
v2.1.0 (2021-07-30)
- Fitur baru:
- Penambahan fitur ReplyMessage (quoted message)
- Penambahan fitur untuk mengirim pesan gambar, audio, video dan dokumen via URL
- Penambahan fitur untuk menyimpan pesan vcard dalam bentuk file
- Penambahan event ChangeState untuk memonitoring perubahan status koneksi
- Improve:
- Pembacaan pesan masuk dengan tipe
location
danvcard
(datanya sudah dalam bentuk objek)
- Pembacaan pesan masuk dengan tipe
v2.0.2 (2021-07-25)
- Mengganti library Selenium Webdriver dengan library whatsapp-web.js sebagai engine utama untuk berkomunikasi dengan WhatsApp Web.
- Full mode siluman (headless/no window)
- Tidak kompatible dengan contoh project yang masih menggunakan library veri 1.3.x
- Grab groups dan members untuk membaca data group berserta anggotanya sehingga hasilnya juga bisa Anda simpan ke database
- Perbaikan fungsi mengirim pesan dengan gambar, audio, video, dan semua jenis dokumen
- Bisa menyimpan gambar, audio, video, dan semua jenis dokumen dari pesan yang masuk (bisa ditentukan sendiri lokasi penyimpanannya)
- Bisa juga membaca pesan dengan tipe
contact
danlocation
- Archive chat
- Delete chat
v1.3.3 (2021-02-02)
- Minor update
v1.3.2 (2020-11-22)
- Perbaikan bug:
- Mengirim pesan yang mengandung emoji di mode siluman (headless/no window).
- Improve:
- Method listen/subscribe pesan yang masuk.
- Method mengirim pesan
v1.3.1 (2020-07-20)
- Perbaikan bug:
- Mengirim pesan bergambar ke kontak yang belum terdaftar di kontak WA, pesan yang terkirim menjadi duplikat. Contoh: Pesan test, terkirim menjadi testtest.
- Improve:
- Mode siluman (headless/no window).
v1.3.0 (2020-07-17)
- Fitur baru:
- Fitur subscribe pesan yang dikirim, dengan fitur ini kita bisa mengecek apakah pesan sudah terkirim atau belum.
- Perbaikan bug:
- Mengirim pesan ke kontak yang belum terdaftar di kontak WA, pesan yang terkirim menjadi duplikat. Contoh: Pesan test, terkirim menjadi testtest.
v1.2.0 (2020-07-13)
- Fitur baru:
- Penambahan mode siluman (headless/no window)
- Penambahan fitur grab contacts
- Improve:
- Method SendMessageAsync, BroadcastMessage dan ListenIncomingMessageAsync
v1.1.0 (2020-07-05)
- Fitur baru:
- Penambahan fitur untuk mengirim pesan dengan gambar
- Penambahan fitur untuk mengirim file dokumen
- Improve:
- Penambahan dukungan untuk .NET Framework 4.0
- Fitur subscribe pesan masuk
- Perbaikan bug:
- Mengirim kontak dengan nomor tidak valid
- Mengirim pesan multi line pada saat broadcast
- Deprecated:
- Property
AutoReplaysudah tidak digunakan, jadi di kode yang lama dinonaktifkan saja - Method
SendMessageAutoReplaysudah tidak digunakan, silahkan gunakan method SendMessage sebagai gantinya
- Property
v1.0.5 (2020-06-24)
- Perbaikan bug:
- Mengirim pesan multi line
- Improve:
- Fitur subscribe pesan masuk
v1.0.0 (2020-06-22)
- Rilis pertama
- Mengirim pesan
- Mengirim banyak pesan (broadcast)
- Listen/subscribe pesan yang masuk, jadi enggak perlu nambah objek timer lagi untuk membaca pesan masuk
- Auto replay pesan yang masuk
- Otomatis login (Jadi enggak perlu bolak-balik nyecan QRCode WAnya, cukup sekali aja)
- Semua method yang ada kecuali method untuk konek ke WA/Chrome browser, dibuat secara async (asynchronous) sehingga tidak memblok UI ketika dijalankan
- Mendukung semua jenis database