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();