Llamadas desde la aplicación

La función «Llamadas dentro de la aplicación» te permite integrar la comunicación de voz en tiempo real directamente en tus aplicaciones móviles o web mediante la Voice API. Basada en la tecnología WebRTC, ofrece las capacidades básicas necesarias para crear experiencias de llamada ricas e interactivas entre los usuarios dentro de tu aplicación, al tiempo que permite que las llamadas se conecten con terminales externos cuando sea necesario.

In-App Calling permite a los usuarios de sus aplicaciones realizar y recibir llamadas de voz sin salir de la interfaz de la aplicación. Admite conversaciones tanto individuales como en grupo y proporciona controles y eventos que te ayudan a construir una experiencia de comunicación fluida.

Esta capacidad está potenciada por la Voice API y los SDK del lado del cliente, que juntos gestionan la transmisión de medios, la señalización de llamadas y la gestión del ciclo de vida de las llamadas.

Competencias clave

Controles de usuario

Applications can provide built-in audio controls so users can manage their call experience in real time. Los controles más habituales son:

  • Silenciar y desactivar el micrófono
  • Función de «orejeras» para silenciar el audio entrante sin finalizar la llamada

Estos controles permiten una interacción flexible y mejoran la usabilidad durante las llamadas.

Notificaciones de llamadas

Puedes avisar a los usuarios de las llamadas entrantes mediante notificaciones push. De este modo, te aseguras de que los usuarios sigan estando localizables incluso cuando la aplicación se esté ejecutando en segundo plano o el dispositivo esté bloqueado.

Llamadas 1:1 y en grupo

In-App Calling admite tanto llamadas directas entre dos usuarios como llamadas dinámicas de grupo. Puedes configurar las llamadas para añadir o eliminar participantes en tiempo real, lo que permite realizar conferencias y casos de uso colaborativo.

Compatibilidad con DTMF

Esta función permite enviar tonos DTMF durante una llamada, lo que facilita la interacción con sistemas IVR u otros servicios de telefonía.

Continuidad de llamadas

Puede mejorar la fiabilidad y la experiencia del usuario con funciones como:

  • Reconexión automática de llamadas perdidas
  • Trasladar una llamada activa entre distintos dispositivos del mismo usuario

Estas funciones permiten mantener una comunicación ininterrumpida ante cambios en la red o al cambiar de dispositivo.

Ampliabilidad a través de la Voice API

In-App Calling forma parte de la plataforma Voice API más amplia de Vonage. Esta integración te permite ampliar las llamadas dentro de la aplicación más allá de la comunicación entre aplicaciones y conectarte a servicios externos de telefonía y en tiempo real.

La Voice API dispone de las siguientes funciones:

Esta flexibilidad le permite combinar la comunicación dentro de la aplicación con la telefonía tradicional y los flujos de trabajo de voz automatizados.

Conservación y almacenamiento de datos

Por defecto, las conversaciones creadas por las llamadas y sus tramos de llamada asociados se almacenan durante 2 días. Puede modificar este periodo de retención configurando el TTL de las conversaciones o el tiempo de persistencia de los tramos en el panel de control de la API, en los ajustes avanzados de las funciones de voz.

El ajuste de estos valores te permite adaptar el almacenamiento de datos a los requisitos operativos y de cumplimiento normativo de tu aplicación.

Crear un usuario

Crea un usuario que iniciará sesión en el cliente de Vonage y participará en la funcionalidad de llamadas dentro de la aplicación: Conversaciones, llamadas, etc.

Ejecuta el siguiente comando en tu terminal para crear una usuaria llamada Alice:

vonage users create `
  --name='Alice'
  
✅ Creating User

User ID: USR-00000000-0000-0000-0000-000000000000
Name: Alice
Display Name: Not Set
Image URL: Not Set
Time to Live: Not Set

Channels:
  None Set
vonage users create ^
  --name='Alice'
  
✅ Creating User

User ID: USR-00000000-0000-0000-0000-000000000000
Name: Alice
Display Name: Not Set
Image URL: Not Set
Time to Live: Not Set

Channels:
  None Set
vonage users create \ --name='Alice' ✅ Creating User User ID: USR-00000000-0000-0000-0000-000000000000 Name: Alice Display Name: Not Set Image URL: Not Set Time to Live: Not Set Channels: None Set

El ID de usuario se utiliza para realizar tareas del SDK, como iniciar sesión, iniciar una llamada, etc.

Generar un JWT de usuario

JWT se utilizan para autenticar a un usuario en el Client SDK.

Para generar un JWT para Alice ejecute el siguiente comando (sustituyendo con su información):

# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key `
--sub='Alice' `
--acl='{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}'

# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key ^
--sub='Alice' ^
--acl="{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}"

REM Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
# A command with parameters vonage jwt create \ --app-id='00000000-0000-0000-0000-000000000000' \ --private-key=./private.key \ --sub='Alice' \ --acl='{"paths":{"/*/rtc/**":{},"/*/users/**":{},"/*/conversations/**":{},"/*/sessions/**":{},"/*/devices/**":{},"/*/push/**":{},"/*/knocking/**":{},"/*/legs/**":{}}}' # Will produce a token eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ

El comando anterior establece por defecto la caducidad del JWT en 24 horas. Puedes cambiar la caducidad a un periodo de tiempo más corto utilizando el comando --exp bandera.

NOTA: En aplicaciones de producción, se espera que tu backend exponga un endpoint que genere JWT por petición de tu cliente.