Enviar SMS pela Linha de Comando
1Introdução
Este tutorial curto tem como objetivo criar um comando CLI que envia mensagens SMS para telefones celulares.
Para enviar os SMS, vamos usar o serviço smsmode.com, que fornece uma API. O Temma oferece uma fonte de dados que permite interagir com essa API de forma transparente.
Como pré-requisito, você precisará criar uma conta no smsmode.com e gerar uma chave de API na interface do usuário.
2Configuração do Projeto
Se você já tem um projeto Temma existente, pode pular esta etapa.
Se o seu projeto Temma não vai servir um site e você não vai usar templates Smarty, instale-o com o seguinte comando:
$ composer create-project digicreon/temma-project-api mon_api |
Se, em vez disso, você quiser criar um projeto Temma completo que também possa servir um site, use:
$ composer create-project digicreon/temma-project-web mon_site |
3Configuração
Vamos manter uma configuração mínima, apenas com o que é essencial.
Edite o arquivo etc/temma.php:
<?php
return [
'application' => [
'dataSources' => [
'sms' => 'smsmode://API_KEY'
],
],
];
- Linha 6: define a fonte de dados conectada ao smsmode. Substitua API_KEY pela sua chave de API real do smsmode.
4Controlador
No Temma, os comandos CLI são escritos como controladores web e executados por meio do programa comma.
Aqui, vamos criar um controlador Sms com uma ação send.
Crie o arquivo cli/Sms.php:
<?php
/** Controlador Sms. */
class Sms extends \Temma\Web\Controller {
/**
* Ação usada para enviar mensagens SMS.
* @param string $cellphone Número de telefone do destinatário.
* @param string $msg Mensagem de texto a ser enviada.
*/
public function send(string $cellphone, string $msg) {
// envia a mensagem
$this->sms[$cellphone] = $msg;
}
}
Como você pode ver, o código é bem simples.
A ação recebe dois parâmetros: o número de telefone do destinatário e a mensagem a ser enviada.
5Execução
Para executar o controlador, use a ferramenta CLI do Temma, comma, como qualquer outro comando:
Você pode enviar a mesma mensagem para vários destinatários listando os números de telefone separados por vírgulas: