
Compartir:
Liz Acosta es promotora de desarrolladores en Vonage. Aunque su trayectoria profesional, de estudiante de cine a comercializadora, de ingeniera a defensora de los desarrolladores, puede parecer poco convencional, ¡es bastante típica de las relaciones con los desarrolladores! A Liz le encanta la pizza, las plantas, los carlinos y Python.
Crear un sistema de conferencias telefónicas con Python
Tiempo de lectura: 15 minutos
En este tutorial, aprenderá a crear un sistema de llamadas de conferencia con Python utilizando la Voice API de Vonage. Una llamada en conferencia es una llamada telefónica en la que tres o más personas están conectadas. Las llamadas en conferencia son útiles cuando más de dos personas necesitan comunicarse en forma sincrónica y más inmediata que un chat de texto grupal. Una llamada de conferencia es útil cuando varias personas necesitan hacer cambios de última hora en los planes o una decisión de grupo urgente.
Al final de este tutorial, usted será capaz de implementar con éxito una llamada de conferencia utilizando Vonage, un Python FastAPI de Python y ngrok para crear un túnel de conexión desde un servidor local a la Internet pública.
Este tutorial está estructurado para adaptarse a diferentes estilos de lectura y aprendizaje. Cada sección es atómica, así que siéntete libre de consumirlas en el orden que más te convenga:
Cómo funcionan las conferencias telefónicas con Voice API de Vonage
Una multiconferencia que utilice la Voice API se implementa de forma similar a recepción de llamadas entrantes. Además de la acción talk para reproducir texto a voz para la persona que llama, utilizará una acción conversation acción en el Objeto de control de llamadas de Vonage (NCCO) para crear una llamada en conferencia. Un NCCO es una matriz JSON utilizada por Voice API para dictar el flujo de las llamadas de voz. En otras palabras, son bloques de construcción que puedes usar para construir aplicaciones de voz flexibles y sofisticadas. En este tutorial, vamos a crear una NCCO con las etiquetas Talk y Conversation para crear un sistema de multiconferencia que saluda e informa a la persona que llama y, a continuación, la añade a una multiconferencia. Usando este flujo, la primera persona que llama al número inicia la llamada de conferencia. Conversation y las siguientes personas que llaman se añaden a ella. Puede obtener más información en la Voice API de voz.
Un breve resumen: Webhooks, Web Apps y Tunneling
Para completar este tutorial, nos basaremos en conceptos técnicos y herramientas ajenos a Vonage que pueden ser útiles en otras áreas del desarrollo de software.
¿Qué es un Webhook?
Un webhook es la forma en que una aplicación basada en web envía datos o notificaciones de eventos a otra aplicación de este tipo, permitiendo la comunicación automática en lugar de que una aplicación tenga que sondear constantemente a la otra en busca de actualizaciones. En general, esto significa interactuar a través de la web mediante una API utilizando una petición HTTP. En este tutorial en particular, vamos a utilizar un webhook para notificar a su aplicación web que alguien ha llamado a su número virtual y devolver un NCCO con un talk y conversation acción.
¿Qué es una aplicación web Python FastAPI?
FastAPI es un framework web de alto rendimiento para crear API de servicios basados en HTTP en Python. Lo que diferencia a FastAPI de otros frameworks web de Python es su estrecha alineación con Pydanticuna biblioteca de validación de datos para Python. Este acoplamiento permite a FastAPI validar, serializar y deserializar datos. Esto proporciona un método más declarativo de especificar la estructura y los tipos de datos para las solicitudes entrantes, como los cuerpos HTTP y las respuestas salientes. FastAPI también genera automáticamente OpenAPI automáticamente. Todas estas características combinadas la hacen especialmente adecuada para las modernas API REST, el desarrollo de microservicios y las aplicaciones que requieren funcionalidad en tiempo real.
¿Qué es la tunelización?
En este tutorial, crearemos una aplicación web y la ejecutaremos localmente en tu máquina. Debido a que se ejecutará localmente, no se podrá acceder a ella desde la Internet pública, y si no se puede acceder a tu aplicación web, Vonage no podrá realizar una solicitud al webhook. Aquí es donde entra en juego la tunelización. Tunneling expone los servidores locales a la Internet pública a través de URL públicas temporales o estáticas. ngrok es una plataforma de software que brinda este servicio.
En resumen, crearemos una aplicación web Python FastAPI con un webhook y utilizaremos ngrok para hacer que su aplicación local sea accesible a través de un túnel a una URL pública para que Vonage pueda realmente publicar en el webhook y hacer que ocurra una llamada en conferencia.
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Tutorial: Crear un sistema de multiconferencia
En este tutorial, usaremos FastAPI para definir un webhook al que el Voice API pueda hacer una petición cuando alguien llame a tu número virtual. Usaremos ngrok para exponer el webhook al internet público. Y usaremos Vonage para comprar un número virtual así como el Voice API para completar la llamada en conferencia.
Requisitos previos
Para completar este tutorial, necesitarás lo siguiente:
Python 3.8+
Una cuenta cuenta ngrok e instalación
Numbers de téléphone supplémentaires ou amis pour participer à une conference call
Configuración del tutorial
Antes de empezar a construir, pongamos todo en orden.
Crea una cuenta de Vonage y compra un número
Para completar este tutorial, necesitarás una cuenta API de Vonage y un número de teléfono virtual. Puedes comprar un número desde el panel del desarrollador. Asegúrate de comprar un número en tu código de país y con funciones de Voice.
Crear una Account en ngrok e instalarlo
La Voice API debe poder acceder a tu webhook para poder hacerle peticiones, por lo tanto, la URL del endpoint debe ser accesible a través de la internet pública.
Para ello, en este tutorial utilizaremos ngrok. Echa un vistazo a nuestro tutorial de ngrok para aprender a instalarlo y usarlo.
Crear un directorio de proyecto
En una ventana de terminal, ejecute lo siguiente para crear un nuevo directorio de proyecto y navegue hasta él:
¡Empecemos a construir!
Ahora que lo tienes todo preparado, es hora de empezar a construir.
He aquí un resumen de los pasos que daremos para completar este tutorial:
1. Crear y activar un entorno virtual Python
Los entornos virtuales de Python te permiten instalar paquetes en una ubicación aislada del resto de tu sistema. Esto ayuda a evitar el desorden en todo el sistema y los conflictos con diferentes versiones y paquetes de Python. Puedes obtener más información sobre los entornos virtuales aquí.
En el directorio de su proyecto, ejecute los siguientes comandos para crear un entorno virtual y activar un entorno virtual:
Ahora debería ver en su terminal el prefijo (venv). Para desactivar su entorno virtual, ejecute el comando deactivate comando .
2. Instalar dependencias
Para instalar las dependencias que necesitamos para este tutorial, ejecute lo siguiente:
3. Defina un punto final de webhook para llamadas entrantes y ejecute su aplicación.
Cree un archivo llamado confcall.py que incluya el siguiente 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 crea el /webhooks/answer endpoint. Cuando este punto final recibe una solicitud de la Voice API, crea e itera a través de un archivo NCCO con un Talk y Conversation acción. Esto es lo que es responsable del texto a voz que escucha una persona que llama cuando marca el número y luego añade a la persona que llama a la conferencia (identificada por la variable VOICE_CONFERENCE_NAME ). Puede obtener más información sobre cómo realizar conferencias telefónicas con la Voice API aquí.
En tu ventana de terminal, ejecuta
Esto creará un servidor local con su punto final de webhook en el puerto 3000.
4. Haga accesible su webhook
La Voice API debe poder acceder a tu webhook para poder hacerle peticiones. Así que la URL del punto final debe estar expuesta a la Internet pública. Para eso está ngrok.
En una ventana de terminal separada, ejecute:
Este comando generará las URL públicas a las que su servidor local hará túnel en el puerto 3000. Tome nota de la URL pública de reenvío - debe ser algo como esto:
Tenga en cuenta que, a menos que utilice uno de los planes de pago de ngrok, las URL públicas generadas no son persistentes. En otras palabras, cada vez que ejecutes el comando ngrok las URL resultantes cambiarán y deberás actualizar la configuración de tu aplicación de Vonage. Para evitar esto, deja ngrok en ejecución mientras dure este tutorial.
5. Cree una aplicación Voice API y vincule su número a ella.
Ahora necesita crear una aplicación Voice API. La "aplicación" a la que nos referimos aquí no es la misma que la aplicación web FastAPI para la que escribió el código anteriormente en este tutorial. En este contexto particular, una aplicación es un contenedor para la configuración y la información de seguridad que necesita para Voice API.
Cree una aplicación en el panel del desarrollador accediendo a la ventana Applications desde el menú de la izquierda y pulsando el botón "Crear nueva aplicación". Se abrirá el menú de creación de aplicaciones. Dale a tu aplicación el nombre "confcall" ya que este es el nombre que le dimos en nuestra aplicación FastAPI.
En la sección Capacidades, active la opción Voice, que mostrará una lista de campos de texto. En el campo de texto denominado "URL de respuesta", proporcione la URL pública de ngrok modificada con el webhook que definió en su aplicación FastAPI. Esto se parecerá a esto: https://0a6ec0a950eb.ngrok-free.app/webhooks/answer
Haga clic en el botón "Generar nueva solicitud".
Una vez creada su solicitud, puede vincular su número a ella pulsando el botón "Vincular" en la tabla de números disponibles.
6. ¡Ahora pruébalo!
Ya sea con un par de amigos o con un par de números de teléfono diferentes, inicia la llamada en conferencia llamando al número virtual de Vonage. Serás recibido con el texto que proporcionaste en el código Python. Una vez iniciada la llamada en conferencia, otras personas pueden llamar al mismo número virtual de Vonage y todos deberían poder hablar entre sí en la misma llamada al mismo tiempo.
Y eso es sólo el principio. Voice API ofrece muchas más opciones para gestionar una llamada con varios participantes, como la posibilidad de crear una conferencia moderada, reproducir música en espera antes de que empiece la llamada o silenciar a determinados participantes. Consulta los enlaces a nuestros documentos para obtener más información y ¡feliz programación!
Lecturas complementarias
¿Tienes alguna pregunta o algo que compartir? Únete a la conversación en Slack de la comunidad de Vonagey mantente actualizado con el Boletín para desarrolladoressíguenos en X (antes Twitter)suscríbete a nuestro canal de YouTube para ver tutoriales en video, y sigue la página de página para desarrolladores de Vonage en LinkedInun espacio para que los desarrolladores aprendan y se conecten con la comunidad. Mantente conectado, comparte tu progreso y entérate de las últimas noticias, consejos y eventos para desarrolladores.
Compartir:
Liz Acosta es promotora de desarrolladores en Vonage. Aunque su trayectoria profesional, de estudiante de cine a comercializadora, de ingeniera a defensora de los desarrolladores, puede parecer poco convencional, ¡es bastante típica de las relaciones con los desarrolladores! A Liz le encanta la pizza, las plantas, los carlinos y Python.
