W jaki sposób wysłać powiadomienie ze skryptu do komunikatora WhatsApp? Jak wysłać wiadomość WhatsApp z użyciem PowerShell?
Sprawdzone rozwiązanie umożliwiające wysyłkę wiadomości z użyciem komunikatora WhatsApp i PowerShell będzie się opierać o Node.js i klienta Mudslide.
Node.js jest środowiskiem wykonawczym umożliwiającym uruchamianie aplikacji napisanych w JavaScript po stronie serwera (backend) poza przeglądarką internetową. Sama aplikacja Node.js jest dostępna dla wszystkich najpopularniejszych systemów operacyjnych, jej instalator zawiera również menadżer pakietów Node Package Manager (NPM). To własnie dzięki NPM zainstalujemy Mudslide
Sama wysyłka jest możliwa z użyciem klienta Mudslide czyli klienta WhatsApp opartego o API web tej aplikacji. To on właśnie umożliwi nam wysyłanie wiadomości WhatsApp z poziomu wiersza poleceń czy PowerShell. Do kompletnego działania naszego rozwiązania będziemy potrzebowali jeszcze klienta GIT.
Zaczynamy od instalacji Node.js z poziomu Terminala (jako administrator):winget install OpenJS.NodeJS.LTS
Po instalacji restartujemy aplikacje Terminala, instalator dopisał zmienne do ścieżki PATH i dopiero po restarcie uzyskamy dostęp do Node.js i npm. W nowo otwartym oknie terminala sprawdzamy ich wersje poleceniami:
node -v
npm -v
UWAGA: w środowiskach serwerowych zalecana jest instalacja Node.js poprzez Node Version Manager (NVM). Najpierw instalujemy NVM które pozwala nam pobrać odpowiednią wersje Node.js i NPM. W Windows Server mamy inne warunki odnośnie uprawnień czy katalogów współdzielonych pomiędzy użytkownikami. Często również wymagana jest dostępność różnych wersji Node.js jednocześnie NVM umożliwia zmiane wersji Node.js wraz z automatyczną aktualizacją wersji w ścieżce PATH.
Kolejnym elementem jest klient kontroli wersji GITwinget install --id Git.Git -e --source winget
Po instalacji jego instalacji uruchamiamy Git GUI i tworzymy nowe repozytorium np w katalogu c:\data\git
Teraz już możemy już przejść do instalacji ostatniego komponentu jakim jest Mudslide. Klienta api instalujemy z użyciem npm w oknie terminala wpisujemy:
npm install -g mudslide
Środowisko gotowe, mamy wszystkie komponenty, czas skonfigurować naszego Mudslide.
Mudslide w wierszu poleceń uruchamiamy używając npx tool (jest to komenda uruchamiająca pakiety npm w środowisku wiersza poleceń). Pierwsze nasze polecenie a właściwie parametr wyglądać będzie tak:
npx mudslide -v
w jego wyniku otrzymamy wszystkie dostępne komendy dla Mudslide:
Wysyłka wiadomości jest możliwa po zalogowaniu się naszego konta w kliencie WhatsApp użyjemy do tego komendy:npx mudslide login
pojawi się tekstowy kod QR:
z poziomu aplikacji WhatsApp w telefonie dodajemy urządzenie wczytując kod:
dodało się urządzenie Google Chrome, które jest widoczne w naszej aplikacji:
w konsoli widzimy komunikat potwierdzający zalogowanie:
Jesteśmy gotowi do wysyłki pierwszej wiadomości, mamy połączoną aplikacje Mudslide z komunikatorem WhatsApp (z naszy kontem).
Pierwszą wiadomość wyślemy sami do siebie, swój własny nr w Mudslide ma postać parametru me wydamy więc polecenie:
npx mudslide send me "sprawdzone.it"
w komunikatorze pojawi się:
Działa!
Sprawdźmy jak wysyłać wiadomość na inny numer (nie musi być w naszych kontaktach!):
npx mudslide send 48606XXXXXX "sprawdzone.it"
Działa x2! Wyślijmy więc wiadomość do grupy której jesteśmy członkiem. Aby to zrobić wylistujmy najpierw grupy oraz ich unikalny nr:
npx mudslide groups
Jak widzicie numer grupy ma postać: 12334565-258773961872@g.us
Aby wysłać wiadomość do grupy nasze polecenie powinno mieć poniższą składnie:npx mudslide send 48XXXXXXXXX-XXXXX86284@g.us "sprawdzone.it"
Za nami podstawowe możliwości komunikacji z wiersza poleceń, nie ma jednak problemu aby dodać do wiadomości obraz, załączyć plik, czy przekazać lokalizacje:npx mudslide send-image me C:\data\obraz.jpg
npx mudslide send-file me C:\data\dokument.pdf
npx mudslide send-location me 52.388232 16.883804
Rozwiązanie działa! Podpowiem tylko, że więcej możliwości znajdziecie w dokumentacji, można wysyłać mp3, dodawać członków do grupy, tworzyć ankiety itp itd.
Ale jak wykorzystać ten sprawdzony sposób na wysyłkę wiadomości WhatsApp z Powershell? A może cykliczna wysyłka informacje o stanie systemu?
Pisaliśmy już jak dodać skrypt do harmonogramu zadań – a skrypt może być dowolny, nazwa systemu, utylizacja CPU, zajętość RAM i wolna przestrzeń na dysku C. Przykładowy skrypt wygląda tak:
#simple PC report for WhatsApp and Mudslide
# sprawdzone.it
#computer name
$vmname = hostname
#cpu
$cpuUsage = Get-WmiObject Win32_Processor | Select-Object -ExpandProperty LoadPercentage
#memory
$memory = Get-WmiObject Win32_OperatingSystem
$totalMemory = [math]::Round($memory.TotalVisibleMemorySize / 1MB, 2)
$freeMemory = [math]::Round($memory.FreePhysicalMemory / 1MB, 2)
$usedMemory = [math]::Round($totalMemory - $freeMemory, 2)
#drive C
$drive = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DeviceID -eq "C:" }
$totalSpace = [math]::Round($drive.Size / 1GB, 2)
$freeSpace = [math]::Round($drive.FreeSpace / 1GB, 2)
$usedSpace = [math]::Round($totalSpace - $freeSpace, 2)
#create WhatsApp message format with *BOLD* and new line \n
$whatsapp = "*$vmname* \n \nCPU usage: $cpuUsage% \nRAM: Used $usedMemory GB / Free $freeMemory GB / Total $totalMemory GB \nDrive C: Used $usedSpace GB / Free $freeSpace GB / Total $totalSpace GB"
#send message
npx mudslide send me $whatsapp
Zapisujemy i uruchamiamy go cyklicznie, a efektem tego będzie wiadomość do Administratora systemu:
Samych zastosowań może być jednak znacznie więcej, od raportów dla IT. Przez powiadomienia z systemów monitoringu (Zabbix) aż po informacje z baz SQL (raport sprzedaży), czy potwierdzenie ukończenia backupu.
Jeżeli mój wpis Ci się spodobał, pomógł w pracy? Chcesz mnie wspierać? Postaw kawę! To dzięki waszemu wsparciu nie ma reklam! Poniżej kod QR do płatności który jest jednocześnie linkiem do PayPal.