Fermer
DéveloppementWeb

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

Gérer l

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 :

[sourcecode language= »PHP »]
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 :

[sourcecode language= »PHP »]
mail("06##########@sfr.fr", "", "SMS envoyé par PHP !", "From: Yohann Poiron <contact@blognt.fr>\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 :

[sourcecode language= »PHP »]
// 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 :

[sourcecode language= »PHP »]
// 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() :

[sourcecode language= »PHP »]
// 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 :

[sourcecode language= »PHP »]
// 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 :

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

[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 ?

Mots-clé : APImail()message textePHPsamplesSMSTextMagic
Yohann Poiron

L’auteur Yohann Poiron

J'ai fondé le BlogNT 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 qu'architecte interopérabilité.
  • 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.

    • 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 ?

  • JaniK

    Je viens d’utiliser ta page de test et je n’ai encore rien reçu. Y’a-t-il un délai à attendre ?
    En tout cas, bravo pour ton blog que je suis tout les jours 😉

  • 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…

      • 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 ?

    • 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 ?

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

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

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

    • 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…

      • jptsetung

        Depuis quand c’est le destinataire d’un sms qui paye???

  • Keirua

    Les hébergeurs limitent l’utilisation de l’envoi de mails (de l’ordre de 100 à 500 par jour pour les offres de base). Le but est bien évidemment d’empêcher le spam et les systèmes de mailing, mais quand même permettre d’envoyer quelques mails pour que les utilisateurs puissent valider la création de leur compte par exemple. De plus si le mail n’est pas arrivé, c’est peut être également car lorsqu’on envoie un mail, il n’y a pas d’engagement du côté de l’hébergeur à ce que le mail parte immédiatement, cela peut prendre jusqu’à 2 jours.

  • Pingback: php | Pearltrees()

  • Merci pour ces informations ! Je ne savais pas …

  • Pingback: Nexen.net: Envoie SMS en PHP » Coca commente le Web()

  • Pingback: Gérer l’envoi de SMS en PHP : TextMagic vous aide | Le blog des nouvelles technologies : Web, Technologies, Développement, Interopérabilité « « Le Blog à Yo_O Le Blog à Yo_O()

  • Wonderfully done posting….Bulk SMS Marketing Services in Delhi

  • Linda Khelassi

    Slt
    j’ai utilisé ce code mais il m’affiche cette erreur :
    Parse error: syntax error, unexpected ‘$envoi’ (T_VARIABLE)

    <?php

    $to = "06********@mobilis.dz";

    $message = "SMS envoyé par PHP !"

    $envoi = mail($to,"",$message, "From: Khelassi linda rn »);

    if ($envoi == true) {

    echo « Message envoyé ! »;

    }
    ?>
    SVP aidez moi 🙁

Lire les articles précédents :
Bénéfice record de revenus pour Apple lors du T1 2012, et de futurs annonces ?

Apple a annoncé ses résultats pour son premier trimestre fiscal de 2012, révèle TNW. Ces revenus s'élèvent à 46.33 milliards...

Fermer