Como Enviar SMS através da API SMPP usando PHP
// Primeiro vincule como receptor para obter relatórios de entrega $smpp->bindReceiver($username, $password); while (true) { try { $pdu = $smpp->readPDU(); if ($pdu instanceof DeliverSm) { $messageId = $pdu->getReceiptedMessageId(); $status = $pdu->getMessageStatus(); echo "Relatório de entrega para $messageId: $status\n"; // Envie uma resposta $smpp->respond($pdu, new DeliverSmResp()); } } catch (Exception $e) { echo "Erro ao ler PDU: " . $e->getMessage() . "\n"; break; } }Este código vincula o cliente como um receptor para ouvir relatórios de entrega, processa os PDUs recebidos e envia respostas apropriadas. Isso garante que sua aplicação PHP possa rastrear os status de entrega de mensagens de forma eficaz.
Cliente PHP SMPP Completo para Envio de SMS via API SMPP
Abaixo está uma classe PHP abrangente que encapsula a funcionalidade da API SMPP, incluindo gerenciamento de conexão, envio de mensagens e lógica de reconexão. Esta implementação é projetada para uso em produção, com tratamento robusto de erros e modularidade.
<?php require 'vendor/autoload.php'; use Smpp\Client; use Smpp\Transport\Socket; use Smpp\Address; use Smpp\SMS; class SMPPClient { private $transport; private $smpp; private $config; private $isConnected = false; public function __construct($config) { $this->config = $config; $this->connect(); } public function connect() { try { $this->transport = new Socket([$this->config['host']], $this->config['port']); $this->transport->setRecvTimeout(30000); $this->smpp = new Client($this->transport); $this->transport->open(); $this->smpp->bindTransceiver( $this->config['username'], $this->config['password'] ); $this->isConnected = true; echo "Conectado ao servidor SMPP\n"; } catch (Exception $e) { echo "Falha na conexão: " . $e->getMessage() . "\n"; $this->reconnect(); } } public function sendSMS($from, $to, $message) { if (!$this->isConnected) { throw new Exception("Não conectado ao servidor SMPP"); } try { $fromAddr = new Address($from, SMPP::TON_ALPHANUMERIC); $toAddr = new Address($to, SMPP::TON_INTERNATIONAL, SMPP::NPI_ISDN); $sms = new SMS($fromAddr, $toAddr, $message); $sms->setDataCoding(SMPP::DATA_CODING_DEFAULT); return $this->smpp->sendSMS($sms); } catch (Exception $e) { $this->isConnected = false; throw $e; } } public function reconnect() { $this->close(); sleep(5); $this->connect(); } public function close() { if ($this->isConnected) { $this->smpp->close(); $this->isConnected = false; } } public function __destruct() { $this->close(); } } // Exemplo de uso $config = [ 'host' => 'your.ozeki.server', 'port' => 2775, 'username' => 'your_username', 'password' => 'your_password' ]; $client = new SMPPClient($config); try { $messageId = $client->sendSMS('12345', '+1234567890', 'Olá do PHP!'); echo "Mensagem enviada com ID: $messageId\n"; } catch (Exception $e) { echo "Erro ao enviar mensagem: " . $e->getMessage() . "\n"; } ?>
Esta classe fornece uma implementação reutilizável em PHP da API SMPP, com métodos para conexão, envio de mensagens, reconexão em caso de falha e limpeza de recursos. Ela foi projetada para ser modular e fácil de integrar em aplicações maiores.
Melhores Práticas para Construir um Cliente PHP SMPP
Para garantir que sua aplicação PHP usando a API SMPP seja robusta e escalável, siga estas melhores práticas:
- Implemente Tratamento de Erros Robusto: Capture e trate exceções para falhas de conexão, erros no envio de mensagens e problemas no processamento de PDUs para garantir confiabilidade.
- Use Conexões Persistentes: Mantenha uma única conexão com a API SMPP para reduzir sobrecarga e melhorar o desempenho.
- Implemente Enfileiramento de Mensagens: Para envio de SMS em alto volume, use uma fila para gerenciar a entrega de mensagens e evitar sobrecarga do servidor.
- Monitore o Estado da Conexão: Verifique continuamente o status da conexão e implemente lógica de reconexão automática para lidar com interrupções de rede.
- Use um Processo Worker: Execute seu cliente PHP SMPP como um daemon ou processo worker para operação contínua em ambientes de produção.
- Registre Atividades: Implemente logs para rastrear eventos de conexão, status de mensagens e erros para depuração e monitoramento.
Conclusão
Este guia abrangente demonstrou como implementar um cliente PHP
para a API SMPP para enviar e gerenciar mensagens SMS usando
o Ozeki SMS Gateway. Ao aproveitar a biblioteca php-smpp
,
desenvolvedores podem lidar com detalhes de baixo nível do protocolo SMPP enquanto
se concentram em construir aplicações robustas. Os exemplos de código fornecidos cobrem
gerenciamento de conexão, envio de mensagens, manipulação de relatórios de entrega e uma
classe PHP completa para uso em produção. Para aplicações avançadas,
considere implementar recursos adicionais como enfileiramento de mensagens, registro
detalhado e monitoramento para melhorar confiabilidade e escalabilidade.
Para ambientes de produção, certifique-se de que seu cliente PHP SMPP inclua tratamento robusto de erros, monitoramento de conexão e registro. A API SMPP suporta recursos avançados como priorização de mensagens e limitação de taxa, que podem ser explorados conforme suas necessidades de aplicação crescem.
More information
- Como configurar uma conexão de cliente API SMPP com seu SMSC
- Como configurar um servidor API SMPP para enviar e receber SMS de múltiplos aplicativos
- Como escolher o provedor de API SMPP certo para o seu negócio
- Como enviar SMS usando a API SMPP no nível do protocolo
- Como enviar SMS através da API SMPP usando Python
- Como enviar SMS através da API SMPP usando Javascript
- Como enviar SMS através da API SMPP usando Java
- Como enviar SMS através da API SMPP usando PHP
- Como enviar SMS através da API SMPP usando C#
- Como enviar SMS através da API SMPP usando C/Cpp
- Como receber SMS usando a API SMPP
- Como receber um relatório de entrega de SMS usando a API SMPP
- FAQ da API SMPP