Problemas conocidos en los SDK y las API

En estos artículos, se proporciona información sobre las limitaciones y los problemas conocidos relativos a los SDK de llamadas de Azure Communication Services y las API de automatización de llamadas de Communication Services.

Importante

Hay varios factores que pueden afectar a la calidad de la experiencia de llamada. Para más información sobre los procedimientos recomendados para las pruebas y la configuración de red de Communication Services, vea Recomendaciones de red.

Llamada al SDK web

En las secciones siguientes se proporciona información sobre los problemas conocidos asociados a los SDK de voz y videollamada de JavaScript de Azure Communication Services.

Chrome M115: regresión

La versión 115 de Chrome para Android introdujo una regresión al realizar videollamadas: el resultado de este error es que un usuario que realiza una llamada en Azure Communication Services con esta versión de Chrome no tiene vídeo saliente en las llamadas de grupo de Azure Communication Services y Microsoft Teams.

  • Esta regresión es un problema conocido introducido en Chromium.
  • Como mitigación a corto plazo, indique a los usuarios que usen Microsoft Edge o Firefox en Android, o que eviten el uso de Google Chrome 115/116 en Android.

Problemas conocidos de Firefox

La compatibilidad con el explorador de escritorio de Firefox está ahora disponible en versión preliminar pública. Los problemas conocidos son:

  • La enumeración de altavoces no está disponible: si usa Firefox, la aplicación no podrá enumerar ni seleccionar altavoces mediante el administrador de dispositivos de Communication Services. En este escenario, debe seleccionar dispositivos mediante el sistema operativo.
  • En este momento, no se admiten las cámaras virtuales al hacer llamadas de audio o vídeo de escritorio de Firefox.

Problemas conocidos de Chrome para iOS

La compatibilidad con el explorador Chrome para iOS ya está disponible en versión preliminar pública. Los problemas conocidos son:

  • No hay audio saliente ni entrante al cambiar el explorador a segundo plano o bloquear el dispositivo. Este problema se corrigió en la versión 16.4 y posteriores de iOS.
  • No hay audio entrante o saliente procedente de los auriculares Bluetooth. Cuando un usuario conecta los auriculares Bluetooth en medio de la llamada de Azure Communication Services, el audio sigue saliendo del altavoz hasta que el usuario bloquee y desbloquee el teléfono. Hemos observado este problema en versiones anteriores de iOS (15.6, 15.7) y no se ha podido reproducir en iOS 16.

Safari para iOS muestra un tamaño de resolución incorrecto de la vista previa de la cámara.

Este error se produce en las versiones 16.7 y 17 de iOS anteriores a la 17.4 cuando los usuarios giran sus teléfonos o habilitan o deshabilitan el vídeo durante la llamada. La vista previa de la cámara muestra brevemente un tamaño de resolución incorrecto antes de volver a la normalidad. La incidencia no se ha podido reproducir en iOS 17.4 Beta. Error de WebKit relacionado aquí.

iOS 16 introdujo errores cuando se coloca el explorador en segundo plano durante una llamada

La versión 16 de iOS ha introducido un error que puede detener la llamada de audio y vídeo de Azure Communication Services al usar el explorador móvil Safari. Apple es consciente de este problema y está buscando una solución. El impacto podría ser que una llamada de Azure Communication Services podría dejar de funcionar durante una llamada y la única resolución para que funcione de nuevo es que el cliente final reinicie su teléfono.

Para reproducir este error:

  • Un usuario tiene que usar un iPhone que ejecute iOS 16
  • Unirse a una llamada de Azure Communication Services (solo con audio o con audio y vídeo) mediante el explorador móvil Safari para iOS
  • Si durante una llamada alguien pone el explorador Safari en segundo plano y ve YouTube O BIEN recibe una llamada de teléfono o por FaceTime mientras se conecta a través de un dispositivo Bluetooth

Resultados:

  • Cuano pasen unos minutos en esta situación, el vídeo entrante y saliente puede dejar de funcionar.
  • La única manera de volver a llamar con Azure Communication Services es que el usuario final reinicie su teléfono.

Chrome M98: regresión

La versión 98 de Chrome introdujo una regresión con generación anormal de fotogramas clave de vídeo que afecta negativamente a la resolución de una secuencia de vídeo enviada para la mayoría (70 %+) de usuarios.

  • Esta regresión es un problema conocido introducido en Chromium.

Mientras se realiza una llamada RTC, el usuario todavía puede escuchar el audio de la llamada de ACS.

Este problema se produce cuando un usuario de Chrome para Android experimenta una llamada RTC entrante.Después de responder a la llamada RTC, el micrófono de la llamada ACS se silencia. El audio saliente de la llamada de ACS está silenciado, por lo que otros participantes no pueden escuchar al usuario que está en la llamada RTC. Vale la pena tener en cuenta que el audio entrante del usuario no está silenciado y este comportamiento es inherente al explorador.

No hay audio entrante durante una llamada

En ocasiones, es posible que un usuario de una llamada de Azure Communication Services no pueda escuchar el audio de los participantes remotos. Hay un error de Chromium relacionado que provoca este problema; el problema se puede mitigar volviendo a conectar PeerConnection. Hemos agregado esta solución alternativa desde SDK 1.9.1 (estable) y SDK 1.10.0 (beta).

En Chrome para Android, si un usuario se une a la llamada de Azure Communication Services varias veces, el audio entrante también puede desaparecer. El usuario no puede escuchar el audio de otros participantes hasta que se actualice la página. Hemos corregido este problema en el SDK 1.10.1-beta.1 y mejoraba el uso de los recursos de audio.

Algunos dispositivos Android no pueden llamar a escenarios, excepto las llamadas de grupo.

Muchos dispositivos Android específicos no pueden iniciarse, ni aceptar llamadas y reuniones. Los dispositivos que experimentan este problema no se pueden recuperar y se produce un error en todos los intentos. Se trata principalmente de dispositivos Samsung modelo A, especialmente los modelos A326U, A125U y A215U.

  • Esta regresión es un problema conocido introducido en Chromium.

Chrome para Android silencia la llamada después de que el explorador pase a segundo plano durante un minuto.

En Chrome para Android, si un usuario está en una llamada de Azure Communication Services y coloca el explorador en segundo plano durante un minuto. El micrófono pierde el acceso y los demás participantes de la llamada no pueden escuchar el audio del usuario. Una vez que el usuario lleva el explorador a primer plano, el micrófono está disponible de nuevo. Errores de Chromium relacionados aquí y aquí

Un usuario móvil (iOS y Android) ha eliminado la llamada, pero sigue apareciendo en la lista de participantes.

El problema puede producirse si un usuario móvil deja la llamada de grupo de Azure Communication Services sin usar la API Call.hangUp(). Cuando un usuario móvil cierra el explorador o actualiza la página web sin colgar la llamada, otros participantes de la llamada de grupo pueden seguir viendo a este usuario móvil en la lista de participantes durante unos 60 segundos.

Safari para iOS actualiza la página si el usuario va a otra aplicación y vuelve al explorador.

El problema puede producirse si un usuario de una llamada de Azure Communication Services con Safari para iOS cambia a otra aplicación durante un tiempo. Después de que el usuario vuelva al explorador, es posible que la página del explorador se actualice. Esto se debe a que el sistema operativo termina el explorador. Una manera de mitigar este problema es mantener algunos estados y recuperarse después de que se actualice la página.

Usuarios de iOS 15.1 que se unen a llamadas de grupo o reuniones de Microsoft Teams.

  • A veces, cuando se recibe una llamada RTC entrante, la pestaña con la llamada o la reunión se colgarán. Errores de WebKit relacionados aquí y aquí.

Se desactiva el audio del micrófono o cámara local cuando se producen ciertas interrupciones en iOS Safari y Android Chrome.

Este problema puede producirse si otra aplicación o el sistema operativo toma el control del micrófono o la cámara. Estos son algunos ejemplos que pueden ocurrir mientras un usuario está en la llamada:

  • Una llamada entrante llega a través de la red telefónica conmutada (RTC) y captura el acceso al dispositivo de micrófono.
  • Un usuario reproduce un vídeo de YouTube, por ejemplo, o inicia una llamada de FaceTime. Cambiar a otra aplicación nativa puede capturar el acceso al micrófono o la cámara.
  • Un usuario habilita Siri, que captura el acceso al micrófono.

En iOS, por ejemplo, mientras se realiza una llamada de Azure Communication Services, si se produce una llamada RTC, se genera un error de UFD microphoneMutedUnexepectedly y el audio deja de fluir en la llamada de Azure Communication Services y la llamada se marca como silenciada. Una vez finalizada la llamada RTC, el usuario tiene que desactivar el silencio de la llamada de Azure Communication Services para que el audio empiece a fluir de nuevo en la llamada de Azure Communication Services. En el caso de Chrome para Android, cuando entra una llamada RTC, el audio deja de fluir en la llamada de Azure Communication Services y la llamada de Azure Communication Services no se marca como silenciada. En este caso, no hay ningún evento microphoneMutedUnexepectedly de UFD. Una vez finalizada la llamada RTC, Chrome para Android recupera el audio de forma automática y el audio vuelve a fluir con normalidad en la llamada de Azure Communication Services.

En caso de que la cámara esté activada y se produzca una interrupción, la llamada de Azure Communication Services puede perder o no la cámara. Si se pierde, la cámara se marca como desactivada y el usuario tiene que volver a activarla después de que la interrupción libere la cámara.

En ocasiones, los dispositivos de micrófono o cámara no se liberan a tiempo y pueden causar problemas con la llamada original. Por ejemplo, si el usuario intenta reactivar el audio mientras ve un vídeo de YouTube, o si una llamada RTC está activa simultáneamente.

Las secuencias de vídeo entrantes no dejan de representarse si el usuario está en iOS 15.2+ y usa la versión 1.4.1-beta.1+ del SDK, los pasos de desactivar el silencio e iniciar el vídeo siguen siendo necesarios para reiniciar el audio y el vídeo salientes.

Para iOS 15.4+, el audio y el vídeo deben ser capaces de recuperarse automáticamente en la mayoría de los casos. En algunos casos perimetrales, para desactivar el silencio, la aplicación debe llamar a una API para "desactivar el silencio" (puede ser como resultado de la acción del usuario) para recuperar el audio saliente.

iOS con Safari se bloquea y actualiza la página si un usuario intenta cambiar de la cámara frontal a la cámara posterior.

En la versión 1.2.3-beta.1 del SDK de llamadas de Azure Communication Services se ha presentado un error que afecta a todas las llamadas realizadas desde iOS con Safari. El problema se produce cuando un usuario intenta cambiar la secuencia de vídeo de la cámara frontal a la posterior. Al cambiar la cámara, el explorador Safari se bloquea y vuelve a cargar la página.

Este problema se ha corregido en la versión 1.3.1-beta.1 y siguientes del SDK de llamadas de Azure Communication Services.

  • iOS con Safari versión 15.1

Uso compartido de pantalla en macOS Ventura Safari (v16.3 y versiones anteriores)

El uso compartido de pantalla no funciona en macOS Ventura Safari (v16.3 y versiones anteriores). Incidencia conocida de Safari y se corregirá en la versión 16.4 y posteriores.

La actualización de una página no quita al usuario inmediatamente de su llamada

Si un usuario está en una llamada y decide actualizar la página, el servicio multimedia de Communication Services no quita a este usuario inmediatamente de la llamada. Espera a que el usuario se vuelva a unir. El usuario se quita de la llamada después de que se agote el tiempo de espera del servicio multimedia.

Es mejor crear experiencias de usuario en las que no sea necesario que los usuarios finales actualicen la página de la aplicación durante una llamada. Si un usuario actualiza la página, vuelva a usar el mismo identificador de usuario de Communication Services después de que el usuario vuelva a la aplicación. Al volver a unirse con el mismo identificador de usuario, el usuario se representa como el mismo objeto existente en la colección remoteParticipants. Desde la perspectiva de otros participantes de la llamada, el usuario permanece en la llamada durante el tiempo que se tarda en actualizar la página, hasta un minuto o dos.

Si el usuario estaba enviando vídeo antes de actualizar, la colección videoStreams mantiene la información del flujo anterior hasta que el servicio agota el tiempo de espera y lo quita. En este escenario, la aplicación puede decidir mantener las nuevas secuencias agregadas a la colección y representar una con el valor de id más alto.

No es posible representar varias vistas previas de varios dispositivos en la web.

Es problema se trata de una limitación conocida. Para más información, vea la introducción a los SDK de llamadas.

No es posible enumerar dispositivos en Safari cuando la aplicación se ejecuta en iOS o iPadOS.

Las aplicaciones no pueden mostrar ni seleccionar dispositivos de altavoz (por ejemplo, Bluetooth) en iOS con Safari o iPadOS. Este problema es una limitación conocida de estos sistemas operativos.

Si usa Safari en macOS, la aplicación no podrá enumerar ni seleccionar altavoces mediante el administrador de dispositivos de Communication Services. En este escenario, debe seleccionar dispositivos mediante el sistema operativo. Si usa Chrome en macOS, la aplicación sí puede mostrar o seleccionar dispositivos mediante el Administrador de dispositivos de Communication Services.

  • iOS con Safari versión 15.1

El cambio repetido de los dispositivos de vídeo puede provocar la detención temporal del streaming de vídeo

El cambio entre dispositivos de vídeo puede hacer que la secuencia de vídeo se pause mientras se adquiere la secuencia desde el dispositivo seleccionado. Cambiar entre dispositivos con frecuencia puede provocar una degradación del rendimiento. Lo más conveniente es que los desarrolladores detengan una secuencia del dispositivo antes de iniciar otra.

El micrófono de los auriculares Bluetooth no se detecta o no se oye durante la llamada en iOS con Safari

Safari en IOS no admite auriculares Bluetooth. El dispositivo Bluetooth no aparece en las opciones de micrófono disponibles y otros participantes no pueden escucharle si intenta usar Bluetooth en Safari.

Esta regresión es una limitación conocida del sistema operativo. Con Safari en macOS e iOS/iPadOS, no es posible enumerar ni seleccionar dispositivos de altavoz mediante el administrador de dispositivos de Communication Services. Esto se debe a que Safari no permite mostrar ni seleccionar altavoces. En este escenario, use el sistema operativo para actualizar la selección de dispositivos.

La rotación de un dispositivo puede crear una calidad de vídeo deficiente

Cuando los usuarios rotan un dispositivo, este movimiento puede degradar la calidad del vídeo que se está transmitiendo.

Este problema se produce en los siguientes entornos:

  • Dispositivos afectados: Google Pixel 5, Google Pixel 3a, Apple iPad 8 y Apple iPad X
  • Biblioteca cliente: Calling (JavaScript)
  • Exploradores: Safari, Chrome
  • Sistemas operativos: iOS, Android

Al cambiar de cámara, la pantalla se bloquea

Cuando un usuario de Communication Services se une a una llamada mediante el SDK de llamada de JavaScript y, a continuación, selecciona el botón para cambiar la cámara, la interfaz de usuario puede dejar de responder. Después, el usuario debe actualizar la aplicación o ejecutar el explorador en segundo plano.

Este problema se produce en los siguientes entornos:

  • Dispositivos afectados: Google Pixel 4A
  • Biblioteca cliente: Calling (JavaScript)
  • Explorador: Chrome
  • Sistemas operativos: iOS, Android

Problema de la señal de vídeo cuando la llamada está en estado Conectando

Si un usuario activa y desactiva el vídeo rápidamente mientras la llamada está en estado Conectando, esta acción podría provocar un problema con la secuencia adquirida para la llamada. Lo más conveniente es que los desarrolladores creen sus aplicaciones de forma que no sea necesario activar y desactivar el vídeo mientras la llamada está en estado Conectando. El rendimiento del vídeo puede disminuir en los escenarios siguientes:

  • Si el usuario comienza con audio y, luego, inicia y detiene el vídeo mientras la llamada está en estado Conectando.
  • Si el usuario comienza con audio y, luego, inicia y detiene el vídeo mientras la llamada está en estado Sala de espera.

Enumeración o acceso de dispositivos para Safari en macOS y iOS

En determinados entornos, es posible que observe que los permisos del dispositivo se restablecen después de un período de tiempo. En macOS e iOS, Safari no mantiene los permisos durante mucho tiempo a menos que se adquiera una secuencia. La manera más sencilla de solucionar esta limitación es llamar a la API DeviceManager.askDevicePermission() antes de llamar a las API de enumeración de dispositivos del administrador de dispositivos. Estas API de enumeración son DeviceManager.getCameras(), DeviceManager.getSpeakers() y DeviceManager.getMicrophones(). Si los permisos están allí, el usuario no ve nada. Si los permisos no están allí, se le pedirán de nuevo los permisos al usuario.

Este problema se produce en los siguientes entornos:

  • Dispositivo afectado: iPhone
  • Biblioteca cliente: Calling (JavaScript)
  • Explorador: Safari
  • Sistema operativo: iOS

Retraso en la representación de vídeos de participantes remotos

Durante una llamada de grupo en curso, suponga que el Usuario A envía el vídeo y, luego, el Usuario B se une a la llamada. A veces, el usuario B no ve el vídeo del usuario A, o el vídeo del usuario A comienza a representarse después de un retraso largo. Un problema de configuración del entorno de red podría provocar este retraso. Para más información, vea Recomendaciones de red.

El uso de bibliotecas de terceros durante la llamada podría provocar una pérdida del audio

Si usa getUserMedia por separado dentro de la aplicación, se pierde la secuencia de audio. La transmisión de audio se pierde porque una biblioteca de terceros toma el acceso del dispositivo desde la biblioteca de Azure Communication Services.

  • No use bibliotecas de terceros que usen la API getUserMedia internamente durante la llamada.
  • Si todavía necesita usar una biblioteca de terceros, la única manera de recuperar la secuencia de audio es cambiar el dispositivo seleccionado (si el usuario tiene más de uno) o reiniciar la llamada.

Este problema se produce en los siguientes entornos:

  • Explorador: Safari
  • Sistema operativo: iOS

La causa de este problema podría ser que adquirir su propia secuencia desde el mismo dispositivo tiene el efecto secundario de entrar en condiciones de carrera. La adquisición de secuencias de otros dispositivos podría llevar al usuario a un ancho de banda de USB o E/S insuficiente y la tasa de errores sourceUnavailableError se dispara.

El uso excesivo de determinadas API, como silenciar o desactivar el silencio, da como resultado una limitación en la infraestructura de Azure Communication Services

Como resultado de la llamada API para silenciar/desactivar el silencio, la infraestructura de Azure Communication Services informa a los demás participantes en la llamada sobre el estado del audio de un participante local que ha invocado silenciar/desactivar el silencio, de modo que los participantes en la llamada sepan quién está silenciado/activado. El uso excesivo de silenciar/desactivar el silencio está bloqueado en la infraestructura de Azure Communication Services. La limitación se produce si el participante (o la aplicación en nombre del participante) intenta silenciar o desactivar el silencio continuamente, cada segundo, más de 15 veces en una ventana gradual de 30 segundos.

API de automatización de llamadas

Las limitaciones siguientes son problemas conocidos en las API de automatización de llamadas de Communication Services:

  • La única autenticación admitida actualmente para las aplicaciones de servidor es usar una cadena de conexión.

  • Realice llamadas solo entre entidades del mismo recurso de Communication Services. La comunicación entre recursos está bloqueada.

  • No se permiten las llamadas entre los usuarios inquilinos de Microsoft Teams y las entidades de aplicaciones de servidor o usuarios de Communication Services.

  • Si una aplicación llama a dos o más identidades RTC y, después, sale de la llamada, se cancela la llamada entre las otras entidades RTC.

En las secciones siguientes se proporciona información sobre los problemas conocidos asociados a los SDK nativos de interfaz de usuario nativos y nativos de Azure Communication Services.

Emuladores de API de Android

Al usar emuladores de API de Android en Android 5.0 (nivel de API 21) y Android 5.1 (nivel de API 22), se esperan algunos bloqueos.

Conflicto del módulo Trouter de Android

Cuando el SDK de chat y llamadas de Android están juntos en la misma aplicación, la característica de notificaciones en tiempo real del SDK de chat no funciona. Es posible que se produzca un problema de resolución de dependencias.

Aunque estamos trabajando en una solución, puede desactivar la característica de notificaciones en tiempo real agregando la siguiente información de dependencia en el archivo build.gradle de la aplicación y sondee la API GetMessages para mostrar mensajes entrantes a los usuarios.

Java

 implementation ("com.azure.android:azure-communication-chat:1.0.0") {
     exclude group: 'com.microsoft', module: 'trouter-client-android'
 }
 implementation 'com.azure.android:azure-communication-calling:1.0.0'

Nota: si la aplicación intenta tocar cualquiera de las API de notificación como chatAsyncClient.startRealtimeNotifications() o chatAsyncClient.addEventHandler(), se producirá un error en tiempo de ejecución.

Imagen en curso de iOS en imagen (PiP)

El vídeo entrante se detiene cuando la aplicación va a segundo plano. Si la aplicación está en primer plano, el vídeo se representa correctamente.

Biblioteca de interfaz de usuario

Puede seguir la página wiki de problemas conocidos en los repositorios de GitHub.