https://a.storyblok.com/f/270183/255205/973c29d349/ruby-conference-call-1.png

Crie uma teleconferência com a Voice API da Nexmo e o Ruby on Rails

Publicado em May 14, 2021

Tempo de leitura: 8 minutos

Neste passo a passo, vamos criar um aplicativo de teleconferência em Ruby on Rails que utiliza a Voice API da Nexmo. Na documentação da Nexmo, uma teleconferência também é chamada de conversa, e usaremos esses termos de forma intercambiável.

Você pode encontrar o código completo e funcional deste exemplo em GitHub.

Pré-requisitos

Criar uma teleconferência com Ruby on Rails

Vamos realizar as seguintes tarefas para criar uma teleconferência (“conversa”) com a Voice API Nexmo:

  1. Criar um aplicativo Rails

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

  3. Configure nossa Account Nexmo, adquira um número de telefone Nexmo e crie um aplicativo Nexmo Voice

  4. Criar o controlador e as rotas do Rails

Criar uma aplicação Rails

Na linha de comando, execute o seguinte:

rails new rails-conference-call --database=postgresql

O comando acima criará uma nova aplicação Rails com o PostgreSQL como banco de dados padrão.

A seguir, vamos instalar as dependências gem em nossa aplicação. Para isso, executamos bundle install no terminal. Também podemos executar rake db:migrate nesta etapa, também no 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.

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 conference-call-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:

Number menu options

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 conference-call-demo aplicativo Voice. Para isso, clique no ícone de engrenagem ao lado do número de telefone e você verá o seguinte menu:

conference call

Selecione a conference-call-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 conference_controller.rb em /app/controllers/. Dentro do controlador, vamos definir uma única ação. A ação conterá o instruções do Nexmo Call Control Object (NCCO) para criar a teleconferência.

# conference_controller.rb

class ConferenceController < ApplicationController
    skip_before_action :verify_authenticity_token
    
    def answer
        render json:
            [
                {
                    :action => 'talk',
                    :text => 'Welcome to the Nexmo powered conference call'
                },
                {
                    :action => 'conversation',
                    :name => 'nexmo-conversation'
                }
            ].to_json
    end

    def event
    end
end

A instrução NCCO definida no método acima #answer contém duas ações:

  1. Dê as boas-vindas à pessoa que ligou com uma talk ação

  2. Adicione o participante à teleconferência, também conhecida como conversation.

O nome da conversation segunda ação do NCCO é definido neste ponto. Ele pode receber qualquer nome e, uma vez definido inicialmente, todas as chamadas subsequentes podem ser direcionadas para ele. Além disso, todos os outros opções do NCCO conversation opções podem ser definidas para essa teleconferência por meio da referência ao conversation nome.

Por fim, precisamos definir as rotas em routes.rb para que nosso aplicativo Rails saiba para onde direcionar a solicitação do Nexmo GET e para onde POST as atualizações de status que nossa aplicação recebe da API do Nexmo. Vá em frente e abra o arquivo /config/routes.rb e adicione o seguinte:

# routes.rb

get '/webhooks/answer', to: 'conference#answer'
post '/event', to: 'conference#event'

Você vai perceber que os caminhos para o GET e POST são as mesmas URLs 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: “Bem-vindo à teleconferência com tecnologia Nexmo”. Você pode convidar outras pessoas para participar da sua teleconferência, fornecendo-lhes o número de telefone.

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.