lalahop

Envoyer des SMS automatiquement à une date définie

Il y a quelques temps, je me demandais, par simple curiosité, comment on pouvait envoyer un SMS automatiquement à une heure définie sur les "vieux" téléphones. Nan parce que sur les smartphones, je suis sûr qu'il doit y avoir 20 applis par store qui font ça mais quid pour un bête Nokia 6300, par exemple ?

À l'époque, j'avais trouvé quelques logiciels comme Automsg mais, n'étant pas signé, il ne pouvait envoyer de SMS sans me demander une confirmation avant ... Ce qui est pas trop l'objectif d'un envoi automatique. Je me rappelle avoir tenté de bidouiller de ce côté là : tenter de signer le logiciel, tenter de forcer l'autorisation (car elle était grisée dans le menu de mon téléphoe). Rien n'avait fonctionné.

Aujourd'hui, je me suis à nouveau intéressé à ce sujet. J'ai décidé d'interfacer mon téléphone avec mon ordinateur avec gammu (logiciel libre de gestion de téléphone portable/modem compatible avec un large panel de téléphones). Je me suis dit que couplé à cron (pour un envoi régulier) ou at (pour un envoi ponctuel), ça devait le faire.

Alors certes, il faut une "proximité" avec un ordinateur mais avec le bluetooth, ça ne devrait pas poser de problèmes. Alors certes, il faut que l'ordinateur associé reste allumé mais avec la "démocratisation" des machines à faible consommation, ça ne devrait pas être un problème et puis, ce n'est que pour tester et pour le fun qu'on fait ça 😛 .

Gammu s'installe sur une Debian de manière classique :

sudo apt-get install gammu

Ensuite, il faut raccorder votre téléphone à votre machine. Dans mon cas, cela se fera en Bluetooth. J'utilise donc gnome-bluetooth (installé par défaut normalement) pour appairer mon téléphone et ma machine. Basiquement "Configurer un nouveau périphérique ..." puis suivre l'assistant. Ne pas cocher les cases concernant l'utilisation du téléphone comme modem/périphérique réseau.

Avant de commencer la configuration de gammu, il vous faut l'adresse matérielle bluetooth de votre téléphone (Bluetooth Device Address). Pour l'obtenir :

hcitool scan

Vous obtiendrez une sortie comme celle-là :

00:1D:98:3E:24:12	Nokia 6300

La configuration de gammu se fait facilement :

gammu-config

Une interface semi-graphique s'affiche. Dans "Port", il faut saisir la Bluetooth Device Address obtenue à l'étape précédente. Dans "Connection", il faut choisir "bluephonet", module dédié aux Nokia over Bluetooth. On ne touchera pas au reste. On choisit "Save" et on valide par "OK".

Je vous laisse découvrir les commandes de gammu avec gammu help ... Il y'en a des inutiles donc indispensables comme "nokiavibratest", des intéressantes comme getlocation, des non fiables comme "battery", ... Bref, à vous de découvrir.

Pour tester l'envoi d'un SMS :

echo "sms de test" | gammu sendsms TEXT +336xxxxxxxx OU gammu sendsms TEXT +336xxxxxxxx -text "sms de test"

Pour demander un accusé de réception, il faut ajouter l'option "-report" Il y a aussi l'option -validity pour définir la période de validité si non-remise 😉

Pour envoyer un SMS à une date donnée, il suffit d'utiliser la commande at. Exemple :

$ at 06:00
warning: commands will be executed using /bin/sh
at> /usr/bin/gammu sendsms TEXT +336xxxxxxxx -text "Bonjour !"    
at> <EOT> (Pressez CTRL+D)
job 8 at Thu Nov 29 06:00:00 2012

Ici nous envoyons un SMS à 6h le jour même.

Pour envoyer un mail régulièrement, il faut utiliser cron. crontab -e puis :

00 06 * * * /usr/bin/gammu sendsms TEXT +336xxxxxxxx -text "Bonjour !"

Ici, nous envoyons le SMS tous les matins à 6h.

Pour l'intérêt d'une telle manip, je ne trouve rien de sérieux donc ... être le premier à souhaiter un anniversaire (envoi d'un SMS à minuit pile), gagner un pari stupide du genre "je pari que je m'endors après toi" (envoi d'un sms toutes les 5 minutes pour dire qu'on ne dort pas encore alors qu'en vrai si) ... Désolé.

En dehors de cron/at, gammu doit pouvoir s'interfacer avec les logiciels de monitoring pour envoyer des alertes SMS si l'on ne souhaite pas utiliser les API des opérateurs ou autres API. Gammu doit aussi pouvoir s'utiliser dans un script de spam par SMS même si il existe des logiciels plus performants pour ce genre de choses.