Envoyer des SMS avec l’API OVHcloud en PHP
Objectif
Les SMS sont largement utilisés pour diffuser des informations pratiques, suivre l'état d'une commande ou d'un processus transactionnel, être alerté d'un évènement inhabituel ou encore rappeler des rendez-vous. Ce guide détaille la méthode d'envoi d'un premier SMS avec l'API OVHcloud RESTful en PHP.
Apprenez comment envoyer des SMS avec l'API RESTful en PHP
Prérequis
- Disposer d’un environnement de développement PHP
- Disposer d'un compte SMS OVHcloud avec des crédits SMS
En pratique
Étape 1 : Récupération du Wrapper PHP for OVH APIs
Rendez vous sur le projet https://github.com/ovh/php-ovh
Vous allez pouvoir intégrer le wrapper PHP rapidement grâce à composer : https://getcomposer.org/
Suivez les instructions sur GitHub, créez le fichier composer.json comme indiqué dans le projet : GitHub> Readme > Quickstart
Vous allez récupérer dans votre projet le répertoire ./vendor/ovh/ovh/ ainsi que le fichier autoload.php permettant de gérer toutes les dépendances et les imports.

Étape 2 : Création des identifiants
Des identifiants sont nécessaires pour consommer l’API SMS. Ces identifiants sont créés une fois pour identifier l’application qui va envoyer des SMS. La durée de vie de ces identifiants est paramétrable.
Créez vos identifiants de Script (all keys at once) sur cette page : https://api.ovh.com/createToken (cette url vous permet d'avoir automatiquement les bons droits pour les étapes décrites dans ce guide).

Dans cet exemple simple, nous récupérons les droits pour avoir accès aux informations sur le compte, à la possibilité de voir les envois en attente et à la possibilité d’envoyer des SMS.
- GET /sms
- GET /sms/*/jobs
- POST /sms/*/jobs
L’étoile (*) active les appels à ces méthodes pour tous vos comptes SMS. Vous pouvez également restreindre les appels à un seul compte, si vous gérez plusieurs comptes SMS sur votre compte OVHcloud, en remplaçant « /sms » par « /sms/NOM-DU-COMPTE » et « /sms/*/ » par «/sms/NOM-DU-COMPTE/».
Vous récupérez vos identifiants pour votre script :
- Application Key (identifie votre application)
- Application Secret (authentifie votre application)
- Consumer Key (autorise l'application à accéder aux méthodes choisies)

L'environnement est prêt, les identifiants sont créés, vous êtes prêt pour coder votre script PHP.
Étape 3 : Mise en place d'un SDK PHP
Pour plus de simplicité nous avons mis en place un SDK PHP que vous pouvez retrouver ici.
Étape 4 : Connexion basique à l'API
Vous pouvez maintenant tester la bonne connexion à l’API en affichant les détails de chaque compte SMS:
<?php
/**
* Liste et affiche le détail de chaque compte SMS
*
* Rendez-vous sur https://eu.api.ovh.com/createToken/index.cgi?GET=/sms/&GET=/sms/*/jobs&POST=/sms/*/jobs
* pour générer les clés d'accès API pour:
*
* GET /sms
* GET /sms/*/jobs
* POST /sms/*/jobs
*/
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;
$endpoint = 'ovh-eu';
$applicationKey = "your_app_key";
$applicationSecret = "your_app_secret";
$consumer_key = "your_consumer_key";
$conn = new Api( $applicationKey,
$applicationSecret,
$endpoint,
$consumer_key);
$smsServices = $conn->get('/sms/');
foreach ($smsServices as $smsService) {
print_r($smsService);
}
?>
Vous devriez récupérer au lancement de ce script la liste de vos comptes SMS.
Étape 5 : Envoi du premier SMS
Pour envoyer des SMS, utilisez la méthode POST jobs : https://api.ovh.com/console/#/sms/{serviceName}/jobs#POST
Uniquement pour les comptes OVHcloud en France hors DOM-TOM :
Le paramètre senderForResponse va permettre d’utiliser un numéro court, ce qui vous permet d’envoyer directement des SMS sans devoir créer un expéditeur alphanumérique (par exemple: votre nom).
Les numéros courts permettent aussi de recevoir des réponses de la part des destinataires de votre SMS, ce qui peut être utile pour une enquête de satisfaction, une application de vote, un jeu...
<?php
/**
* Envoie un SMS puis affiche la liste des SMS en attente d’envoi.
*
* Rendez-vous sur https://eu.api.ovh.com/createToken/index.cgi?GET=/sms/&GET=/sms/*/jobs&POST=/sms/*/jobs
* pour générer les clés d'accès API pour:
*
* GET /sms
* GET /sms/*/jobs
* POST /sms/*/jobs
*/
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;
$endpoint = 'ovh-eu';
$applicationKey = "your_app_key";
$applicationSecret = "your_app_secret";
$consumer_key = "your_consumer_key";
$conn = new Api( $applicationKey,
$applicationSecret,
$endpoint,
$consumer_key);
$smsServices = $conn->get('/sms/');
foreach ($smsServices as $smsService) {
print_r($smsService);
}
$content = (object) array(
"charset"=> "UTF-8",
"class"=> "phoneDisplay",
"coding"=> "7bit",
"message"=> "Bonjour les SMS OVH par api.ovh.com",
"noStopClause"=> false,
"priority"=> "high",
"receivers"=> [ "+3360000000" ],
"senderForResponse"=> true,
"validityPeriod"=> 2880
);
$resultPostJob = $conn->post('/sms/'. $smsServices[0] . '/jobs', $content);
print_r($resultPostJob);
$smsJobs = $conn->get('/sms/'. $smsServices[0] . '/jobs');
print_r($smsJobs);
?>
Voici le type de réponse attendue :
sms-XXXXXX-1
Array
(
[totalCreditsRemoved] => 1
[invalidReceivers] => Array
(
)
[ids] => Array
(
[0] => 26929925
)
[validReceivers] => Array
(
[0] => +3360000000
)
)
Array
(
)
Vous récupérez bien le compte SMS (ServiceName). Vous obtenez une réponse avec 1 crédit consommé pour un numéro valide. Enfin, vous constatez qu'il n’y pas de SMS en attente d’envoi.
Taille des SMS à caractère commercial
Un SMS à caractère commercial devra obligatoirement inclure la mention STOP. Celle-ci contient 11 caractères et est automatiquement déduite des 160 caractères de base du 1er SMS. Le tableau ci-dessous indique donc le nombre maximum de caractères autorisés pour les SMS à caractère commercial.
Exemple : en encodage 7bits, si votre message fait plus de 149 caractères, il sera envoyé en 2 SMS et coûtera donc 2 crédits.
| Encodage | 1er SMS | 2ème SMS et suivants |
|---|---|---|
| 7bits (norme GSM 03.38) | 149 caractères | 153 caractères |
| Unicode | 59 caractères | 70 caractères |
Aller plus loin
La console d'API (https://api.ovh.com/console/#/sms) vous permettra de découvrir d'autres méthodes pour faciliter l'intégration de services SMS tels que : SMS permettant la réponse (uniquement pour les comptes OVHcloud en France), envoi en masse avec fichier CSV, publipostage, suivi des accusés de réception...
Échangez avec notre communauté d'utilisateurs.