PHP - Enviando SMS via Nexmo

Envie SMS com apenas algumas linhas de código! Guia de integração PHP com Nexmo.

PHP - Enviando SMS via Nexmo

Olá meus Unicórnios! 🦄✨

Existem muitas APIs para envio de SMS, porem, a maioria tem pontos negativos:

  • Não enviar internacional
  • Demorar para a mensagem chegar
  • Não ter log do tráfego da mensagem

E nisto a Nexmo se destaca, uma ferramenta pensada para Desenvolvedores.

Criando Credenciais

Inicialmente crie uma conta na Nexmo e carrega créditos em sua conta:

Authentication

Dentro de sua conta, logo na capa, será exibido a "API key" e a "API Secret"

Copie estes dados!

Enviando SMS

Para enviar um SMS, envie um POST para:

https://rest.nexmo.com/sms/json

Aqui, basta enviarmos um POST semelhante ao Json abaixo:

{
  "from": "SeuSite",
  "to": "55479999999",
  "api_key": "[ApiKey]",
  "api_secret": "[ApiSecret]",
  "text": "Teste"
}

Neste Json, precisamos alterar alguns campos:

  • from: O nome de origem (Não um telefone, um nome mesmo) - Exemplo: "Site do Luizinho"
  • to: O telefone de destinatário com DDI - Neste exemplo, o DDI é 55 (Brasil)
  • api_key: A "Api Key" que copiamos do painel da Nexmo
  • api_secret: A "Api Secret" que copiamos do painel da Nexmo
  • text: Mensagem que será enviada no SMS

No retorno da API, iremos receber um Json, onde o elemento "messages[0].status" ira indicar se teve sucesso ou falha.

Em caso de "Sucesso", será retornado o "status: 0":

{
  "message-count": "1",
  "messages": [
    {
      "to": "55479999999",
      "message-id": "7a52fcbc-ed51-4717-93fd-9b4caba5378d",
      "status": "0",
      "remaining-balance": "100",
      "message-price": "0.05110000",
      "network": "72405"
    }
  ]
}

Observe que também é retornado a "message-id", que podemos utilizar para monitorar a entrega da mensagem.

Em caso de "Falha", será retornado um status diferente de "0":

{
  "message-count": "1",
  "messages": [
    {
      "status": "2",
      "error-text": "Missing to param"
    }
  ]
}

Você pode consultar todos os erros possíveis através do guia abaixo:

Vonage API Developer

Integrando com PHP

Agora que já sabemos com funciona, basta fazermos um Curl:

<?
$DadEnv                         = array();
$DadEnv["from"]                 = "Teste";
$DadEnv["to"]                   = "5547999999999";
$DadEnv["api_key"]              = "XXXXXXXXXXXXXXX";
$DadEnv["api_secret"]           = "XXXXXXXXXXXXXXX";
$DadEnv["text"]                 = "Teste";

$ch 						    = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://rest.nexmo.com/sms/json");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($DadEnv));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"accept: application/json",
"content-type: application/json"
));
$response 					    = curl_exec($ch);		
$response2                      = json_decode($response, true);
$httpcode	                    = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err 		                    = curl_error($ch);
curl_close($ch);

if( $response2["messages"][0]["status"] == 0 )
{
    
    echo "Enviado com Sucesso!";
    
}else{
    
    echo "ERRO >> " . $response2["messages"][0]["error-text"];
    
}
?>

WebHook

Sim, a Nexmo possui um Webhook.

Ao enviar um SMS, informe a url de seu webhook em "callback", seguindo o exemplo abaixo:

{
  "from": "SeuSite",
  "to": "55479999999",
  "api_key": "[ApiKey]",
  "api_secret": "[ApiSecret]",
  "text": "Teste",
  "callback": "https://webhook.site/80f916f2-f7f8-4772-8876-112e5fd4bdae"
}

Quando a mensagem mudar de status, a Nexmo ira fazer uma GET para a Url informada, adicionando vários dados na QueryString.

As informações que precisam nos atentar são:

  • messageId: ID da Mensagem
  • status: Status da mensagem

Caso a mensagem tenha sido entregue, será retornado o status "delivered".

Você pode consultar todos os status possíveis no link abaixo:

Vonage API Developer

Por hoje é só, meus unicórnios! 🦄✨

Que a magia do arco-íris continue brilhando em suas vidas! Até mais! 🌈🌟