Note ajoutée depuis : ce billet en cite un autre, de 2013, sur Gammu — celui-là n'a pas encore refait surface dans mes backups. Le téléphone servait de passerelle SMS à l'installation domotique dont je parle deux jours plus tard.
En 2013, je vous avais parlé de Gammu, une passerelle SMS relativement puissante mais encore remplie de bugs incessants, qui m'a fait abandonner cette solution.
Je voulais aujourd'hui vous parler d'une application Android relativement sympa qui joue la passerelle SMS (Gateway SMS).
Cette application est disponible sous Android et se nomme SMS GATEWAY. Elle est bien entendu gratuite et fonctionnelle (je l'ai testée pendant plusieurs mois avant de vous en parler, je n'ai eu qu'une coupure, sans doute un problème avec la liaison WiFi).
Comme vous l'aurez compris, c'est une application qui doit tourner sur un téléphone portable, donc allumé en permanence, mais cela ne me dérange pas, car le système a une batterie de secours (celle du téléphone), chouette pour les coupures de courant… Il y a bien entendu toujours la liaison sans fil qui pourrait en freiner plus d'un (y compris moi… mais je vous fais part de mon retour d'expérience).
Il suffit donc de mentionner à l'application une URL qui transmet automatiquement en requête GET vers une page web. Et vous recevez tous les SMS du mobile !
Inversement, vous pouvez envoyer un SMS via une requête HTTP également. Le créateur du programme se la joue « sécure » (façon de parler), car il permet également de mettre un « mot de passe » pour autoriser l'envoi de SMS par requête.
Par exemple, comment faire un script PHP qui reçoit les données SMS ?
Comme je vous l'ai dit, il suffit de renseigner une URL dans l'option HTTP et d'activer l'option. Ensuite, le programme va rediriger automatiquement les SMS vers http.
/** Attention : compatible seulement Apache et non Nginx. **/
/** Nginx ne prend pas en charge getallheaders(), ou il faut ajouter un hack. **/
$headers = getallheaders();
if (empty($phone)) {
$phone = $headers["phone"];
}
if (empty($smscenter)) {
$smscenter = $headers["smscenter"];
}
if (empty($text_utf8)) {
$text_utf8 = rawurldecode($headers["text"]);
}
// PAR EXEMPLE SI ON VERIFIE LE NUMERO DE TELEPHONE
if ($phone == '+32477454545') {
// ACTION A FAIRE
}
Vous avez pu remarquer que c'est simple de transférer les SMS reçus via cette application.