
Compartilhar:
Liz Acosta é Developer Advocate na Vonage. Embora sua trajetória profissional — de estudante de cinema a profissional de marketing, de engenheira a Developer Advocate — possa parecer pouco convencional, ela é bastante comum na área de Relações com Desenvolvedores! Liz adora pizza, plantas, pugs e Python.
Crie um sistema de teleconferência com Python
Tempo de leitura: 15 minutos
Neste tutorial, você aprenderá a criar um sistema de teleconferência com Python usando a Voice API da Vonage. Uma teleconferência é uma única ligação telefônica na qual três ou mais pessoas estão conectadas. As teleconferências são úteis quando mais de duas pessoas precisam se comunicar de forma sincronizada e mais imediata do que em um chat em grupo por mensagens de texto. Uma teleconferência é útil quando várias pessoas precisam fazer alterações de última hora nos planos ou tomar uma decisão urgente em grupo.
Ao final deste tutorial, você será capaz de implementar com sucesso uma teleconferência usando o Vonage, um aplicativo em Python FastAPI e ngrok para criar um túnel de conexão de um servidor hospedado localmente para a internet pública.
Este tutorial foi estruturado para atender a diferentes estilos de leitura e aprendizagem. Cada seção é independente; portanto, fique à vontade para lê-las na ordem que for mais conveniente para você:
Como funcionam as teleconferências com a Voice API da Vonage
Uma breve visão geral: Webhooks, aplicativos web e tunelamento
Como funcionam as teleconferências com a Voice API da Vonage
Uma teleconferência utilizando a Voice API é implementada de maneira semelhante à rreceber chamadas recebidas. Além da talk ação para reproduzir a conversão de texto em fala para o chamador, você utilizará uma conversation ação no Objeto de Controle de Chamadas da Vonage (NCCO) para criar uma teleconferência. Um NCCO é um array JSON usado pela Voice API para determinar o fluxo das chamadas de voz. Em outras palavras, são blocos de construção que você pode usar para criar aplicativos de voz flexíveis e sofisticados. Neste tutorial, estamos criando um NCCO com a Talk e Conversation ações para criar um sistema de teleconferência que cumprimenta e informa o chamador e, em seguida, o adiciona à teleconferência. Com esse fluxo, a primeira pessoa a ligar para o número inicia a Conversation e os chamadores subsequentes são adicionados a ela. Você pode ler mais na Voice API documentação.
Uma breve visão geral: Webhooks, aplicativos web e tunelamento
Para concluir este tutorial, vamos recorrer a Concepts técnicos e ferramentas externas à Vonage que podem ser úteis em outras áreas do desenvolvimento de software.
O que é um webhook?
Um webhook é a forma pela qual uma aplicação baseada na web envia dados ou notificações de eventos para outra aplicação semelhante, permitindo a comunicação automática, em vez de uma aplicação ter que consultar constantemente a outra em busca de atualizações. Em geral, isso significa interagir pela web por meio de uma API, utilizando uma solicitação HTTP. Neste tutorial específico, usaremos um webhook para notificar seu aplicativo web de que alguém ligou para o seu número virtual e para retornar um NCCO com um talk e conversation ação.
O que é uma aplicação web em Python com FastAPI?
FastAPI é uma estrutura web de alto desempenho para a criação de APIs de serviços baseadas em HTTP em Python. O que diferencia o FastAPI de outras estruturas web em Python é sua estreita integração com Pydantic, uma biblioteca de validação de dados para Python. Esse acoplamento permite que o FastAPI valide, serialize e deserialize dados. Isso oferece um método mais declarativo para especificar a estrutura e os tipos de dados para solicitações recebidas, como corpos HTTP, e respostas enviadas. O FastAPI também gera automaticamente especificações OpenAPI . Todas essas características combinadas tornam a FastAPI especialmente adequada para APIs REST modernas, desenvolvimento de microsserviços e Applications que exigem funcionalidade em tempo real.
O que é o tunelamento?
Neste tutorial, vamos criar um aplicativo web e executá-lo localmente no seu computador. Como ele estará sendo executado localmente, não poderá ser acessado pela internet pública; e, se o seu aplicativo web não puder ser acessado, a Vonage não poderá enviar uma solicitação ao webhook. É aí que entra o tunelamento. O tunelamento expõe servidores locais à internet pública por meio de URLs públicas temporárias ou estáticas. O ngrok é uma plataforma de software que oferece esse serviço.
Em resumo, vamos criar um aplicativo web em Python com o FastAPI e um webhook, e usar o ngrok para tornar seu aplicativo local acessível por meio de um túnel para uma URL pública, de modo que a Vonage possa efetivamente enviar uma solicitação ao webhook e realizar uma chamada em conferência.
Tutorial: Como montar um sistema de teleconferência
Neste tutorial, usaremos o FastAPI para definir um webhook ao qual a Voice API poderá enviar uma solicitação quando alguém ligar para o seu número virtual. Usaremos o ngrok para expor o webhook à internet pública. E usaremos a Vonage para adquirir um número virtual, bem como a Voice API para realizar a teleconferência.
Pré-requisitos
Para concluir este tutorial, você precisará do seguinte:
Python 3.8 ou superior
Uma Account no ngrok e instalação
Números de telefone adicionais ou amigos para participar de uma teleconferência
Configuração do tutorial
Antes de começarmos a construir, vamos colocar tudo em ordem.
Crie um Account na Vonage e adquira um número
Para concluir este tutorial, você precisará de uma Account na API da Vonage e um número de telefone virtual. Você pode adquirir um número no painel do desenvolvedor. Certifique-se de comprar um número com o código do seu país e com recursos de Voice.
Crie um Account no ngrok e instale o programa
A Voice API precisa ter acesso ao seu webhook para poder enviar solicitações a ele; portanto, a URL do endpoint deve estar acessível pela internet pública.
Para fazer isso neste tutorial, vamos usar o ngrok. Confira nosso tutorial sobre o ngrok para saber como instalá-lo e usá-lo.
Criar um diretório de projeto
Em uma janela do terminal, execute o seguinte para criar um novo diretório de projeto e acessá-lo:
Vamos começar a construir!
Agora que você já tem tudo configurado, é hora de começar a construir.
Aqui está uma visão geral das etapas que seguiremos para concluir este tutorial:
1. Criar e ativar um ambiente virtual de Python
Os ambientes virtuais do Python permitem que você instale pacotes em um local isolado do restante do seu sistema. Isso ajuda a evitar a desorganização em todo o sistema e conflitos entre diferentes versões do Python e pacotes. Você pode saber mais sobre ambientes virtuais aqui.
No diretório do seu projeto, execute os seguintes comandos para criar um ambiente virtual e ativá-lo:
Agora você deve ver o prompt do terminal precedido por (venv). Para desativar seu ambiente virtual, execute o deactivate comando.
2. Instalar dependências
Para instalar as dependências necessárias para este tutorial, execute o seguinte:
3. Defina um endpoint de webhook para chamadas recebidas e execute seu aplicativo
Crie um arquivo chamado confcall.py que inclua o seguinte código:
import os
from fastapi import FastAPI
from vonage_voice import Conversation, NccoAction, Talk
VOICE_CONFERENCE_NAME = “confcall”
app = FastAPI()
@app.get('/webhooks/answer')
async def answer_call():
ncco: list[NccoAction] = [Talk(text="Please wait while we connect you to the conference"), Conversation(name=VOICE_CONFERENCE_NAME),]
return [action.model_dump(by_alias=True, exclude_none=True) for action in ncco]Este código cria o /webhooks/answer ponto de extremidade. Quando esse ponto de extremidade recebe uma solicitação da Voice API, ele cria e percorre um lista de NCCOs com uma Talk e Conversation ação. É isso que é responsável pela conversão de texto em fala que o chamador ouve ao discar o número e, em seguida, adiciona o chamador à conferência (identificado pela VOICE_CONFERENCE_NAME variável). Você pode ler mais sobre como fazer chamadas em conferência com a Voice API aqui.
Na janela do terminal, execute:
Isso iniciará um servidor local com o seu endpoint de webhook na porta 3000.
4. Torne seu webhook acessível
A Voice API precisa ter acesso ao seu webhook para poder enviar solicitações a ele. Portanto, a URL do endpoint deve estar disponível na internet pública. É para isso que serve o ngrok.
Em uma janela separada do terminal, execute:
Este comando irá gerar as URLs públicas para as quais seu servidor local fará o tunelamento na porta 3000. Anote a URL pública de encaminhamento — ela deve ter um formato semelhante a este:
Observe que, a menos que você esteja usando um dos planos pagos do ngrok, as URLs públicas geradas não são persistentes. Em outras palavras, toda vez que você executar o ngrok comando, as URLs resultantes mudarão e você precisará atualizar a configuração do seu aplicativo Vonage. Para evitar isso, deixe o ngrok em execução durante todo este tutorial.
5. Crie um aplicativo da Voice API e vincule seu número a ele
Agora você precisa criar um aplicativo da Voice API. O “aplicativo” ao qual nos referimos aqui não é o mesmo que o aplicativo web FastAPI para o qual você escreveu o código anteriormente neste tutorial. Neste contexto específico, um aplicativo é um contêiner para as informações de configuração e segurança necessárias para a Voice API.
Crie um aplicativo no painel do desenvolvedor navegando até a janela “Applications” no menu à esquerda e clicando no botão “Criar novo aplicativo”. Isso abrirá o menu de criação de aplicativos. Dê ao seu aplicativo o nome “confcall”, já que esse é o nome que fornecemos em nosso aplicativo FastAPI.
Na seção “Recursos”, ative a opção “Voice”, o que exibirá uma lista de campos de texto. No campo de texto intitulado “URL da resposta”, insira a URL pública do ngrok complementada com o webhook que você definiu em seu aplicativo FastAPI. Ficará mais ou menos assim: https://0a6ec0a950eb.ngrok-free.app/webhooks/answer
Clique no botão “Gerar novo pedido”.
Agora que seu aplicativo foi criado, você pode vincular seu número a ele clicando no botão “Vincular” na tabela de números disponíveis.
6. Agora experimente!
Seja com alguns amigos ou com alguns números de telefone diferentes, inicie a teleconferência ligando para o número virtual da Vonage. Você será recebido com o texto que forneceu no código Python. Assim que a teleconferência for iniciada, outras pessoas poderão ligar para o mesmo número virtual da Vonage e todos vocês poderão conversar entre si na mesma chamada ao mesmo tempo.
E isso é só o começo! A Voice API oferece muitas outras opções para gerenciar uma chamada com vários participantes, como a possibilidade de criar uma conferência moderada, reproduzir música de espera antes do início da chamada ou silenciar participantes específicos. Confira os links para nossa documentação abaixo para obter mais detalhes e boa programação!
Leitura complementar
Tem alguma dúvida ou quer compartilhar o que está criando?
Inscreva-se no Boletim Informativo para Desenvolvedores
Siga-nos no X (antigo Twitter) para ficar por dentro das novidades
Assista aos tutoriais no nosso canal do YouTube
Conecte-se conosco na página de desenvolvedores da Vonage no LinkedIn
Fique conectado e acompanhe as últimas notícias, dicas e eventos para desenvolvedores.
Compartilhar:
Liz Acosta é Developer Advocate na Vonage. Embora sua trajetória profissional — de estudante de cinema a profissional de marketing, de engenheira a Developer Advocate — possa parecer pouco convencional, ela é bastante comum na área de Relações com Desenvolvedores! Liz adora pizza, plantas, pugs e Python.