2
1 159

API SMS OVHcloud

Apprenez comment utiliser l'API SMS en PHP d'OVHcloud pour envoyer des SMS.

IMPORTANT : Ce tutoriel explique comment utiliser l'API SMS d'OVHcloud pour envoyer des SMS en France. Il utilise des services et des fonctionnalités disponibles en France qui peuvent ne pas être disponibles dans d'autres pays. Les offres SMS d'OVHcloud sont actuellement (2026) commercialisées en France, au Royaume-Uni, en Irlande, en Espagne, en Italie et en Pologne. Les services disponibles, la tarification, la configuration de l'API et les paramètres de l'expéditeur peuvent varier selon le pays associé à votre compte OVHcloud.

Pour éditer un SMS en ligne avec calcul de la taille du message et du nombre de SMS envoyés, consultez la page Édition d'un SMS.

99 / 160  -  1 SMS 7bit

 compte OVHcloud → compte SMS → identifiants API → ovh.inc → envoi d'un SMS en PHP

Créez un compte chez OVHcloud.

Rendez-vous sur la page SMS Pro d'OVHcloud. Créez un compte SMS. NOTE : Les nouveaux clients en France peuvent bénéficier de 20 crédits SMS offerts pour tester le service.

Dans le tableau de bord votre espace client OVHcloud, cliquez sur Télécom puis sur SMS. Le nom du compte SMS est affiché, e.g. sms-ce10000-1.

Envoyer des SMS avec l'API OVHcloud en PHP

Installez le code de l'API OVHcloud à la racine du site avec Composer :

$ cd /var/www/izendsms.com
$ composer require ovh/ovh

La commande a créé le dossier vendor et les fichiers composer.json et composer.lock.

{
    "require": {
        "ovh/ovh": "^3.5"
    }
}

Éditez le fichier .gitignore à la racine du site. Ajoutez composer.lock à la fin du fichier. NOTE : Le dossier vendor est déjà dans la liste des fichiers ignorés par Git. Sinon, ajoutez-le.

Git
  1. /izendsms.com
    1. .gitignore
    2. composer.json

Commitez cette version :

$ git status
$ git add composer.json .gitignore
$ git commit -m'Requires ovh/ovh in composer.json'

L'utilisation de l'API demande 5 paramètres :

$ovh_endpoint Région de l'API : ovh-eu
$ovh_application_key Identifie l'application
$ovh_application_secret Authentifie l'application
$ovh_consumer_key Autorise l'application à accéder à l'API
$ovh_service_name Nom du compte SMS associé au compte OVHcloud

Les paramètres $ovh_application_key, $ovh_application_secret et $ovh_consumer_key sont fournis lors de la création des identifiants pour l'API. Le paramètre $ovh_endpoint est fixé à ovh-eu pour l'API OVHcloud Europe. Le paramètre $ovh_service_name est l'identifiant du compte du service SMS associé au compte OVHcloud qui a créé les identifiants pour l'API.

Créez le fichier ovh.inc dans le dossier includes avec le contenu suivant :

  1. global $ovh_endpoint;
  2.  
  3. $ovh_endpoint='ovh-eu';
  4.  
  5. global $ovh_application_key, $ovh_application_secret, $ovh_consummer_key;
  6.  
  7. $ovh_application_key=false;
  8. $ovh_application_secret=false;
  9. $ovh_consumer_key=false;
  10.  
  11. global $ovh_service_name;
  12.  
  13. $ovh_service_name=false;

Allez à la page Create API Keys pour créer les identifiants associés au compte OVhcloud qui a un compte SMS actif. Remplissez les champs Application name et Application description, e.g. izendsms et Envoi de SMS par izendsms.com. Optez pour une durée de validité, e.g. 30 days.

Autorisez les requêtes suivantes :

GET /sms/
GET /sms/*/jobs
POST /sms/*/jobs
GET /sms/*
DELETE /sms/*/jobs/*

Appuyez sur Create.

Assignez la clé de l'application (AK) au paramètre $ovh_application_key, la clé secrète de l'application (AS) au paramètre $ovh_application_secret et le jeton d'autorisation (CK) au paramètre $ovh_consummer_key.

Assignez le nom du compte SMS, e.g. sms-*-1, au paramètre $ovh_service_name.

API Explorer

Créez le fichier testovhsms.php dans le dossier tests avec le contenu suivant :

  1. define('ROOT_DIR', dirname(__FILE__));
  2.  
  3. set_include_path(get_include_path() . PATH_SEPARATOR . ROOT_DIR . DIRECTORY_SEPARATOR . 'library');
  4. set_include_path(get_include_path() . PATH_SEPARATOR . ROOT_DIR . DIRECTORY_SEPARATOR . 'includes');
  5.  
  6. define('USAGE', 'php -f %s name | info | send telnum msgtext | pending | cancel smsid');
  7.  
  8. function abort($msg, $code=1) {
  9.     echo $msg, PHP_EOL;
  10.     exit($code);
  11. }
  12.  
  13. function usage() {
  14.     global $argv;
  15.  
  16.     abort(sprintf(USAGE, basename($argv[0])), 1);
  17. }
  18.  
  19. require_once 'ovh.inc';
  20.  
  21. if (! ($ovh_application_key and $ovh_application_secret and $ovh_consumer_key)) {
  22.     abort('ovh.inc?');
  23. }
  24.  
  25. require_once 'vendor/autoload.php';
  26. use \Ovh\Api;
  27.  
  28. $ovh = new Api($ovh_application_key, $ovh_application_secret, $ovh_endpoint, $ovh_consumer_key);
  29.  
  30. if (!($argc >= 2)) {
  31.     usage();
  32. }
  33.  
  34. $telnum=$msgtext=$smsid=false;
  35.  
  36. $action=$argv[1];
  37.  
  38. switch ($action) {
  39.     case 'name';
  40.         break;
  41.     case 'info';
  42.         break;
  43.     case 'send';
  44.         if (!($argc == 4)) {
  45.             usage();
  46.         }
  47.         $telnum=$argv[2];
  48.         $msgtext=$argv[3];
  49.         break;
  50.     case 'pending';
  51.         break;
  52.     case 'cancel';
  53.         if (!($argc == 3)) {
  54.             usage();
  55.         }
  56.         $smsid=$argv[2];
  57.         break;
  58.     default:
  59.         usage();
  60. }
  61.  
  62. switch ($action) {
  63.     case 'name';
  64.         try {
  65.             $r = $ovh->get('/sms/');
  66.  
  67.             print_r($r);
  68.         }
  69.         catch (Exception $e) {
  70.             die($e->getMessage());
  71.         }
  72.         break;
  73.  
  74.     case 'info';
  75.         try {
  76.             $r = $ovh->get('/sms/' . $ovh_service_name);
  77.  
  78.             print_r($r);
  79.         }
  80.         catch (Exception $e) {
  81.             die($e->getMessage());
  82.         }
  83.         break;
  84.  
  85.     case 'send';
  86.         $args = array(
  87.             'senderForResponse' => true,
  88.             'message'           => $msgtext,
  89.             'receivers'         => array($telnum),
  90.             'validityPeriod'    => '1440',
  91.             'differedPeriod'    => '2880',
  92.         );
  93.  
  94.         try {
  95.             $r = $ovh->post('/sms/' . $ovh_service_name . '/jobs', $args);
  96.  
  97.             print_r($r);
  98.         }
  99.         catch (Exception $e) {
  100.             die($e->getMessage());
  101.         }
  102.         break;
  103.  
  104.     case 'pending';
  105.         try {
  106.             $r = $ovh->get('/sms/' . $ovh_service_name . '/jobs');
  107.  
  108.             print_r($r);
  109.         }
  110.         catch (Exception $e) {
  111.             die($e->getMessage());
  112.         }
  113.         break;
  114.  
  115.     case 'cancel';
  116.         try {
  117.             $r = $ovh->delete('/sms/' . $ovh_service_name . '/jobs/' . $smsid);
  118.         }
  119.         catch (Exception $e) {
  120.             die($e->getMessage());
  121.         }
  122.         break;
  123.  
  124.     default:
  125.         break;
  126. }

Créez un lien vers le fichier tests/testovhsms.php dans le dossier racine du site :

$ ln tests/testovhsms.php testovhsms.php

Dans le dossier racine du site, essayez le script :

$ php -f testovhsms.php
php -f testovhsms.php name | info | send telnum msgtext | pending | cancel smsid

Le programme affiche son usage.

Vérifiez le nom du compte SMS :

$ php -f testovhsms.php name
Array
(
    [0] => sms-ce10000-1
)

Vérifiez que le paramètre de configuration $ovh_service_name défini dans le fichier ovh.inc désigne un compte SMS retourné dans la liste. IMPORTANT : Les autres commandes du script testovhsms.php utilise le paramètre $ovh_service_name.

Affichez les informations du compte SMS :

$ php -f testovhsms.php info
Array
(
...
    [status] => enable
    [creditsLeft] => 20
    [name] => sms-ce10000-1
...
)

En cas d'erreur d'accès, le programme affiche une erreur HTTP 403 :

Client error: `GET https://eu.api.ovh.com/1.0/sms/sms-ce10000-1/` resulted in a `403 Forbidden` response {"class":"Client::Forbidden","message":"This call has not been granted","httpCode":"403 Forbidden","errorCode":"NOT_GRAN (truncated...)

Les identifiants ne donnent pas accès à une requête GET '/sms/*'. Recréez les identifiants avec tous les droits d'accès nécessaires.

Envoyez un SMS en utilisant le numéro de téléphone associé au compte SMS :

$ php -f testovhsms.php send +33600000000 'Test API SMS OVHcloud'
Array
(
    [tag] => rzz3lb0jg98ekk2a
    [validReceivers] => Array
        (
            [0] => +33600000000
        )

    [creditsLeft] => 19
    [invalidReceivers] => Array
        (
        )

    [totalCreditsRemoved] => 1
    [ids] => Array
        (
            [0] => 12345678
        )
)

Notez le numéro retourné par le champ [ids], e.g. 12345678.

IMPORTANT : Le script testovhsms.php ne demande pas l'envoi immédiat du SMS mais le programme avec un délai de 24 heures. En supprimant la requête à temps, vous pouvez tester l'API sans consommer votre crédit. Si vous voulez valider la réception du SMS, mettez en commentaire le paramètre validityPeriod dans le code.

Vérifiez dans votre espace client chez OVHcloud que l'envoi du SMS est planifié.

Affichez les envois en attente :

$ php -f testovhsms.php pending
Array
(
    [0] => 12345678
)

Annulez l'envoi du SMS :

$ php -f testovhsms.php cancel 12345678

Vérifiez dans votre espace client chez OVHcloud que vous avez récupéré votre crédit SMS.

OVH API

Git

Supprimez le lien sur le fichier tests/testovhsms.php dans la dossier racine du site :

$ rm testovhsms.php
  1. /izendsms.com
    1. includes
      1. ovh.inc
    2. tests
      1. testovhsms.php

Commettez cette version :

$ git status
$ git add includes/ovh.inc tests/testovhsms.php
$ git commit -m'Adds the SMS API by OVHcloud'

Édition d'un SMS

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].