Envio de SMS pela Internet: Da API ao Smartphone como Gateway
Quatro abordagens para enviar SMS programaticamente — do serviço em nuvem ao modem físico atrás da sua mesa.
Seja para notificações de sistemas, alertas de monitoramento, autenticação em dois fatores ou automações criativas durante uma viagem, enviar um SMS pela internet é uma necessidade que aparece cedo ou tarde na vida de qualquer desenvolvedor. As opções vão do pragmático ao surpreendentemente artesanal.
O SMS — apesar de ter quase cinco décadas — continua sendo o canal mais universalmente alcançável do mundo. Não precisa de app instalado, não depende de internet no destinatário, não cai em spam silencioso. É por isso que sistemas críticos ainda o usam e por isso que desenvolvedores continuam precisando enviá-lo programaticamente.
Neste artigo, exploramos quatro abordagens distintas para integrar o envio de SMS em sistemas e automações: APIs em nuvem, modems GSM com comandos AT, smartphones como gateways e as chamadas chipeiras ou SIM boxes. Cada uma tem seu lugar dependendo do volume, custo, conectividade e grau de controle que você precisa.
APIs de SMS em nuvem
PagoA forma mais simples e escalável de enviar SMS de qualquer lugar do mundo é através de uma API de terceiros. Você faz uma requisição HTTP com suas credenciais, especifica o número de destino e o conteúdo da mensagem, e o provedor cuida de todo o resto — roteamento internacional, fallbacks de operadora, relatórios de entrega e conformidade regulatória.
O modelo de precificação é quase sempre baseado em consumo: você paga por mensagem enviada, com valores que variam por país de destino. Para baixo volume, o custo é irrisório. Para alto volume, a negociação direta com o provedor pode fazer diferença significativa.
Principais provedores
Exemplo prático com Twilio
A implementação é quase trivial. Com credenciais em mãos (Account SID e Auth Token), basta uma chamada à API REST:
// Instalação: composer require twilio/sdk use Twilio\Rest\Client; $sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $token = 'seu_auth_token'; $twilio = new Client($sid, $token); $mensagem = $twilio->messages->create( '+5511999998888', // destinatário [ 'from' => '+15017122661', // número Twilio 'body' => 'Olá! Sua reserva foi confirmada. ✈️', ] ); echo $mensagem->sid; // SM1234567890abcdef...
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/ACXXX/Messages.json" \ -u "ACXXX:auth_token" \ --data-urlencode "To=+5511999998888" \ --data-urlencode "From=+15017122661" \ --data-urlencode "Body=Sua entrega chegou!"
O principal cuidado é com a regulamentação local de cada país: muitas operadoras bloqueiam SMS enviados por números internacionais ou exigem registro do remetente (Sender ID). Provedores como Twilio e Infobip cuidam disso automaticamente nas regiões onde têm acordos estabelecidos.
Modem GSM e comandos AT+
Pago / GratuitoAntes das APIs em nuvem dominarem o cenário, a forma mais comum de enviar SMS programaticamente era através de um modem GSM conectado ao servidor via USB ou porta serial. O modem é essencialmente um chipset de celular em formato compacto — você insere um SIM card, conecta ao computador e se comunica com ele usando o protocolo AT+, um conjunto de comandos padronizado pela ITU desde os anos 1980.
Modems GSM populares como o Huawei E1750, SIM800L, SIM900 e Quectel EC21 podem ser encontrados por preços que vão de R$50 a R$300. Depois disso, o custo de envio é simplesmente o plano do SIM card inserido — que pode ser um pré-pago convencional ou um chip M2M de operadora empresarial.
Comandos AT+ essenciais para SMS
| Comando | Função | Resposta esperada |
|---|---|---|
| AT | Verificar conexão com o modem | OK |
| AT+CMGF=1 | Definir modo texto (em vez de PDU) | OK |
| AT+CSCS="UTF-8" | Definir charset para suporte a acentos | OK |
| AT+CMGS="+5511999998888" | Iniciar envio para o número especificado | > (aguarda texto) |
| [texto] + Ctrl+Z | Finalizar e enviar a mensagem | +CMGS: 42 + OK |
| AT+CSQ | Verificar força do sinal (0–31) | +CSQ: 18,0 |
| AT+CPIN? | Verificar status do SIM card | +CPIN: READY |
| AT+CMGL="ALL" | Listar mensagens armazenadas na memória | Lista de mensagens |
Automação via PHP com porta serial
// Abre a porta serial onde o modem está conectado $porta = fopen('/dev/ttyUSB0', 'r+b'); if (!$porta) { throw new RuntimeException('Não foi possível abrir a porta serial.'); } // Configura velocidade da serial (Linux) exec('stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb'); $enviar = function(string $cmd) use ($porta): string { fwrite($porta, $cmd . "\r\n"); usleep(500000); return fread($porta, 1024); }; $enviar('AT'); $enviar('AT+CMGF=1'); $enviar('AT+CSCS="UTF-8"'); $enviar('AT+CMGS="+5511999998888"'); $resposta = $enviar("Sua encomenda chegou!\x1A"); // \x1A = Ctrl+Z fclose($porta); if (str_contains($resposta, '+CMGS')) { echo "SMS enviado com sucesso!\n"; }
COM3 ou COM4. No Linux, tipicamente /dev/ttyUSB0 ou /dev/ttyACM0. Use o comando dmesg | grep tty após conectar o modem USB para identificar o dispositivo correto.
Bibliotecas como Gammu (Python/C) e Kannel (gateway SMS completo) abstraem toda essa comunicação serial e adicionam filas, logs, suporte a múltiplos modems e relatórios de entrega. Para produção, dificilmente faz sentido escrever a comunicação serial na mão.
A grande vantagem desta abordagem é a independência de terceiros: você usa o plano do seu SIM card, sem depender de API externa, sem expor dados a provedores. A desvantagem é a escala — um único modem consegue enviar entre 6 e 10 SMS por minuto, limitado pelo próprio protocolo GSM.
Smartphone como gateway SMS via HTTP
Baixo custo / GratuitoAqui entra uma das abordagens mais criativas e práticas para quem já tem um smartphone Android disponível: transformá-lo em um gateway SMS que expõe uma API HTTP local. O celular fica conectado à rede Wi-Fi da casa ou escritório, rodando um app que escuta requisições HTTP e usa a interface de SMS nativa do Android para disparar as mensagens.
É o equilíbrio perfeito entre custo e praticidade. Você usa o plano de dados/SMS do celular, não precisa de hardware adicional e tem acesso à rede GSM real sem modem externo. O app faz a ponte entre o mundo HTTP e o mundo GSM.
Fluxo completo: requisição HTTP interna → gateway Android → SMS real via operadora
Aplicativos populares para esta função
-
SMS Gateway — Android Expõe endpoint REST local. Suporta autenticação por token. Configurável por porta. Opção mais simples e direta.
-
Android SMS Gateway (Play Store) Permite configurar porta HTTP personalizada, autenticação básica e suporta múltiplos SIM cards em dispositivos dual-SIM.
-
AIO SMS Gateway Além de HTTP local, suporta webhooks e integração com serviços externos. Interface de gerenciamento pelo browser.
-
Tasker + AutoShare Para entusiastas de automação: o Tasker pode criar fluxos que recebem intents HTTP e disparam SMS, com lógica customizável.
Como fazer a requisição do servidor
// O smartphone está em 192.168.1.42 na porta 8080 $gatewayUrl = 'http://192.168.1.42:8080/send'; $payload = [ 'phone' => '+5511999998888', 'message' => 'Alerta: servidor respondendo lentamente!', 'sim' => 1, ]; $ch = curl_init($gatewayUrl); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer seu_token_aqui', ], CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, ]); $resposta = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($status === 200) { echo "SMS enviado via gateway Android!\n"; }
O ponto fraco desta solução é a confiabilidade: o celular pode reiniciar, o app pode ser morto pelo sistema operacional para economizar bateria (doze mode), ou a bateria pode descarregar. Para uso crítico, é necessário fixar o app na memória nas configurações do Android, manter o celular plugado e monitorar o uptime do gateway.
SIM Box — a chipeira industrial
PagoMenos conhecida fora de ambientes de telecom, a SIM Box — popularmente chamada de chipeira no Brasil — é essencialmente a evolução do modem GSM em formato rack. Trata-se de um hardware dedicado que acomoda múltiplos SIM cards simultaneamente (tipicamente 4, 8, 16, 32 ou até 128 slots) e expõe todos eles como uma interface de telefonia unificada.
O dispositivo se conecta à rede IP e implementa protocolos VoIP/SIP e interfaces de SMS, funcionando como uma ponte entre o mundo digital e a rede celular — mas com capacidade de envio paralelo muito superior ao modem único. É o hardware preferido em call centers, empresas de marketing SMS e operações de comunicação de alto volume.
GoIP-16 / Dinstar / OpenVox — SIM Box típica
Hardware de gateway GSM multi-canalA maioria dos modelos expõe uma API HTTP REST ou suporte ao protocolo SMPP (Short Message Peer-to-Peer), permitindo integração direta com plataformas de envio como o Kannel ou soluções proprietárias. A interface de administração web facilita monitoramento de sinal, balanceamento de carga entre SIM cards e logs de entrega.
Como funciona na prática
Cada slot da SIM box opera como um modem GSM independente. O firmware do dispositivo orquestra a distribuição de mensagens entre os chips, garantindo que nenhum SIM exceda os limites da operadora. A integração mais comum é via protocolo SMPP (Short Message Peer-to-Peer), o protocolo nativo de telecomunicações para troca de SMS em alta velocidade.
// composer require onlinecity/php-smpp use smpp\SMPP; use smpp\transport\TcpIpTransport; use smpp\SmppClient; use smpp\Address; $transport = new TcpIpTransport('192.168.1.100', 2775); $transport->setRecvTimeout(10000); $smpp = new SmppClient($transport); $smpp->bindTransmitter('usuario', 'senha'); $from = new Address('SistemaCRM', SMPP::TON_ALPHANUMERIC); $to = new Address('+5511999998888', SMPP::TON_INTERNATIONAL); $smpp->sendSMS($from, $to, 'Cobrança disponível no portal.'); $smpp->close();
Fabricantes como GoIP, Dinstar, OpenVox e Synway dominam o mercado de SIM boxes. Muitos modelos também suportam chamadas de voz via VoIP (protocolo SIP), o que os torna versáteis para centrais telefônicas internas que também precisam de SMS.
Comparativo das abordagens
| Abordagem | Custo | Escala | Int'l | Hardware | Offline |
|---|---|---|---|---|---|
| API em nuvem | Por mensagem | ✓ Alta | ✓ | Nenhum | ✗ |
| Modem GSM + AT+ | Plano SIM | ◑ Baixa | ◑ | Modem USB | ✓ |
| Smartphone gateway | Plano SIM | ◑ Média | ◑ | Android | ✓ |
| SIM Box | Hardware + SIMs | ✓ Alta | ◑ | SIM Box | ✓ |
Qual escolher?
Para a maioria dos projetos — sistemas web, automações, notificações de apps — uma API em nuvem como Twilio ou Vonage é a escolha óbvia. Setup em minutos, escalável, sem hardware, com relatórios de entrega e suporte para dezenas de países.
Se você precisa de independência de terceiros e opera em rede local, o smartphone como gateway é surpreendentemente eficaz para volume baixo a médio. Um Android velho com chip pré-pago pode ser tudo que você precisa.
Para embarcados, IoT ou cenários sem internet, o modem GSM com comandos AT+ continua sendo a solução mais robusta e direta, especialmente com chips M2M que têm cobertura em regiões remotas.
E para operações de alto volume com controle total da infraestrutura, a SIM Box entrega paralelismo real com múltiplos SIM cards — desde que usada dentro dos limites legais e dos termos das operadoras.