Recherche


imprimer pdf
Envoyer un SMS via un script PHP


Pour une meilleure sécurité, nous vous recommandons l’utilisez la fonction telephonySmsUserSend , un Guide a été fait pour cela




Par quelle fonction faut-il passer ?


OVH met à disposition depuis plusieurs années des fonctions SOAPI. Cette méthode permet de réaliser les actions disponibles dans le Manager via un script :
http://www.ovh.com/soapi/fr/

La fonction que nous allons voir maintenant est "telephonySmsSend" disponible sur la page :
http://www.ovh.com/soapi/fr/?method=telephonySmsSend

Mise en place


Pré-requis :
Il est indispensable d'avoir un compte SMS de créé dans votre espace Manager pour pouvoir utiliser la procédure qui va suivre. Votre crédit de SMS doit également être positif. Le numéro de l'expéditeur doit être validé par le Manager (rubrique sms). Pour en savoir plus, vous pouvez aller sur le site :
http://www.ovh.com/fr/sms_et_fax/pack_sms.xml?step=tech


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 telephonySmsSend(string session, 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=telephonySmsSend

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

$result = $soap->telephonySmsSend(connexion_au_manager, "compte_sms", "numero_de_l_expediteur", "numero_du_destinataire", "message_du_sms", "temps_pour_l_envoi", "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->telephonySmsSend($session, "sms-xx123456-1", "+33600110011", "numero_du_destinataire", "$message", "", "1", "", "");


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

//entrer votre nic-handle, remplacer xx123456-ovh par votre propre nic-handle
$nic="xx123456-ovh";

//entrer le mot de passe de votre nic-handle, remplacer ovh123456 par votre propre mot de passe
$pass="ovh123456";

//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
{
// on travail en soapi
$soap = new SoapClient("https://www.ovh.com/soapi/soapi-re-1.8.wsdl");

/* connexion a votre manager avec vos identifiants, ici on utilise
le compte xx123456-ovh ($nic) avec le mot de passe ovh123456 ($pass), le nic-handle est francais */
$session = $soap->login("$nic", "$pass","fr", false);

// affichage de la reponse pour la connexion
echo "login successfull\n";

/* on utilise ici le compte sms sms-xx123456-1 ($sms_compte) pris sur notre nic-handle xx123456-ovh,
le numero 06600110011 ($from) a ete identifie dans notre manager on l utilise donc en tant
qu emetteur, le desinataire se place ensuite ($to), la variable $message contient le texte du sms, le vide permet de laisser
les parametres par defaut, le "1" force l envoi du sms au format classique,
le sms est sauvegarde sur le portable client */
$result = $soap->telephonySmsSend($session, "$sms_compte", "$from", "$to", "$message", "", "1", "", "");

// affichage de l etat
echo "telephonySmsSend successfull\n";

// affichage du resultat
print_r($result);

// on ferme la connexion au manager
$soap->logout($session);
// affichage de la reponse de fermeture de connexion
echo "logout successfull\n";

}

catch(SoapFault $fault)
{
// affichage des erreurs
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.