search
top

Gérer l’envoi de SMS en PHP : TextMagic vous aide

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 :

Gérer l'envoi de SMS en PHP : TextMagic vous aide

Source de l’image

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 ]] )

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 <contact@blognt.fr>\r\n");

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);

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)
}

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"
  }
}

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"
  }
}

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 :

Gérer l'envoi de SMS en PHP : TextMagic vous aide

Note : À noter que le SMS peut prendre plusieurs minutes pour arriver au destinataire et ce, dans les deux solutions proposées

Démos et téléchargement

Vous pouvez télécharger la démo de l'article dans un seul fichier ZIP.

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 ?

Pour en savoir plus sur l'auteur de cet article... Yohann a fondé le Blog des Nouvelles Technologies en 2010. Autodidacte en matière de développement de sites en PHP, j’ai toujours poussé ma curiosité sur les sujets et les actualités du Web. Je suis actuellement engagé en tant que responsable interopérabilité et développeur Web. En savoir plus sur cet auteur...
Partager Pin It

Articles récents

Les attaques DDoS de The Pirate Bay sont à valoir à un ancien membre Anonymous Les attaques DDoS de The Pirate Bay sont à valoir à un ancien membre Anonymous Les attaques DDoS de The Pirate Bay sont à valoir à un ancien membre Anonymous
Mozilla montre une nouvelle version du design de Firefox pour Android Mozilla montre une nouvelle version du design de Firefox pour Android Mozilla montre une nouvelle version du design de Firefox pour Android
Vidéo de déballage du Samsung Galaxy S III Vidéo de déballage du Samsung Galaxy S III Vidéo de déballage du Samsung Galaxy S III
Wikileaks, après The Pirate Bay, est également la cible d'attaques DDoS ! Wikileaks, après The Pirate Bay, est également la cible d'attaques DDoS ! Wikileaks, après The Pirate Bay, est également la cible d'attaques DDoS !
[MAJ] The Pirate Bay tombe suite à une attaque DDoS, de nouveau accessible ! [MAJ] The Pirate Bay tombe suite à une attaque DDoS, de nouveau accessible ! [MAJ] The Pirate Bay tombe suite à une attaque DDoS, de nouveau accessible !
Adobe ColdFusion 10 est lancé avec un soutien accru d'HTML5 Adobe ColdFusion 10 est lancé avec un soutien accru d'HTML5 Adobe ColdFusion 10 est lancé avec un soutien accru d'HTML5
  • Pingback: Gérer l’envoi de SMS en PHP : TextMagic vous aide | Le blog des nouvelles technologies : Web, Technologies, Développement, Interopérabilité

  • Frank

    Article très intéressant, merci. Par contre la pub qui clignote partout sur votre site détourne l’attention et dessert l’article malheureusement.

    • http://www.blog-nouvelles-technologies.fr Yohann Poiron

      Merci de ce retour Frank ! Sur la V2 qui va arriver prochainement, ce sera différent …

  • JaniK

    Article très intéressant et très bien expliquer. L’envoi des textos via la fonction mail() est donc entièrement gratuit ?

    • http://www.blog-nouvelles-technologies.fr Yohann Poiron

      Oui j’ai pas eu de problème !

  • http://www.blog-nouvelles-technologies.fr Yohann Poiron

    Oui je l’ai indiqué dans l’article il est possible d’attendre de longues minutes… et peut-être que l’hébergeur à un problème avec la fonction mail…
    Si tu veux tester rapidement, il suffit d’envoyer un mail depuis ton client mail en mettant en destinataire par exemple : 06xxxxxxxx@sfr.fr

    • Guillaume Turchini

      Je me suis envoyé un message vers midi par la page de test et toujours rien reçu…

      • http://www.blog-nouvelles-technologies.fr Yohann Poiron

        Hum peut-être que mon hébergeur à bloqué les mails… suite à trop d’erreurs…

  • JaniK

    Merci pour ta réponse. Penses-tu que ce procédé fonctionne avec la classe PHPMailer ?

    • http://www.blog-nouvelles-technologies.fr Yohann Poiron

      Très bonne question… si tu as un retour je suis preneur et je le mentionnerais en remarque de l’article !

  • JaniK

    Merci pour ta réponse. Penses-tu que ce procédé fonctionne avec la classe PHPMailer ?

  • http://twitter.com/nlesconnec Nicolas Lesconnec

    TextMagic semble nettement plus cher que Tropo (cf https://www.tropo.com/pricing/, 2 US cents / SMS à l’international). 
    Ca se justifie au niveau de la qualité du service ou du support ?

    Sinon Twilio est pour l’instant restreint aux US+UK, mais la France devrait suivre (SMS non dispos pour le moment voix uniquement)

    • http://www.blog-nouvelles-technologies.fr Yohann Poiron

      Très bonne question… je ne connaissais pas ce service ! Il est vrai que le prix peut faire peur !

  • http://twitter.com/mrBinR mrBinR

    Hello, il y a une chose que je ne comprends pas, si tu l’envois par email via mail(), qui paie ? le destinataire ?

    • http://www.blog-nouvelles-technologies.fr Yohann Poiron

      Oui c’est ça ! Les tarifs s’appliquent toujours au destinataire du SMS (généralement les messages envoyés via le mail seront facturés comme un SMS de non-réseau)

      Aurais-je du le préciser…

  • Pingback: php | Pearltrees

  • http://www.blog-nouvelles-technologies.fr Yohann Poiron

    Merci pour ces informations ! Je ne savais pas …

top

+ On en parle ...

sur le blog
  • toma: A mon sens chrome a encore, bien sûr, des améliorations à faire mais il est déjà largement au-dessus de ses...
  • Yohann Poiron: Disqus a annoncé une version en Juin 2012 pour le grand public !
  • R2D2_Droid: a quand une version publique ?
  • Yohann Poiron: Pas encore je teste au plus vite…
  • Yohann Poiron: Effectivement votre raisonnement tient tout à fait la route…
sur Twitter