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:

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

Você pode enviar a mesma mensagem para vários destinatários listando os números de telefone separados por vírgulas:

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