Recherche


imprimer pdf
Envoyer un SMS via un script PHP

Vous pouvez envoyer des SMS via des script PHP , C# , ...
Pour cela vous devez utiliser SoAPI.

Par quelle fonction faut-il passer ?


Vous pouvez faire un envoi classique ou alors un envois via des utilisateurs à qui vous pouvez attribuer un quota.
Pour cela vous allez utiliser la fonction telephonySmsUserSend


Mise en place


Dans un premier temps, créer un utilisateur :

Vous devez dans un premier temps accéder à votre Manager OVH. Vous retrouvez le bouton suivant sur la page d'accueil du site ovh.com



Cliquez sur l'icône SMS



Cliquez sur Gérer les Options SoAPI puis sur Gérer les utilisateurs SoAPI

             

Vous avez la liste des utilisateur :



Vous pouvez en ajouter / supprimer

Vous pouvez attribuer un quota si vous souhaitez les limiter à une certaine quantité d'SMS

Vous pouvez attribuer une limite. Si le quota arrive sous cette limité vous êtes prévenu par mail / sms selon votre choix.

Utilisation de SoAPI


Le script d'envoi :
La fonction que nous allons appeler via un script PHP nécessite d'être en php5, je choisi donc de nommer mon fichier send.php5 afin de ne pas avoir d'erreur de version.

Des commentaires sont présents sur le code ce qui devrait vous permettre de bien voir ce qu'il se passe. Tout au long de ce guide nous allons prendre comme exemple un nic-handle fictif (xx123456-ovh) avec le mot de passe (ovh123456) et avec le compte SMS tout aussi fictif (sms-xx123456-1). Le numéro de mobile de ce client n'existant pas est le 0600110011 soit au format international +33600110011.

La documentation sur "telephonySmsSend" se présente sous la forme suivante :

int telephonySmsUserSend ( string login, string password, string smsAccount, string numberFrom, string numberTo, string message, int smsValidity, int smsClass, int smsDeferred, int smsPriority )

Les variables sont décrites sur la page : http://www.ovh.com/soapi/fr/?method=telephonySmsUserSend

La fonction envoi en elle même ressemble donc à :

$result = $soap->telephonySmsUserSend("UTILISATEUR_SOAPI", "MDP_DE_LUTILISATEUR", "SMS-xx123456-1", "NUMERO_EXPEDITEUR", "NUMERO_DESTINATAIRE", "LE MESSAGE A ENVOYER", "TEMPS_POUR_LENVOI", "TYPE_DE_SMS", "TEMPS_AVANT_ENVOI", "PRIORITE_DU_SMS", "", "");


Avec notre exemple, nous allons aller au plus simple en laissant les paramètres par défaut :

$result = $soap->telephonySmsUserSend("utilisateur", "password", "sms-xx123456-1", "+33972101010", "+33612345789", "Bonjour");



Envoyer un SMS via un code source, c'est bien, mais créer des variables afin de mettre un formulaire en place c'est mieux. Donc en poussant notre exemple, voici ce que l'on peu proposer :

Je créé donc un fichier en HTML de la forme :

<!-- ouverture de la balise html -->
<html>

<!-- on ouvre la balise du formulaire en indiquant que la methode post sera faite sur le fichier send.php5, le nom de ce formulaire est sms -->
<form action="send.php5" method="post" name="sms">

<!-- une information sur la page, ici on indique le nom du champ a remplir ainsi que le format a respecter -->
Destinataire : (exemple pour envoyer un sms sur un mobile francais : +33600110011)

<!-- on saute une ligne pour la presentation de la page -->
<br />

<!-- un champ de type text avec une taille de 20 pouvant contenir 16 caracteres, le nom de ce champ est destinataire -->
<input type="text" name="destinataire" size="20" maxlength="16" />

<br /><br />

Message :
<br />

<!-- voici la zone de texte pour le message du sms, la taille de la zone est de 30 en largeur avec 10 lignes, le nom de cette zone est texte -->
<textarea name="texte" cols="30" rows="10"></textarea>

<br />

<!-- on envoi le formulaire via le bouton envoyer, le nom de ce bouton est envoi -->
<input name="envoi" type="submit" value="envoyer" />

<!-- on ferme la balise du formulaire -->
</form>

<!-- fermeture de la balise html -->
</html>

J'ai appelé ce fichier form.html


Maintenant, je vais créer le fichier send.php5 qui va être appelé par form.html :

<!-- ouverture de la balise php -->
<?php

// utilisateur SoAPI
$utilisateur="Robert";

// mot de passe de l'utilisateur
$pass="15cdsqS3Q";

//entrer le nom de votre compte sms, remplacer sms-xx123456-1 par votre propre compte
$sms_compte="sms-xx123456-1";

/*entrer le numéro emetteur du sms, ce numéro doit etre identifie dans votre manager,
remplacer +33600110011 par votre propre numero de mobile*/
$from="+33600110011";


/* creation de la variable to dans laquelle nous recuperons via la methode post
le champ portant le nom destinataire au niveau de la page form.html */
$to=$HTTP_POST_VARS['destinataire'];

/* creation de la variable message dans laquelle nous recuperons via la methode post
le champ portant le nom texte au niveau de la page form.htlm */
$message=$HTTP_POST_VARS['texte'];

// ouverture de la fonction soapi

try {
$soap = new SoapClient("https://www.ovh.com/soapi/soapi-re-1.29.wsdl");

//telephonySmsUserSend
$result = $soap->telephonySmsUserSend("$utilisateur", "$pass", "$sms_compte", "$from", "$to", "$message");

echo "telephonySmsUserSend successfull\n";
print_r($result); // your code here ...
} catch(SoapFault $fault) {
echo $fault;
}

// fermeture de la balise php
?>


Si tout se passe bien, vous avez maintenant une page HTML (form.html) sur laquelle vous pouvez entrer le numéro d'un destinataire via un formulaire en ligne ainsi qu'un message SMS. Si vous cliquez sur le bouton "envoyer", la page send.php5 est appelée et votre SMS est envoyé.


A savoir :
Pensez à sécuriser l'accès des ces pages car elles permettent d'utiliser votre compte et votre crédit SMS.

Vu que nous utilisons un script PHP avec des variables, l'envoi de SMS peu être automatisé. Vous pouvez également créer une boucle qui fera des envois de SMS en masse. Vous pouvez aussi faire appel à une base de données... Les possibilités sont donc très grandes.


Pour les serveurs dédiés :
Si vos hébergez votre script sur votre propre serveur dédié (les clients mutualisés ne sont pas concernés par cette partie), vérifier les points suivants :
- ouvrir le port de sortie (tcp) 443 sur votre Firewall pour les liens en https,
- ouvrir le port de sortie (tcp) 1664 sur votre Firewall pour le serveur SOAPI,
- activer le ssl sur votre serveur,
- vérifier que la classe SOAP est présente sur votre machine,
- vérifier que vous acceptez au minimum php5.