Per motivi di lavoro mi sono trovato a dover spedire circa 3000 SMS ad altrettanti destinatari nel più breve tempo possibile. In passato mi ero già avvalso di sistemi automatizzati totalmente via web, come Skebby, ma questa volta, per tutta una serie di motivi contabili, non era possibile usare il medesimo strumento.
Mi sono così chiesto se esistevano strumenti per sfruttare la propria utenza di telefonia mobile per l’invio di bulk SMS ed ho così scoperto un servizio comodissimo che permette di inviare SMS dal proprio smartphone Android utilizzando delle API via web: SMSGateway.me. Probabilmente di servizi analoghi ne esisteranno anche altri (liberi di segnalarli, se lo ritenete opportuno) ma essendo stata una esperienza comunque positiva, trovo corretto fargli un minimo di pubblicità gratuita 🙂
Il funzionamento del sistema è piuttosto semplice: si installa sul proprio smartphone la loro app SMS Gateway, disponibile su Google Play, e si registra un account gratuito sulla loro piattaforma. A questo punto, seguendo le istruzioni per usare le API (gli esempi sono in PHP ma le chiamate funzionano con qualunque linguaggio), si predispone l’invio degli SMS.
Per funzionare, mi sembra chiaro, il proprio smartphone Android deve essere collegato alla Rete via GPRS o WiFi, così da poter ricevere i dati dal servizio.
Ad esempio, avevo un file CSV (Comma Separated Value) contenente i campi NOME, COGNOME, EMAIL, NUMERO DI CELLULARE. Con il seguente script ho comodamente inviato più di 3000 SMS, aggiungendo anche il controllo e la normalizzazione del numero telefonico sfruttando la libreria libphonenumber:
[...] include "../smsGateway.php"; include_once "../libphonenumber/NumberFormat.php"; $smsGateway = new SmsGateway('[nome utente]', '[password]'); $deviceID = [numero dispositivo]; $smsMessage = "[messaggio da inviare]"; $options = [ 'expires_at' => strtotime('+1 hour') // Cancel the message in 1 hour if the message is not yet sent ]; if(($handle = fopen("destinatari.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { // Destinatario $destinatario = ucfirst(strtolower($data[0]))." ".ucfirst(strtolower($data[1])); // Invia SMS if(strlen($data[2]) > 5) { try { $numberProto = $phoneUtil->parse($data[2], "IT"); } catch (\libphonenumber\NumberParseException $e) { var_dump($e); continue; } if($phoneUtil->isValidNumber($numberProto)) { $number = $phoneUtil->format($numberProto, E164); echo "Sending SMS to $destinatario number $number..."; // Splitta l'SMS in pezzi da 160 caratteri se il messaggio è troppo lungo $text = explode('\n',wordwrap($smsMessage, 160, '\n')); foreach($text as $chunk) { // Invia SMS $result = $smsGateway->sendMessageToNumber($number, $chunk, $deviceID, $options); // Verifica l'esito dell'invio... $c++; $esito = intval($result['response']['success']); if($esito > 0) { echo "OK\n"; } else { echo "Errore !\n" } } } else { echo "Invalid number $data[2]<br>\n"; } } } } echo "Just sent $c SMS !\n";
Ovviamente lo script è migliorabile ma può essere un buon punto di inizio per iniziare la propria campagna di comunicazione via SMS…
4 comments
ma funziona solo su android o è possibile sfruttare questo servizio anche da una pagina web?
Il terminale con Android serve per poter installare l’applicazione che materialmente invia gli SMS. Il servizio in sé può essere usato anche da pagina web…
Ciao, ma funziona ancora? non trovo l’app su PlayStore ….
Ciao, il servizio sembra esistere ancora. Prova a visitare il loro sito web: https://smsgateway.me/