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:
Puedes enviar el mismo mensaje a varios destinatarios indicando los números de teléfono separados por comas: