Envoyer des SMS avec l’API FreeMobile
Ce qu’il y a de bien avec FreeMobile ce n’est pas le fait qu’il est fait baisser le prix des forfaits chez la concurrence, mais leur API!!!
FreeMobile offre une API qui permet d’envoyer des SMS à nous même. Certains diront toujours, mais pour en faire quoi ? Bien sur il faut y trouver une utilité et pour certains ça ne servira à rien^^.
Ce qu’il y a de bien c’est que cette API est disponible sur tous leurs forfaits même celui à deux euros.
Je me suis donc crée une petite class qui permet d’envoyer des SMS pour m’avertir par exemple quand quelqu’un se connecte en root sur mon serveur…
L’avantage ? Recevoir la notification même quand notre téléphone n’a pas internet ce qui peut être souvent beaucoup plus pratique surtout qu’on a plus de chance de voir un SMS qu’un mail^^.
Pour l’utiliser rien de plus simple:
Il faut aller sur son compte FreeMobile et activer la fonction et récupérer ça clé API.
Pour envoyer l0es SMS, on a besoin de 3 paramètres:
- L’identifiant: c’est la suite de nombre pour se connecter au site de FreeMobile.
- La clé API généré
- Le message envoyé encodé
Ce qui donne une url de ce type:
https://smsapi.free-mobile.fr/sendmsg?user=1*0***77&pass=***&msg=Hello+Word+!!!
Pour savoir si le SMS à été envoyé, il faut regarder les retour d’header ce qui je trouve n’est pas pratique, un retour en JSON serait bien mieux:
- 200 : Le SMS a été envoyé sur votre mobile.
- 400 : Un des paramètres obligatoires est manquant.
- 402 : Trop de SMS ont été envoyés en trop peu de temps.
- 403 : Le service n’est pas activé sur l’espace abonné, ou login / clé incorrect.
- 500 : Erreur côté serveur. Veuillez réessayer ultérieurement.
Donc voici le code de la class:
class FreeMobile { // ---------- ---------- /** * Permet de définir automatiquement des paramètres par défauts de la class. * * Ces paramètres par défaut seront utilisé avec ces valeurs sauf si ils sont modifiés. */ function __construct() { $this->FreeMobile_compte_url = 'https://smsapi.free-mobile.fr/sendmsg'; // URL du service FreeMobile $this->FreeMobile_compte_defaut = 'SimonBHB'; // Compte à utilisé par defaut $this->FreeMobile_api_utilisateur = array( 'SimonBHB' => '1*0***77', 'Compte_2' => '***', 'Compte_3' => '***' ); // Vos identifiants $this->FreeMobile_api_mot_de_passe = array( 'SimonBHB' => '***', 'Compte_2' => '***', 'Compte_3' => '***' ); // Les clés API $this->FreeMobile_api_texte = 'Hello Word!!! Message par défaut'; // Le message par defaut } // ---------- ---------- public function connexion_api_FreeMobile() { if(!empty($this->FreeMobile_api_utilisateur[ $this->FreeMobile_compte_defaut ] )) { if( !empty($this->FreeMobile_api_utilisateur[ $this->FreeMobile_compte_defaut ]) AND !empty($this->FreeMobile_api_mot_de_passe[ $this->FreeMobile_compte_defaut ])) { $url = $this->FreeMobile_compte_url.'?user='.$this->FreeMobile_api_utilisateur[ $this->FreeMobile_compte_defaut ].'&pass='.$this->FreeMobile_api_mot_de_passe[ $this->FreeMobile_compte_defaut ].'&msg='.urlencode($this->FreeMobile_api_texte); @file_get_contents($url); switch (http_response_code()) { case 200: $message = "1 - Le SMS a été envoyé avec succès."; break; case 400: $message = "Un des paramètres obligatoires est manquant"; break; case 402: $message = "Trop de SMS ont été envoyés en trop peu de temps."; break; case 403: $message = "Le service n\'est pas activé sur l\'espace abonné, ou login / clé incorrect"; break; case 500: $message = "Erreur sur serveur Free Mobile."; break; default: $message = "erreur inconnue."; } return $message; } else { return 'Une erreur c\'est produite, un des paramètres obligatoires est manquant'; } } else { return 'Une erreur c\'est produite, compte non enregisté dans la class'; } } }
Pour utiliser la class:
$FreeMobile = new FreeMobile(); // On démarre la class // $FreeMobile->FreeMobile_compte_defaut = 'SimonBHB'; // On choisit un compte dans la class, si on met rien on prend celui par defaut $FreeMobile->FreeMobile_api_texte = 'Ceci est un message envoyé automaquement qui utilise l\'API FreeMobile'; // Le message à envoyer echo $FreeMobile->connexion_api_FreeMobile(); // La reponse
L’autre avantage avec cette class c’est qu’on peut facilement rajouter d’autre compte pour envoyer des SMS facilement:
$FreeMobile = new FreeMobile(); // $FreeMobile->FreeMobile_compte_defaut = 'SimonBHB'; // On utilise le compte par defaut $FreeMobile->FreeMobile_api_texte = 'Ceci est un message envoyé automaquement qui utilise l\'API FreeMobile'; echo $FreeMobile->connexion_api_FreeMobile(); // Second SMS: $FreeMobile->FreeMobile_compte_defaut = 'Compte_2'; // On utilise un autre compte $FreeMobile->FreeMobile_api_texte = 'Ceci est un autre message envoyé automaquement qui utilise l\'API FreeMobile'; echo $FreeMobile->connexion_api_FreeMobile();
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.