Fonte de dados: Smsmode
1Apresentação
smsmode.com é um serviço de envio de mensagens de texto para telefones celulares. Consulte o site deles para saber os preços.
Esta fonte de dados permite enviar SMS de notificação (em oposição a SMS de marketing; cuidado, o envio de uma mensagem comercial pode expor você a bloqueios).
Se você configurou corretamente os parâmetros de conexão do serviço smsmode, o Temma criará automaticamente um objeto do tipo \Temma\Datasources\Smsmode. Por convenção, vamos supor que você nomeou essa conexão sms no arquivo etc/temma.php (veja documentação de configuração).
Nos controladores, a conexão ao smsmode fica então disponível da seguinte forma:
$sms = $this->sms;
Nos demais objetos gerenciados pelo componente de injeção de dependências, a conexão ao smsmode é acessível da seguinte forma:
$sms = $loader->dataSources->sms;
$sms = $loader->dataSources['sms'];
2Configuração
No arquivo etc/temma.php (veja a documentação de configuração), você declara o DSN (Data Source Name) usado para se conectar ao smsmode.
O DSN de conexão ao smsmode é escrito como: smsmode://[SENDER_NAME:]API_KEY
- SENDER_NAME é uma string opcional, sem espaços ou acentos, que substitui o número do remetente.
- API_KEY é a chave de API que você pode gerar na interface do usuário.
3Chamadas unificadas
3.1Acesso tipo array
use \Temma\Datasources\Smsmode as TµSmsmode;
// envia uma mensagem de texto
$sms['33611223344'] = "Mensagem para enviar";
// envia uma mensagem de texto para vários destinatários
$sms['33611223344,33622334455'] = "Message";
// recupera o status da mensagem
// (veja o método send() abaixo)
$statut = $sms[$msgId];
if ($statut == TµSmsmode::STATUS_SENT) {
// ...
} else if ($statut == TµSmsmode::STATUS_MSG_INTERNAL_ERROR ||
$statut == TµSmsmode::STATUS_INTERNAL_ERROR) {
// ...
} else if ($statut == TµSmsmode::STATUS_INVALID_PARAMETERS) {
// ...
} else if ($statut == TµSmsmode::STATUS_SMS_NOT_FOUND) {
// ...
} else if ($statut == TµSmsmode::STATUS_TEMPORARY_UNAVAILABLE) {
// ...
} else if ($statut == TµSmsmode::STATUS_MSG_RECEIVED) {
// ...
} else if ($statut == TµSmsmode::STATUS_GATEWAY_RECEIVED ||
$statut == TµSmsmode::STATUS_GATEWAY_DELIVERED) {
// ...
} else if ($statut == TµSmsmode::STATUS_DELIVERY_ERROR) {
// ...
}
// apaga uma mensagem programada
// (veja o método send() abaixo)
unset($sms[$msgId]);
3.2Métodos gerais
// apaga uma mensagem programada
// (veja o método send() abaixo)
$sms->remove($msgId);
// apaga várias mensagens programadas
$sms->mRemove([$msgId1, $msgId2, $msgId3]);
3.3Gerenciamento de dados brutos
use \Temma\Datasources\Smsmode as TµSmsmode;
// envia uma mensagem de texto
$sms->write('33611223344', "Message");
// envia uma mensagem de texto para vários destinatários
$sms->write('33611223344,33622334455,33633445566',
"Message");
// envia SMS com agendamento para uma data futura,
// e definição de uma referência interna
$sms->write('33611223344', "Message", [
'sendDate' => '31122029-12:50', // formato 'DDMMYYYY-HH:mm',
'reference' => 'login_1234',
]);
// recupera o status da mensagem
// (veja o método send() abaixo)
$statut = $sms->read($msgId);
if ($statut == TµSmsmode::STATUS_SENT) {
// ...
} else if ($statut == TµSmsmode::STATUS_MSG_INTERNAL_ERROR ||
$statut == TµSmsmode::STATUS_INTERNAL_ERROR) {
// ...
} else if ($statut == TµSmsmode::STATUS_INVALID_PARAMETERS) {
// ...
} else if ($statut == TµSmsmode::STATUS_SMS_NOT_FOUND) {
// ...
} else if ($statut == TµSmsmode::STATUS_TEMPORARY_UNAVAILABLE) {
// ...
} else if ($statut == TµSmsmode::STATUS_MSG_RECEIVED) {
// ...
} else if ($statut == TµSmsmode::STATUS_GATEWAY_RECEIVED ||
$statut == TµSmsmode::STATUS_GATEWAY_DELIVERED) {
// ...
} else if ($statut == TµSmsmode::STATUS_DELIVERY_ERROR) {
// ...
}
// lê o status de várias mensagens
$statuts = $sms->mRead([$msgId1, $msgId2, $msgId3]);
4Chamadas específicas
4.1Envio de mensagem com recuperação do identificador
O uso do método send() é recomendado ao enviar um SMS, pois permite recuperar o identificador da mensagem, o que por sua vez permite recuperar o status da mensagem (ou seja, se ela foi entregue ou não), ou apagar uma mensagem agendada para envio em uma data futura.
// envia uma mensagem de texto
$msgId = $sms->send('33611223344', "Message");
// envia SMS com agendamento para uma data futura,
// e definição de uma referência interna
$msgId = $sms->send('33611223344', "Message",
'31122029-12:50', 'login_1234');
// chamada idêntica, com parâmetros nomeados
$msgId = $sms->send('33611223344', "Message",
sendDate: '31122029-12:50',
reference: 'login_1234');
// envia uma mensagem de texto para vários destinatários
$msgId = $sms->send(['33611223344', '33622334455', '33633445566'],
"Message");
4.2Recuperação do saldo da conta
Para poder enviar SMS usando o serviço smsmode, você primeiro precisa criar uma conta, depois creditá-la comprando créditos.
O método getBalance() é usado para recuperar o saldo disponível na conta, permitindo antecipar a necessidade de recarregá-la.
// recuperação do saldo
$saldo = $sms->getBalance();