Avez-vous déjà remplacé l’envoi d’un mail par un SMS ? En effet, tout comme de nombreux sites le proposent désormais, envoyer un notification par un message texte, autrement dit un SMS, au lieu d’une notifications par courrier électronique, autrement dit un mail, peut être très utile dans le cas d’informations sensibles, ou urgentes. Après quelques fouilles sur le Web, j’ai retenu quelques solutions, dont il est très simple de mettre en place. En tout cas pas plus difficile que d’envoyer un mail… Laissez-moi vous montrer comment !
Méthodologie
À mon insu, l’envoi de SMS peut être très facile puisqu’il vous suffit d’envoyer un mail… En effet, vous pouvez envoyer votre texte à une adresse e-mail et il sera délivré au numéro que vous avez spécifié. En revanche, cette solution est, dans certain cas, peu optimale… Pourquoi ? Tout simplement parce que vous devrez connaître deux éléments : le numéro de téléphone du destinataire (jusque là rien d’anormal), et l’opérateur de ce dernier… Oui vous avez bien lu, il sera nécessaire de connaître le nom de domaine du réseau de votre destinataire, afin de spécifier le domaine. Pas l’idéal vous allez me dire, mais c’est nécessaire.
Heureusement, dans une autre partie de l’article, je vais vous présenter une autre méthode pour s’en passer !
Ci-dessous un schéma simplifié de la façon dont un message peut être envoyé à partir d’une application Web sur un dispositif sans fil :
Voici les différentes étapes du processus :
- Le message est généré depuis l’application Web, et est stocké et exécuté sur un serveur HTTP, puis envoyé au travers d’Internet comme un mail
- Le mail est reçu par une passerelle de service SMS (Short Message Gateway), qui convertit le message mail en un SMS
- Ce dernier est alors remis à un Short Message Service Center (SMSC), un serveur acheminant les données à des dispositifs mobiles
- Enfin, le SMS est finalement transmis sur le réseau pour le destinataire
Utilisation de la fonction mail
en PHP
Donc, comme je viens de vous l’annoncer ci-dessous vous allez devoir connaître le domaine de l’opérateur de votre destinataire. Pour cela, j’ai trouvé une liste des opérateurs et des domaines (Carrier) : http://www.venture-ware.com/kevin/web-development/email-to-sms/
Note : Vous avez également la possibilité de la télécharger ici
Ainsi, après avoir récupéré le domaine, et afin d’envoyer un message texte (SMS), votre mail doit être construit comme suit : {numeroTelephone}@{SMSAddress}
.
La méthode PHP à utiliser pour envoyer des mails est mail()
. Son utilisation est assez simple :
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
[/sourcecode]
L’utilisation de la fonction mail
et le format du message texte à envoyer est aussi simple :
mail("06##########@sfr.fr", "", "SMS envoyé par PHP !", "From: Yohann Poiron <[email protected]>\r\n");
[/sourcecode]
Notez qu’aucun objet n’est fourni, et surtout l’ajout du FROM
en dernier paramètre afin de signaler au destinataire par qui le message a été envoyé.
Qui savait que c’était si facile ? J’ai toujours imaginé que le protocole pour l’envoi d’un SMS était compliqué… Apparemment pas !
Utilisation du service TextMagic
TextMagic en quelques mots …
Créé en 2001, TextMagic est une société de marketing mobile qui offre un service de SMS pour les entreprises, agences, promoteurs et particuliers. Elle développe et commercialise sur Internet des solutions de communication par SMS. TextMagic offre plus que juste une API SMS, il vous permet également de :
- Envoyer et recevoir instantanément des messages SMS à partir d’un compte de messagerie
- Transférer tous les messages électroniques sur votre mobile
- Envoyer des SMS depuis n’importe quel navigateur Web
- Recevoir des SMS à partir de votre famille, amis et clients via une option
- Gérez vos SMS via le logiciel de SMS TextMagic pour PC et Mac
L’API TextMagic
Le seul inconvénient de l’utilisation de la méthode ci-dessus, est que vous devez connaître le nom de domaine du réseau pour un numéro de téléphone donné. Une question un peu déplacée à demander à quelqu’un lorsque vous prévoyez de faire de la publicité… Heureusement, il y a une méthode plus simple, et surtout plus efficace.
En effet, un service Web appelé TextMagic vient combler toutes les lacunes. TextMagic fournit une API pour une variété de langages (PHP, Perl, Python, Ruby, Java, etc) et est très facile à configurer.
L’API permet aux développeurs d’envoyer des requêtes HTTPS en GET
ou POST
à la passerelle. Toutefois, la méthode GET
n’est pas recommandée en raison de la restriction de longueur sur celle-ci. Cette communication vous permet d’envoyer et de recevoir des SMS et de vérifier le statut de réception de ceux que vous avez déjà envoyés.
L’URL de la requête doit contenir trois paramètres obligatoires (votre identifiant au service, un mot de passe API généré depuis votre console d’administration et la méthode) pour être exécutée. Tous les paramètres doivent être encodés en UTF-8
.
Note : L’API prend en charge plus de 200 pays et plus de 700 réseaux mobiles…
Une fois que vous avez un compte TextMagic et que vous avez téléchargé l’assistant de l’API fourni par TextMagic, tout ce que vous devez faire, c’est de générer un code un peu personnalisé pour envoyer votre SMS :
// Inclure la librairie PHP TextMagic
require(‘textmagic-sms-api-php/TextMagicAPI.php’);
// Indiquer votre nom d’utilisateur et mot de passe de l’API pas de votre compte TextMagic
$username = ‘monutilisateur’;
$password = ‘monmotdepasse’;
// Création d’une nouvelle instance de TextMagic
$textmagic = new TextMagicAPI(array(
‘username’ => $username,
‘password’ => $password
));
// Envoi d’un message au ‘336########’
$result = $textmagic->send(‘Réveille toi !’, array(336########), true);
[/sourcecode]
Si l’on affiche le résultat on obtiendra :
// Résultat :
array(3) {
["messages"]=>
array(1) {
[20405128]=>
string(11) "336########),"
}
["sent_text"]=>
string(15) "Réveille toi !"
["parts_count"]=>
int(1)
}
[/sourcecode]
Il s’agit d’un tableau informatif concernant l’envoi de votre message. Par la suite, pour vérifier le statut de l’envoi, il suffit d’appeler la méthode messageStatus()
:
// Statut du message en fonction de son ID
$result = $textmagic->messageStatus(array(20405128));
// Résultat :
array(1) {
[20405128]=>
array(4) {
["text"]=>
string(15) "Réveille toi !"
["status"]=>
string(1) "b"
["created_time"]=>
int(1327516340)
["reply_number"]=>
string(11) "33673276734"
}
}
[/sourcecode]
Si vous voulez vérifier l’état d’un numéro de téléphone et le coût du crédit de l’envoi d’un SMS à ce numéro, vous pouvez faire un appel à la fonction checkNumber
:
// Obtenir de l’information sur le numéro du SMS
$result = $textmagic->messageStatus(array(336########),"));
// Résultat :
array(1) {
[33689501286]=>
array(2) {
["price"]=>
int(1)
["country"]=>
string(2) "FR"
}
}
[/sourcecode]
Il existe d’autres fonctionnalités au sein de l’API. Je vous propose de découvrir les autres fonctions ainsi qu’une deuxième méthode pour utiliser le service, depuis une page dédiée.
Une fois votre SMS envoyé, vous pourrez le retrouver depuis votre interface d’administration de TextMagic. Dès lors, vous aurez un récapitulatif de vos envois comme ceci :
Note : À noter que le SMS peut prendre plusieurs minutes pour arriver au destinataire et ce, dans les deux solutions proposées
[samples id= »9456″]
Conclusion
TextMagic est un service vraiment génial. Un compte très facile à créer, une API est simple, et le meilleur de tous, pas besoin de connaître le domaine du destinataire !
En testant le service je n’ai pas réellement vu de problèmes, et surtout de choses impossibles à faire… Mieux, avec les nombreuses fonctions proposées par l’API il sera très facile pour vous d’intégrer au sein de votre système, de nouvelles fonctionnalités. En effet, ces jours-ci il est très fréquent d’envoyer ou de confirmer des détails en envoyant un SMS à un mobile.
Avez-vous déjà mis en place un tel système ? S’agissait-il de TextMagic ?