Enviar SMS desde la línea de comandos


1Introducción

Este breve tutorial tiene como objetivo crear un comando CLI que envía mensajes SMS a teléfonos móviles.

Para enviar los SMS, usaremos el servicio smsmode.com, que ofrece una API. Temma proporciona una fuente de datos que permite interactuar con esa API de forma transparente.

Como requisito previo, tendrás que crear una cuenta en smsmode.com y generar una clave de API desde la interfaz de usuario.


2Configuración del proyecto

Si ya tienes un proyecto Temma existente, puedes saltarte este paso.

Si tu proyecto Temma no va a servir un sitio web y no vas a usar plantillas Smarty, instálalo con el siguiente comando:

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

Si en cambio quieres crear un proyecto Temma completo que también pueda servir un sitio web, usa:

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

3Configuración

Nos quedaremos con una configuración mínima, con solo lo estrictamente necesario.

Edita el archivo etc/temma.php:

<?php

return [
    'application' => [
        'dataSources' => [
            'sms' => 'smsmode://API_KEY'
        ],
    ],
];
  • Línea 6: Define la fuente de datos conectada a smsmode. Reemplaza API_KEY con tu clave de API real de smsmode.

4Controlador

En Temma, los comandos CLI se escriben como controladores web y se ejecutan mediante el programa comma.

Aquí vamos a crear un controlador Sms con una acción send.
Crea el archivo cli/Sms.php:

<?php

/** Controlador Sms. */
class Sms extends \Temma\Web\Controller {
    /**
     * Acción usada para enviar mensajes SMS.
     * @param  string  $cellphone  Número de teléfono del destinatario.
     * @param  string  $msg        Mensaje de texto a enviar.
     */
    public function send(string $cellphone, string $msg) {
        // envía el mensaje
        $this->sms[$cellphone] = $msg;
    }
}

Como puedes ver, el código es muy simple.
La acción recibe dos parámetros: el número de teléfono del destinatario y el mensaje a enviar.


5Ejecución

Para ejecutar el controlador, usa la herramienta CLI de Temma comma, como cualquier otro comando:

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

Puedes enviar el mismo mensaje a varios destinatarios indicando los números de teléfono separados por comas:

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