Buzón de voz visual

Android 6.0 (Marshmallow) implementó la compatibilidad con la voz visual (VVM) integrada en el Dialer, lo que permite que los servicios de VVM compatibles del operador se conecten al Dialer con una configuración mínima. El buzón de voz visual permite a los usuarios revisar el buzón de voz fácilmente sin hacer llamadas telefónicas. Los usuarios pueden ver una lista de mensajes en una interfaz similar a una bandeja de entrada, escucharlos en cualquier orden y borrarlos según lo deseen.

Android 7.0 agregó los siguientes parámetros de configuración a la voz visual:

  • Obtención anticipada de mensajes de voz controlada por KEY_VVM_PREFETCH_BOOLEAN
  • Controla si se requiere una conexión de datos móviles por parte de KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
  • Recuperación de transcripciones de mensajes de voz
  • Recuperación de la cuota de buzón de voz

En esta página, se proporciona una descripción general de lo que se ofrece, cómo los operadores pueden integrarse con ella y algunos detalles de la implementación.

Cliente de buzón de voz visual (VVM)

Android 6.0 y versiones posteriores incluyen un cliente de VVM de OMTP, que (cuando se proporciona la configuración correcta) se conecta a los servidores de VVM del operador y propaga los mensajes de VVM en el dialer del Proyecto de código abierto de Android (AOSP). El cliente de VVM:

  • Controla los mensajes SMS que se usan para activar o desactivar el servicio, o consultar su estado, y los mensajes SMS que se usan para notificar al dispositivo sobre eventos en el buzón del suscriptor.
  • Sincroniza el buzón con el servidor IMAP.
  • Descarga los mensajes de voz cuando el usuario elige escucharlos.
  • Recupera transcripciones de mensajes de voz
  • Recupera los detalles de la cuota de buzón de voz (tamaño total de la bandeja de entrada y tamaño ocupado)
  • Se integra en el Dialer para funciones del usuario, como devolver llamadas, ver mensajes no leídos, borrar mensajes, etcétera.

Cómo realizar la integración con el cliente de VVM

Implementación

El operador debe proporcionar un servidor de buzón de voz visual que implemente las especificaciones de buzón de voz visual de la OMTP. La implementación actual del cliente de VVM de AOSP admite las funciones principales (leer o borrar mensajes de voz, descargar, sincronizar o escuchar), pero no se implementaron las funciones adicionales de la IU (cambio de contraseña, saludo de buzón de voz, idiomas). Por el momento, solo admitimos la versión 1.1 de OMTP y no usamos encriptación para la autenticación de IMAP.

Para admitir transcripciones, los operadores deben admitir el formato de archivo adjunto de transcripción (tipo MIME sin formato/texto) especificado en el artículo 2.1.3 de la especificación OMTP 1.3.

Nota: Los mensajes SMS que se originan en el servidor y se envían al dispositivo (p.ej., STATUS o SYNC) deben ser mensajes SMS de datos.

Configuración

Para que un operador se integre con el servicio de VVM, debe proporcionar detalles de configuración a la plataforma que puede usar el cliente de OMTP. Estos parámetros son los siguientes:

  • Número de destino y número de puerto para SMS
  • El nombre del paquete de la app de buzón de voz visual proporcionada por el operador (si se proporciona una) para que se pueda inhabilitar la implementación de la plataforma si se instala ese paquete

Estos valores se proporcionan a través de la API de Carrier Config. Esta funcionalidad, lanzada en Android 6.0, permite que una app proporcione de forma dinámica la configuración relacionada con la telefonía a los diversos componentes de la plataforma que la necesitan. En particular, las siguientes claves deben tener valores definidos:

  • KEY_VVM_DESTINATION_NUMBER_STRING
  • KEY_VVM_PORT_NUMBER_INT
  • KEY_VVM_TYPE_STRING
  • KEY_CARRIER_VVM_PACKAGE_NAME_STRING
  • KEY_VVM_PREFETCH_BOOLEAN
  • KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN

Consulta Configuración del operador para obtener más detalles.

Implementación

El cliente de VVM de OMTP se implementa en packages/services/Telephony, en particular, en src/com/android/phone/vvm/.

Configuración

  1. El cliente de VVM escucha TelephonyIntents#ACTION_SIM_STATE_CHANGED o CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED.
  2. Cuando se agrega una SIM que tiene los valores correctos de Carrier Config (KEY_VVM_TYPE_STRING configurado en TelephonyManager.VVM_TYPE_OMTP o TelephonyManager.VVM_TYPE_CVVM), el cliente de VVM envía un SMS de ACTIVACIÓN al valor especificado en KEY_VVM_DESTINATION_NUMBER_STRING.
  3. El servidor activa el servicio de buzón de voz visual y envía las credenciales de OMTP a través de STATUS SMA. Cuando el cliente de VVM recibe el SMS de estado, registra la fuente de buzón de voz y muestra la pestaña de buzón de voz en el dispositivo.
  4. Las credenciales de OMTP se guardan de forma local y el dispositivo comienza una sincronización completa, como se describe a continuación.

Sincronización

Existen varias formas en que el cliente de VVM puede sincronizarse con el servidor del operador y viceversa.

  • Las sincronizaciones completas se producen durante la descarga inicial. El cliente de VVM recupera metadatos de buzón de voz, como la fecha y la hora, el número de origen, la duración, las transcripciones de buzón de voz (si están disponibles) y los datos de audio si KEY_VVM_PREFETCH_BOOLEAN es verdadero. Las sincronizaciones completas se pueden activar de las siguientes maneras:
    • Cómo insertar una SIM nueva
    • Reinicio del dispositivo
    • Regreso al servicio
    • Cómo recibir la transmisión de VoicemailContract.ACTION_SYNC_VOICEMAIL
  • La sincronización de carga se produce cuando un usuario interactúa con un mensaje de voz para leerlo o borrarlo. Las sincronizaciones de carga hacen que el servidor cambie sus datos para que coincidan con los datos del dispositivo. Por ejemplo, si el usuario lee un mensaje de voz, se marca como leído en el servidor. Si el usuario borra un mensaje de voz, se borra en el servidor.
  • La sincronización de descarga ocurre cuando el cliente de VVM recibe un SMS de sincronización de “MBU” (actualización de buzón) del operador. Un mensaje SYNC contiene los metadatos de un mensaje nuevo para que se pueda almacenar en el proveedor de contenido de buzón de voz.

Nota: Los valores de cuota de la bandeja de entrada de voz en espera se recuperan durante cada sincronización.

Descarga de mensajes de voz

Cuando un usuario presiona Reproducir para escuchar un mensaje de voz, se descarga el archivo de audio correspondiente. Si el usuario elige escuchar el mensaje de voz, el Dialer puede transmitir VoicemailContract.ACTION_FETCH_VOICEMAIL, que recibe el cliente de buzón de voz, iniciar la descarga del contenido y actualizar el registro en el proveedor de contenido de buzón de voz de la plataforma.

Inhabilita VVM

El servicio de buzón de voz visual se puede inhabilitar o desactivar mediante la interacción del usuario, la eliminación de una SIM válida o el reemplazo por una app de buzón de voz visual del operador. Inhabilitado significa que el dispositivo local ya no muestra el buzón de voz visual. Desactivado significa que el servicio está desactivado para el suscriptor. La interacción del usuario puede desactivar el servicio, la extracción de la SIM inhabilita temporalmente el servicio porque ya no está presente, y el reemplazo del VVM del operador inhabilita el cliente de VVM de AOSP.

Interacción del usuario

El usuario puede habilitar o inhabilitar el buzón de voz visual de forma manual. Si un usuario inhabilita la voz visual, también desactiva el servicio. Cuando inhabilita el buzón de voz visual, se envía un SMS de desactivación, la fuente del buzón de voz se desregistra de forma local y desaparece la pestaña del buzón de voz. Si vuelve a habilitar el buzón de voz visual, su servicio también se reactivará.

Eliminación de SIM

Si hay cambios en el estado de la SIM del dispositivo (ACTION_SIM_STATE_CHANGED) o en los valores de configuración del operador (ACTION_CARRIER_CONFIG_CHANGED), y ya no existe una configuración válida para la SIM determinada, la fuente de buzón de voz se desregistra de forma local y desaparece la pestaña de buzón de voz. Si se reemplaza la SIM, se vuelve a habilitar el VVM.

Se reemplazó por el VVM del operador

Si se instala una app de buzón de voz visual del operador en el dispositivo, se puede inhabilitar el cliente de VVM de AOSP. Para ello, se verifica si está instalado un paquete con un nombre que coincida con el parámetro KEY_CARRIER_VVM_PACKAGE_NAME_STRING.

El cliente de VVM se puede habilitar a través de la interacción del usuario.

Prueba

Existe un conjunto existente (desde Android 4.0) de pruebas de CTS para las APIs de VoicemailProvider que permiten que una app inserte, consulte o borre mensajes de voz en la plataforma. Estas son las mismas APIs que usa el VVM para agregar o borrar mensajes de voz, de modo que cualquier app de Teléfono pueda mostrarlos en la IU.

Para probar que tu app de configuración pasa la configuración de OMTP correctamente, puedes probar tu código con lo siguiente:

  • Una SIM que contenga una firma de certificado válida
  • Un dispositivo que ejecute Android 6.0 con una versión no modificada del framework de teléfono de AOSP