Envoyer des SMS depuis la ligne de commande


1Présentation

Ce mini-tutoriel a pour but de créer une commande CLI servant à envoyer des SMS à des téléphones portables.

Pour envoyer les SMS, nous utiliserons le service smsmode.com, qui fournit une API. Temma propose une source de données afin de manipuler cette API de manière transparente.

En prérequis, vous devrez donc vous créer un compte sur smsmode.com, puis générer une clé d'API dans l'interface utilisateur.


2Création du projet

Si vous avez déjà un projet Temma existant, vous pouvez sauter cette étape.

Si le projet Temma ne servira pas à servir un site web, et que vous n'aurez pas à traiter des templates Smarty, vous pouvez installer le projet avec la commande suivante 

$ composer create-project digicreon/temma-project-api mon_api

Si par contre vous souhaitez créer un projet Temma complet, qui pourra aussi servir pour un site web, installez-le de cette manière :

$ composer create-project digicreon/temma-project-web mon_site

3Configuration

Nous nous en tiendrons à une configuration minimale, contenant le strict nécessaire.

Éditez le fichier etc/temma.php :

<?php

return [
    'application' => [
        'dataSources' => [
            'sms' => 'smsmode://API_KEY'
        ],
    ],
];
  • Ligne 6 : Définition de la source de données connectée à smsmode. Remplacez API_KEY par votre clé d'API smsmode.

4Contrôleur

Avec Temma, les commandes CLI s'écrivent comme des contrôleurs web, qui sont exécutés grâce au programme comma.

Ici, nous allons créé un contrôleur Sms, qui contiendra une action send.
Pour cela, créez le fichier cli/Sms.php :

<?php

/** Contrôleur Sms. */
class Sms extends \Temma\Web\Controller {
    /**
     * Action servant à envoyer des SMS.
     * @param  string  $cellphone  Numéro de téléphone du destinataire.
     * @param  string  $msg        Message textuel à envoyer.
     */
    public function send(string $cellphone, string $msg) {
        // envoi du message
        $this->sms[$cellphone] = $msg;
    }
}

Comme vous pouvez le voir, le code est très simple.
L'action prend deux paramètres : le numero de téléphone du destinataire, et le message à envoyer.


5Exécution

L'exécution du contrôleur se fait comme pour toute commande CLI de Temma, en passant par le programme comma :

$ bin/comma Sms send --cellphone=336XXXXXXXX --msg="Hello World"

Il est possible d'envoyer le même message à plusieurs destinataires, en listant les numéros de téléphones séparés par des virgules :

$ bin/comma Sms send --cellphone=336XXXXXXXX,336ZZZZZZZZ --msg="Hello"