
Compartilhar:
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.
Crie uma teleconferência com a Voice API da Nexmo e o Ruby on Rails
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
ngrok para disponibilizar nossa aplicação Rails para o público externo
Criar uma teleconferência com Ruby on Rails
Vamos realizar as seguintes tarefas para criar uma teleconferência (“conversa”) com a Voice API Nexmo:
Criar um aplicativo Rails
Expor nosso aplicativo externamente para que a Nexmo possa se comunicar com ele
Configure nossa Account Nexmo, adquira um número de telefone Nexmo e crie um aplicativo Nexmo Voice
Criar o controlador e as rotas do Rails
Criar uma aplicação Rails
Na linha de comando, execute o seguinte:
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:
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:

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 namecampo de texto: Enterconference-call-demoEvent URLNo campo de texto, insira sua URL do ngrok:https://[ngrok url here]/eventAnswer URLNo 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:

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.

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:

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:
Dê as boas-vindas à pessoa que ligou com uma
talkaçãoAdicione 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:
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:
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.