https://a.storyblok.com/f/270183/206664/a5069c4fda/voice-proxy-ruby.png

Encaminhar uma chamada por meio de um proxy de voz com Ruby on Rails

Publicado em May 13, 2021

Tempo de leitura: 9 minutos

Embora grande parte do nosso dia a dia seja conduzida por meio de aplicativos, fazer chamadas telefônicas continua sendo uma parte essencial do nosso mundo. Sempre que fazemos negócios por meio de uma ligação telefônica, expomos nosso número de telefone particular a outras pessoas. Isso pode representar riscos tanto à privacidade quanto à segurança de todas as partes envolvidas. No entanto, ao utilizar um proxy de voz, você pode amenizar esse problema e fazer ligações com confiança.

Um proxy de voz é um método pelo qual as chamadas telefônicas são encaminhadas ao seu destino final por meio de um número de telefone intermediário. O número de telefone final fica oculto por trás do número intermediário, mantendo assim sua privacidade. Neste tutorial, vamos explicar passo a passo como criar um aplicativo em Ruby on Rails para encaminhar chamadas de voz por meio de um proxy de voz, utilizando a Voice API da Nexmo.

Pré-requisitos

Para seguir este tutorial, você precisará de uma Account no Nexmo. Cadastre-se agora, caso ainda não tenha um Account.

Além disso, você também precisará de:

Encaminhar uma chamada de voz por meio de um proxy de voz com o Rails

Vamos realizar as seguintes tarefas para encaminhar uma chamada de voz com a Voice API Nexmo por meio de um proxy de voz:

  1. Criar um aplicativo Rails

  2. Expor nosso aplicativo externamente para que a Nexmo possa se comunicar com ele

  3. Configurar nosso Account Nexmo, adquirir um número de telefone Nexmo e criar um aplicativo Nexmo Voice

  4. Criar o controlador, a visualização e as rotas do Rails

Criar uma aplicação Rails

Na linha de comando, execute o seguinte:

rails new forward-voice-proxy --database=postgresql

O comando acima criará uma nova aplicação Rails com o PostgreSQL como banco de dados padrão. Abra a nova aplicação Rails no editor de código de sua preferência e adicione o dotenv-rails e nexmo gems ao seu Gemfile no diretório raiz do projeto:

# Gemfile

gem 'nexmo'
gem 'dotenv-rails`

Agora estamos prontos para instalar as dependências gem em nosso aplicativo. Para isso, executamos bundle install no terminal. Também podemos executar rake db:migrate nesta etapa a partir do terminal para configurar o banco de dados. Não usaremos o banco de dados neste tutorial para armazenar os dados, mas você pode adicionar esse recurso à sua própria aplicação, se preferir.

Nesta etapa, vamos configurar o ngrok para obter nossa URL acessível externamente, que será usada pelo Nexmo para se comunicar com nosso aplicativo.

Exposição do aplicativo

Existem várias maneiras de tornar nosso servidor de desenvolvimento local acessível externamente, mas uma das mais simples é usando o ngrok. Você pode ler este artigo para obter uma explicação mais detalhada sobre como o ngrok funciona. No entanto, para nossos propósitos, basta colocá-lo em funcionamento e copiar a URL que ele nos fornece.

Para iniciar o ngrok, abra uma nova janela do terminal e execute o seguinte na linha de comando:

ngrok http 3000

Agora você verá uma interface de registro do ngrok na janela do seu terminal. Na parte superior da interface, há uma linha que começa com Forwarding e contém duas URLs. A primeira é a URL do ngrok acessível externamente, que termina com ngrok.io seguida por http://localhost:3000, que é o seu servidor de desenvolvimento local. Agora, quando você ou a Nexmo acessarem a ngrok.io URL, ela será redirecionada para o seu servidor local.

Certifique-se de copiar o ngrok.io URL em algum lugar seguro. Vamos usá-lo na próxima etapa da configuração da nossa conta Nexmo, do número de telefone e do aplicativo Voice.

Crie uma conta no Nexmo com um número de telefone e o aplicativo de Voice

Para que nosso aplicativo de voz funcione, precisamos de um Account Nexmo, um número de telefone provisionado pela Nexmo, um aplicativo Nexmo e, por fim, precisamos vincular nosso aplicativo ao nosso número de telefone.

Você pode criar um account no Nexmo gratuitamente e, como bônus adicional, seu account receberá um crédito de 2 euros para você começar a usar seu novo aplicativo. Acesse <${CUSTOMER_DASHBOARD_URL}/sign-up> no seu navegador e siga as etapas de cadastro. Ao concluir, você estará no seu painel do Nexmo.

No menu à esquerda, clique no Voice menu item. Você verá as quatro opções a seguir em APPLICATIONS:

Voice Menu Options

Clique na Create an application opção e você será direcionado para uma página onde poderá configurar um novo aplicativo Nexmo.

Preencha o formulário com as seguintes informações:

  • Application name campo de texto: Enter voice-proxy-forwarding-demo

  • Event URL No campo de texto, insira sua URL do ngrok: https://[ngrok url here]/event

  • Answer URL No campo de texto, digite novamente a URL do ngrok: https://[ngrok url here]/webhooks/answer

Quando terminar, clique no botão azul Create Application .

Você acabou de criar um aplicativo do Nexmo Voice. O próximo passo é adquirir um número de telefone do Nexmo e vinculá-lo a esse aplicativo.

No Painel do Nexmo, clique no Numbers item de menu no menu à esquerda. Você verá três opções aparecerem:

Numbers menu

Clique na Buy numbers opção e você será direcionado para uma página onde poderá escolher o país, os recursos, o tipo e os quatro dígitos que deseja que o número tenha.

Buy numbers

Para os nossos fins: escolha o país em que você está no momento, para que a ligação seja considerada local para você; escolha Voice “Recursos” e “Celular” ou “Fixo” como tipo. Você não precisa preencher nada no Number campo de texto. Ao clicar em Search, você verá uma lista de números de telefone disponíveis.

Escolha uma clicando no botão laranja Buy e clicando no botão laranja Buy mais uma vez na janela de confirmação.

Depois de adquirir o número, você já pode vinculá-lo ao seu voice-proxy-forwarding-demo aplicativo Voice. Para isso, clique no ícone de engrenagem ao lado do número de telefone e você verá o seguinte menu:

Edit numbers

Selecione a voice-proxy-forwarding-demo Applications na lista suspensa e clique no botão azul Ok . Seu número de telefone da Nexmo agora está vinculado ao seu aplicativo Voice e pronto para receber e encaminhar chamadas recebidas por meio do proxy de voz.

Nosso último passo antes de estarmos prontos para executar nosso aplicativo é definir as ações e as rotas do nosso controlador Rails.

Criar controlador e rotas no Rails

Vá em frente e crie um arquivo de controlador chamado call_controller.rb em /app/controllers/. Dentro do controlador, vamos definir uma única ação e três variáveis constantes. A ação conterá o Objeto de Controle de Chamadas da Nexmo (NCCO) para encaminhar a chamada por meio do proxy de voz para o nosso número pessoal. As três variáveis constantes armazenarão, respectivamente, nossa URL do ngrok, o número do Nexmo e o número pessoal.

# call_controller.rb

class CallController < ApplicationController
    BASE_URL = 'YOUR NGROK URL GOES HERE'
    NEXMO_NUMBER='YOUR NEXMO PROVISIONED NUMBER GOES HERE'
    PERSONAL_NUMBER = 'YOUR PERSONAL NUMBER GOES HERE'

    def answer
        render json:
        [
            {
                "action": "talk",
                "text": "Please wait while we forward your call"
              },
            {
                :action => 'connect',
                :eventUrl => [],
                :from => NEXMO_NUMBER,
                :endpoint => [
                    {  
                        :type => 'phone',
                        :number => PERSONAL_NUMBER
                    }
                ]
            }
        ]
    end
end

Por fim, precisamos definir a rota em routes.rb para que nosso aplicativo Rails saiba para onde direcionar a solicitação do Nexmo GET . Vá em frente e abra o arquivo /config/routes.rb e adicione o seguinte:

# routes.rb

get '/webhooks/answer', to: 'call#answer'

Você vai perceber que o caminho para a GET solicitação é a mesma URL que fornecemos ao configurar nosso aplicativo Nexmo Voice no Painel do Nexmo.

Nosso aplicativo está pronto para ser executado! Parabéns!

Executando o aplicativo

Para executar seu aplicativo, basta executar o seguinte na linha de comando:

rails s

Isso iniciará seu servidor Rails. Em outra janela do terminal, certifique-se de que o ngrok também esteja em execução. Agora, ligue para o seu número de telefone da Nexmo e você ouvirá seu aplicativo dizer: “Aguarde enquanto encaminhamos sua chamada”, e então sua chamada será encaminhada por meio do proxy de voz.

E se você quiser que seu aplicativo encaminhe sua chamada sem avisar que está fazendo isso? Basta remover a talk instrução NCCO da #answer rota no Controlador. Ao fazer isso, seu método final do Controlador ficará assim:

# call_controller.rb

def answer
    render json:
    [
        {
            :action => 'connect',
            :eventUrl => [],
            :from => NEXMO_NUMBER,
            :endpoint => [
                {  
                    :type => 'phone',
                    :number => PERSONAL_NUMBER
                }
            ]
        }
    ]
end

Leitura complementar

Se você tiver interesse em explorar e ler mais sobre o assunto, considere 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.