2
757

API SMS OVH

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.

Créez un compte chez OVH.

Commandez 20 SMS gratuits sur la page SMS Pro d'OVH.

Dans votre espace sur OVH, cliquez sur l'onglet Telecom. Dans le menu, cliquez sur SMS. Le nom du service est affiché, e.g. sms-ce10000-1.

Cliquez sur le nom du service. Cliquez sur l'onglet Guides. Lisez les Questions fréquentes.

La page Envoyer des SMS avec l'API OVH en PHP donne toutes les explications pour démarrer avec l'interface. Toutes les fonctions du SDK sont décrites sur la page OVH API.

Créez vos identifiants sur la page https://api.ovh.com/createToken. Remplissez le formulaire et appuyez sur Create keys. Vous obtenez la clé de l'application (AK), la clé secrète de l'application (AS) et le jeton d'autorisation (CK), les paramètres de configuration de 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_consummer_key=false;
  10.  
  11. global $ovh_service_name;
  12.  
  13. $ovh_service_name=false;

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 service au paramètre $ovh_service_name.

Ajoutez le code de l'API OVH à la racine du site avec Composer :

$ composer require ovh/ovh

Créez le fichier tests/testovhsms.php 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_consummer_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_consummer_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.             echo $r[0], PHP_EOL;
  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.             'charset'           => 'UTF-8',
  88.             'class'             => 'phoneDisplay',
  89.             'coding'            => '7bit',
  90.             'noStopClause'      => false,
  91.             'priority'          => 'high',
  92. //          'sender'            => 'iZend',
  93.             'senderForResponse' => true,
  94.             'validityPeriod'    => '1440',
  95.             'differedPeriod'    => '2880',
  96.             'message'           => $msgtext,
  97.             'receivers'         => array($telnum),
  98.         );
  99.  
  100.         try {
  101.             $r = $ovh->post('/sms/' . $ovh_service_name . '/jobs', $args);
  102.  
  103.             print_r($r);
  104.         }
  105.         catch (Exception $e) {
  106.             die($e->getMessage());
  107.         }
  108.         break;
  109.  
  110.     case 'pending';
  111.         try {
  112.             $r = $ovh->get('/sms/' . $ovh_service_name . '/jobs');
  113.  
  114.             print_r($r);
  115.         }
  116.         catch (Exception $e) {
  117.             die($e->getMessage());
  118.         }
  119.         break;
  120.  
  121.     case 'cancel';
  122.         try {
  123.             $r = $ovh->delete('/sms/' . $ovh_service_name . '/jobs/' . $smsid);
  124.         }
  125.         catch (Exception $e) {
  126.             die($e->getMessage());
  127.         }
  128.         break;
  129.  
  130.     default:
  131.         break;
  132. }

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 service configuré par OVH :

$ php -f testovhsms.php name
sms-ce10000-1

Comparez la valeur retournée à la valeur du paramètre de configuration $ovh_service_name défini dans le fichier ovh.inc. IMPORTANT : Les autres commandes du script testovhsms.php utilise le paramètre $ovh_service_name.

Affichez les options du service :

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

Envoyez un SMS :

$ php -f testovhsms.php send +3360000000 'iZend - Le moteur web - http://www.izend.org'
Array
(
    [totalCreditsRemoved] => 1
    [invalidReceivers] => Array
        (
        )

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

    [validReceivers] => Array
        (
            [0] => +3360000000
        )

)

Notez le numéro retourné par le champ [ids].

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 OVH 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 OVH 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

Éditez le fichier .gitignore à la racine du site et ajoutez la ligne suivante :

vendor

Le dossier vendor n'est pas inclus dans le dépôt.

  1. /izendsms.com
    1. .gitignore
    2. composer.json
    3. composer.lock
    4. includes
      1. ovh.inc
    5. tests
      1. testovhsms.php

Commettez cette version :

$ git status
$ git add .gitignore composer.json composer.lock includes/ovh.inc tests/testovhsms.php
$ git commit -m'Adds the SMS API by OVH'

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].