Como enviar mensagens SMS de um aplicativo Rails 5 com a Twilio

December 19, 2017
Escrito por
Jonathan Young
Contribuidor
As opiniões expressas pelos colaboradores da Twilio são de sua autoria

Imagem ilustrativa com diferentes preparos de café

No crescente mundo do café, há muitas variedades de torras nas diferentes regiões. Seu chefe atribui a você a tarefa de criar um aplicativo para Criar, consultar, atualizar e destruir (CRUD, pela sigla em inglês) as diferentes torras de café. Também é preciso enviar uma notificação por SMS toda vez que um novo café torrado é adicionado ao site para evitar que os concorrentes o colocassem em torras de café falsas.

Hoje, criaremos um aplicativo CRUD do Rails 5 muito básico, chamado "Coffee Roasts" (Torras de café), que envia uma notificação por SMS ao seu chefe sempre que um novo café torrado for adicionado ao nosso site usando a API de SMS da Twilio.

Como iniciar nosso projeto no Rails

Primeiro, verifique se você tem o Ruby, o Bundler e o Rails instalados para configurar um novo projeto:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable --ruby
gem install bundler
gem install rails
rails new coffee_roasts
cd coffee_roasts

Embora não recomende esta próxima etapa para o desenvolvimento normal, há um gerador do Rails para criar um aplicativo CRUD completo com um único comando:

rails generate scaffold CoffeeRoast roast_name:string roast_description:text

A partir daí, vamos passar pela configuração normal do banco de dados:

bundle install
bundle exec rails db:drop
bundle exec rails db:create
bundle exec rails db:migrate
bundle exec rails db:seed

Como integrar o Rails com a Twilio

A comunidade da Twilio e do Ruby criaram um gem (biblioteca) para facilitar a integração com a Twilio. Os gems são simplesmente milhares de linhas de código reutilizável escritas por outros desenvolvedores para facilitar a sua vida. O Gemfile é um arquivo do Ruby com uma lista de gems necessários para executar seu aplicativo. Nosso Gemfile foi gerado automaticamente do comando scaffold executado anteriormente para criar nosso aplicativo do Rails.

Vamos adicionar a seguinte linha ao nosso Gemfile para trazer a funcionalidade da Twilio:

gem 'twilio-ruby'

Em seguida, vamos executar o seguinte comando para instalar o gem da Twilio em nosso aplicativo do Rails:

bundle install

Como se registrar na Twilio

A partir daí, vamos configurar as variáveis de configuração necessárias para o aplicativo.

  1. Se ainda não tiver uma conta da Twilio, registre-se para uma avaliação gratuita. Verifique se o número escolhido tem recursos de SMS.
  2. Depois de se registrar, a Twilio solicita a verificação do seu número de telefone pessoal. Com uma conta de avaliação gratuita, este é o único número para o qual você pode enviar mensagens de texto, mas não há problema para este aplicativo.

Verificar um conta da Twilio
  1. Clique no ícone da casa no canto superior esquerdo do Console da Twilio. Acompanhe o Account SID (SID da conta) e o Auth Token (token de autenticação), pois precisaremos deles mais tarde na configuração do Rails.

Visão geral do console da Twilio

Como configurar o aplicativo

Agora que temos o Account SID (SID da conta), o Auth Token (token de autenticação) e número de telefone da Twilio, vamos adicioná-los ao arquivo config/secrets.yml. O aplicativo terá a seguinte aparência:

secret_key_base: THERE WILL ALREADY BE SOME CRAZY STRING HERE. LEAVE IT THERE.
twilio_account_sid:  <%= ENV.fetch("TWILIO_ACCOUNT_SID", "YOUR-TWILIO-SID-GOES-HERE") %>
twilio_auth_token:  <%= ENV.fetch("TWILIO_AUTH_TOKEN", "YOUR-TWILIO-AUTH-TOKEN-GOES-HERE") %>
twilio_phone_number:  <%= ENV.fetch("TWILIO_PHONE_NUMBER", "YOUR-TWILIO-TRIAL-PHONE-NUMBER-GOES-HERE") %>

Observe que você precisa adicionar o código do seu país em twilio_phone_number. Por exemplo, se seu número for "(312) 555-6677", insira seu número de telefone como "+13125556677".

Precisamos configurar nosso cliente ao adicionar o inicializador da Twilio que será carregado automaticamente com o Rails. Crie o arquivo config/initializers/twilio.rb e adicione este código:

Twilio.configure do |config|
  config.account_sid = Rails.application.secrets.twilio_account_sid
  config.auth_token = Rails.application.secrets.twilio_auth_token
end

Antes de começar a escrever o código no aplicativo, teste a integração em um console. Use bundle exec rails console para iniciar um console e executar o seguinte comando:

 client = Twilio::REST::Client.new
  client.messages.create({
    from: Rails.application.secrets.twilio_phone_number,
    to: 'YOUR PERSONAL PHONE NUMBER GOES HERE',
    body: 'Hello there! This is a test'
  })

Se tudo funcionar, é preciso receber uma mensagem de texto no número de telefone usado para configurar sua conta da Twilio. É muito impressionante com tão pouco esforço!

Vamos escrever um pouco de código!

Em seguida, vamos adicionar o código de mensagens de texto a um objeto de serviço em nosso aplicativo do Rails em app/services/twilio_text_messenger.rb:

class TwilioTextMessenger
  attr_reader :message

  def initialize(message)
    @message = message
  end

  def call
    client = Twilio::REST::Client.new
    client.messages.create({
      from: Rails.application.secrets.twilio_phone_number,
      to: 'YOUR PERSONAL PHONE NUMBER GOES HERE',
      body: message
    })
  end
end

Por fim, vamos adicionar esse objeto de serviço ao método create (criar) em app/controllers/coffee_roasts_controller.rb:

# POST /coffee_roasts
def create
  @coffee_roast = CoffeeRoast.new(coffee_roast_params)

  respond_to do |format|
    if @coffee_roast.save
      message = "The coffee roast '#{@coffee_roast.roast_name}' was just added."
      TwilioTextMessenger.new(message).call
      format.html { redirect_to @coffee_roast, notice: 'Coffee roast was successfully created.' }
      format.json { render :show, status: :created, location: @coffee_roast }
    else
      format.html { render :new }
      format.json { render json: @coffee_roast.errors, status: :unprocessable_entity }
    end
  end
end

Como executar o aplicativo Ruby

E pronto! Para testar, inicie o servidor:

bundle exec rails server

Acesse localhost:3000/coffee_roasts/new, crie uma torra de café e você receberá uma mensagem de texto!

Imagem do app Ruby SMS Twilio com recursos de café

Criamos um aplicativo CRUD completo do Rails que pode enviar mensagens de texto por SMS e proteger o mundo de torras de café de baixa qualidade, em menos tempo do que a maioria das pessoas levaria para encontrar a melhor cafeteria em sua região. No futuro, talvez seja possível fornecer ao nosso chefe sempre vigilante alguns recursos extras, como a capacidade de confirmar se uma torra de café pode ou não ser inserida no banco de dados por meio de mensagens de texto.

Este artigo foi traduzido do original "Send SMS Messages from Your Rails 5 Application with Twilio". Enquanto melhoramos nossos processos de tradução, adoraríamos receber seus comentários em help@twilio.com - contribuições valiosas podem render brindes da Twilio.