Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Envio de SMS

Hoje é possível realizar o envio de SMS pelo NFS para um celular de terceiro, antes de qualquer coisa é necessário avaliar junto ao Tiago Pinheiro essa necessidade e ele deve aprovar, porque usamos o Zenvia ou Allcance, que geram custo adicional.

Envio de SMS pelo Zenvia no NFS

Foi criada uma opção de envio de SMS para um terceiro através do Zenvia. Para isso é necessário configurar o parâmetro SMS_ZENVIA_CONFIG na nfs_core_par_parametros sendo um json com from e token:

{ "from": "meu_user", "token" : "meu_token"}

Esses dados vão servir para autenticar junto a API do Zenvia e para enviar um sms basta usar o entry point abaixo:

$zenvia = new ZenviaSmsService();
$smsData = new SmsData('CODIGOPais_DDD_NUMERO', 'Last test');
$result = $zenvia->send($smsData);
print_r($result);

SmSData é um modelo de dados que no seu construtor espera no primeiro parâmetro o número completo do usuário que vai receber a mensagem, sendo assim com o código do país, ddd e número e o segundo parâmetro é a mensagem.

No serviço ZenviaSmsService, ao instancia temos como parâmetro o modelo SmsData que contém os dados necessário para envio.

Para saber mais: https://zenvia.github.io/zenvia-openapi-spec/v2/#tag/SMS

Envio de SMS pelo Allcance no NFS

Foi criada uma opção de envio de SMS para um terceiro através do Allcance. Para isso é necessário configurar o parâmetro SMS_ALLCANCE_CONFIG na nfs_core_par_parametros sendo um json com usuário e senha na chave "login", e, um token na chave "token", caso o cliente tenha disponível um token personalizado sem data de expiração:

{
    "login": { 
        "username": "email",
        "password": "senha"
    },
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIU..."
}

Obs: Em caso de preenchimento da chave "token", essa será priorizada em relação ao uso dos dados de "login"!

Caso seja para testes preliminares é possível você mesmo fazer um cadastro para testes, se não me engano tem direito de 10 sms por dia no horário comercial.

Cada SMS é composto por 152 caracteres, logo se enviar mais do que isso será considerado mais de um, um ponto importante é que para caracteres unicode a cobrança é diferente, sendo 72 representando um SMS, com isso a cobranã pode sair de 2 para 5, eleveando o custo.

Para saber mais entre no site deles: Allcance

Estão disponíveis no CORE dois métodos para uso da classe AllcanceSmsService:

/**
* Envia um texto SMS simples definindo o destino e o texto da mensagem.
*
* @param SmsData $smsData Entidade modelo contendo o destino e o conteúdo do SMS
*/
public function send(SmsData $smsData): string {...}
/**
 * Retorna o saldo de todos os serviços habilitados para a conta/token configurado.
 */
public function getCredits(): string {...}

No entry point o código será algo similar a:

//Envio do SMS
$allcanceService = new AllcanceSmsService();
$smsData = new SmsData('DDD_NUMERO', 'Last test');
$result = $allcanceService->send($smsData);
print_r($result);
//Consulta ao SALDO
$allcanceService = new AllcanceSmsService();
$result = $allcanceService->getCredits();
print_r($result);

SmSData é um modelo de dados que no seu construtor espera no primeiro parâmetro o número completo do usuário que vai receber a mensagem, sendo assim com o ddd e número e o segundo parâmetro é a mensagem.