Di recente abbiamo visto come poter automatizzare l’uso di WhatsApp Web con Python per controllare lo stato di un utente.

La soluzione proposta ci permetterebbe, dopo apposite modifiche, di inviare anche dei messaggi automatici, c’è però un problema: soltanto i numeri già presenti in rubrica possono essere utilizzati.

Come possiamo fare per inviare messaggi a numeri non salvati?

WhatsApp Web e i Numeri non Salvati

Partiamo facendo una rapida prova per renderci conto meglio del problema.

Ammettiamo di aver attivato WhatsApp Web nel nostro computer di casa e di voler inviare un messaggio ad un numero presente nella nostra lista contatti.

La prima cosa che ci verrebbe in mente da fare è quella di aprire una nuova chat:

ed inserire il numero telefonico o il nome contatto nella relativa barra di ricerca:

Se il contatto è effettivamente presente in rubrica, comparirà sotto la lista dei contatti e sarà possibile selezionarlo per inviargli un messaggio.

Adesso, riavvolgiamo il nastro delle operazioni appena fatte e immaginiamoci di voler fare la stessa cosa ma inserendo un numero telefonico di un contatto non salvato. Il risultato è che nella lista contatti non comparirà alcun elemento e quindi non sarà possibile inviare alcun messaggio.

La Soluzione

Niente paura, esiste sempre (o quasi) una soluzione. A questo proposito, WhatsApp espone delle API che permettono di aggirare il problema.

Innanzitutto proveremo ad usare questo metodo manualmente, poi passeremo a scrivere uno script in Python per automatizzare la procedura.

Dunque, tornando al nostro esempio precedente, ammettiamo di voler inviare un messaggio al numero +39 327 1234567.

Apri una finestra del tuo browser e digita il seguente URL:

Copy to Clipboard

Come vedrai, inserendo un numero telefonico valido, si aprirà la dashboard di WhatsApp Web con la chat pronta per inviare il messaggio al numero specificato.

Gli elementi fondamentali di questo URL sono:

  • send: comando che ci permette di comunicare al servizio WhatsApp Web che vogliamo inviare un messaggio;
  • phone: attributo che ci consente di specificare un numero di telefono, non necessariamente presente in rubrica;
  • text: il testo del messaggio che vogliamo inviare;
  • app_absent: attributo per accelerare il processo di caricamento dell’applicazione web. Se posto pari a 1, carica direttamente la dashboard di WhatsApp Web.

Automatizziamo con Python

Come abbiamo già avuto modo di discutere in alcuni articoli, Selenium è un piattaforma per testare applicazioni web e si presta benissimo ad automatizzare operazioni che prevedano l’utilizzo di un browser.

Passiamo quindi a scrivere un semplice script che ci permetta di inviare un messaggio ad un numero telefonico non presente nella nostra rubrica.

Tieni di conto che sto dando per scontato che hai un’installazione Python valida e che hai installato anche la libreria Selenium e il webdriver relativo al browser di tuo interesse.

Se hai bisogno di aiuto, fai riferimento a questo articolo, in particolare ai paragrafi Selenium per Python, Installiamo il WebDriver e Hello World!.

Copy to Clipboard

Per cominciare, importiamo le librerie necessarie e, andiamo a generare un driver per interagire con il browser.

Costruiamo l’URL con i dati relativi al messaggio da inviare e poi chiediamo a Selenium di caricare la pagina web.

Una volta terminato il caricamento, simuliamo un comando di invio da tastiera.

Conclusioni

Oggi abbiamo discusso come poter inviare un messaggio ad un numero non presente in rubrica con WhatsApp Web, sia manualmente che automaticamente. In particolare, in questa seconda declinazione, abbiamo utilizzato Python e la sua libreria per il test di applicazioni web, Selenium. Grazie a questo framework è possibile sviluppare applicazioni complesse che automatizzino le operazioni fatte attraverso il browser.