https://a.storyblok.com/f/270183/209600/b985c7734a/e_sms-elixir_1200x600.png

Como enviar mensagens SMS com o Elixir

Publicado em April 28, 2021

Tempo de leitura: 6 minutos

Hoje em dia, as mensagens SMS continuam a ser o principal meio de comunicação global, e com o novo SDK experimental SDK do Nexmo para Elixir , você pode começar a enviar mensagens SMS em Elixir. Basta ter uma conta Nexmo, um número de telefone virtual e algumas linhas de código.

Neste tutorial, vamos explicar passo a passo como enviar sua primeira mensagem SMS no Elixir. Você só precisa ter um conhecimento básico do Elixir para começar — faremos o resto juntos!

Se preferir, você também pode clonar uma versão totalmente funcional desse código no GitHub.

Pré-requisitos

Para este tutorial, você precisará do seguinte:

  • Elixir instalado no seu computador

Suas credenciais da Nexmo e seu número de telefone

Para enviar um SMS, você precisa obter sua chave e seu segredo da API da Nexmo. Você também precisa configurar um número de telefone virtual provisionado pela Nexmo. Vamos fazer isso juntos agora.

Suas credenciais de API

Depois de fazer login no Painel da Nexmo, você verá suas credenciais de API na parte superior da página.

API credentials in the Vonage Developer DashboardAPI credentials in the Vonage Developer Dashboard

Anote-os e guarde-os em um lugar seguro; vamos usá-los daqui a pouco.

Seu número de telefone virtual

Nosso próximo passo para nos prepararmos para enviar um SMS é configurar um número de telefone virtual. No Painel da Nexmo, você verá um link suspenso chamado Numbers na barra lateral esquerda. Ao clicar nele, o menu suspenso se expandirá e você verá várias opções. Clique na opção intitulada Buy Numbers.

Buy numbers menu optionBuy numbers menu option

Ao acessar a Buy Numbers seção, você poderá pesquisar um número de telefone com base em Country, Features, Type. Você também pode refinar a busca para exibir apenas números de telefone com combinações específicas de dígitos.

Buy Numbers interfaceBuy Numbers interface

Procure um número de telefone com um código de país que seja conveniente para você. Você só precisa SMS para Features e um Type de Mobile. Depois de clicar no Search botão, você verá uma lista de números possíveis. Você pode escolher qualquer um que quiser clicando no botão laranja Buy botão na parte direita.

Buy number buttons in list of available numbersBuy number buttons in list of available numbers

Você acabou de configurar com sucesso um número de telefone virtual da Nexmo. Assim como fez com suas credenciais de API, copie seu novo número de telefone e guarde-o em um local seguro. Vamos usá-lo na próxima etapa, quando enviarmos nosso primeiro SMS com o Elixir.

Enviando um SMS com Elixir

Configurando nossa estrutura de código

No seu terminal, crie um novo diretório para armazenar seu projeto em Elixir e, em seguida, acesse esse diretório. Para fins deste tutorial, vamos chamá-lo de send-sms-elixir.

mkdir send-sms-elixir cd send-sms-elixir

Precisaremos de três arquivos para o nosso projeto. Lembre-se: se você planeja enviar este projeto para um sistema público de controle de versão, certifique-se de não incluir o arquivo .env arquivo, pois ele contém suas informações confidenciais de credenciais.

touch mix.exs send-sms.ex .env

Quando terminar, você deverá ter três arquivos dentro da sua ./send-sms-elixir pasta:

├── mix.exs
├── send-sms.ex
├── .env

Definindo nosso arquivo de mixagem

Todo projeto em Elixir que tenha uma dependência externa precisa criar um arquivo Mix que instale essa dependência no seu projeto. O Mix, para quem não conhece, é semelhante ao Bundler no Ruby ou ao npm no Node.js.

No nosso mix.exs arquivo, definiremos o nome do nosso projeto e duas dependências: o SDK experimental do Nexmo para Elixir e o Envy, um pacote Hex que nos ajuda a gerenciar nossas variáveis de ambiente:

defmodule SendSms.Mixfile do
  use Mix.Project

  def project do
    [app: :send_sms,
     version: "0.0.1",
     deps: deps]
  end

  defp deps do
     [
       {:nexmo, "0.4.0", hex: :nexmo_elixir},
       {:envy, "~> 1.1.1"}
     ]
  end
end

Definindo nossas variáveis de ambiente

Anteriormente, criamos nosso número de telefone virtual da Nexmo e obtivemos nossas credenciais da API da Nexmo. Agora, vamos integrá-las ao nosso aplicativo, armazenando-as em nosso .env arquivo. Dentro do seu .env arquivo, insira o seguinte, informando sua chave de API, seu segredo de API e o número de telefone da Nexmo nos locais apropriados:

NEXMO_API_KEY=
NEXMO_API_SECRET=
NEXMO_NUMBER=
SMS_API_ENDPOINT="https://rest.nexmo.com/sms/json"

Além da nossa chave de API, do segredo e do número de telefone, também fornecemos o endpoint da SMS API da Nexmo em nosso .env arquivo para ser usado pelo SDK.

Definindo nosso código Elixir

Agora estamos prontos para criar o código que enviará nosso primeiro SMS! Abra o send_sms.ex arquivo e adicione o seguinte:

defmodule SendSms do
  use Application

  def start(_type, _args) do
    unless Mix.env == :prod do
      Envy.auto_load
    end
  end

  def send_msg(to_number, message)
    Nexmo.Sms.send(
      from: System.get_env("NEXMO_NUMBER"),
      to: to_number,
      text: message
    )
  end
end

No código acima, definimos um módulo chamado SendSms que possui uma SendSms.start/2 função que carrega nossas variáveis de ambiente a partir do .env arquivo usando o pacote Envy.

Em seguida, criamos uma segunda função chamada SendSms.send/2 que aceita como argumento o número do destinatário para o qual queremos enviar a mensagem de texto e o próprio conteúdo da mensagem. Dentro da função, chamamos a função do SDK do Nexmo para Elixir Nexmo.Sms.send/1 e passamos nosso número virtual da Nexmo (armazenado como uma variável de ambiente), o to_number, e o message.

É isso aí! Agora estamos prontos para executar nosso código e enviar a mensagem.

Executando o aplicativo

A maneira mais simples de executar seu aplicativo e enviar um SMS é carregar seu projeto no iex, um shell interativo do Elixir.

Vamos, primeiro, compilar nosso send_sms.ex arquivo, o que tornará a send_msg/2 função disponível dentro do shell. Para compilá-lo, basta executar na linha de comando: elixirc send_sms.ex. Isso deve levar apenas um instante e, assim que terminar, poderemos executar nosso aplicativo no iex.

Para executar seu projeto no iex a partir da linha de comando, execute o seguinte: iex -S mix. Isso iniciará seu projeto e o abrirá dentro do shell.

Você verá um prompt do shell parecido com este:

Interactive Elixir (1.9.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 

Agora você já pode enviar sua mensagem SMS!

iex(1)> SendSms.send_msg(RECIPIENT_NUMBER, "This is powered by Nexmo on Elixir!")

Você receberá da SMS API da Nexmo a confirmação de que a mensagem foi enviada com sucesso, com um código de status HTTP 200.

Parabéns, você conseguiu!

Leitura complementar

Se você tiver interesse em saber mais sobre SMS e Nexmo, fique à vontade para conferir o seguinte:

Compartilhar:

https://a.storyblok.com/f/270183/384x384/e5480d2945/ben-greenberg.png
Ben GreenbergEx-funcionários da Vonage

Ben é um desenvolvedor que mudou de carreira, tendo atuado anteriormente por uma década nas áreas de educação de adultos, organização comunitária e gestão de organizações sem fins lucrativos. Ele trabalhou como representante de desenvolvedores na Vonage. Escreve regularmente sobre a interseção entre desenvolvimento comunitário e tecnologia. Natural do sul da Califórnia e morador de longa data da cidade de Nova York, Ben reside atualmente perto de Tel Aviv, em Israel.