Correio de voz visual

O Android 6.0 (Marshmallow) trouxe uma implementação de suporte a correio de voz visual (VVM, na sigla em inglês) integrado ao discador, permitindo que os serviços de VVM da operadora compatível se conectem ao discador com a configuração mínima. O correio de voz visual permite que os usuários confiram o correio de voz sem fazer chamadas. Os usuários podem conferir uma lista de mensagens em uma interface semelhante à caixa de entrada, ouvi-las em qualquer ordem e excluí-las quando quiserem.

O Android 7.0 adicionou os seguintes parâmetros de configuração à caixa postal visual:

  • Pré-busca de correios de voz controlada por KEY_VVM_PREFETCH_BOOLEAN
  • Controle se uma conexão de dados móveis é necessária por KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
  • Busca de transcrições de correio de voz
  • Busca da cota de correio de voz

Esta página oferece uma visão geral do que é fornecido, como as operadoras podem fazer a integração e alguns detalhes da implementação.

Cliente de correio de voz visual (VVM)

O Android 6.0 e versões mais recentes incluem um cliente de VVM OMTP, que, quando fornecido com a configuração correta, se conecta aos servidores de VVM da operadora e preenche as mensagens de VVM no discador do Android Open Source Project (AOSP). O cliente da VVM:

  • Processa as mensagens SMS usadas para ativar/desativar/consultar o status do serviço e as mensagens SMS usadas para notificar o dispositivo sobre eventos na caixa de e-mails do assinante
  • Sincroniza a caixa de correio com o servidor IMAP
  • Faz o download dos correios de voz quando o usuário decide ouvi-los
  • Busca transcrições de correio de voz
  • Busca detalhes da cota de correio de voz (tamanho total da caixa de e-mails e tamanho ocupado)
  • É integrado ao discador para a funcionalidade do usuário, como ligar de volta, visualizar mensagens não lidas, excluir mensagens etc.

Integrar com o cliente da VVM

Implementação

A operadora precisa fornecer um servidor de correio de voz visual que implemente as especificações de VVM OMTP. A implementação atual do cliente VVM do AOSP oferece suporte aos recursos principais (ouvir/excluir mensagens de voz, fazer o download/sincronização/ouvir), mas os recursos adicionais da TUI (mudança de senha, saudação de mensagens de voz, idiomas) não são implementados. No momento, só oferecemos suporte à versão 1.1 do OMTP e não usamos criptografia para autenticação IMAP.

Para oferecer suporte a transcrições, as operadoras precisam oferecer suporte ao formato de anexo de transcrição (tipo MIME plain/text) especificado no item 2.1.3 da especificação OMTP 1.3.

Observação:as mensagens SMS originadas pelo servidor para o dispositivo (por exemplo, STATUS ou SYNC) precisam ser mensagens SMS de dados.

Configuração

Para que uma operadora se integre ao serviço de VVM, ela precisa fornecer detalhes de configuração à plataforma que o cliente OMTP pode usar. Esses parâmetros são:

  • Número de destino e número da porta para SMS
  • O nome do pacote do app de correio de voz visual fornecido pela operadora (se houver um), para que a implementação da plataforma possa ser desativada se esse pacote for instalado.

Esses valores são fornecidos pela API Carrier Config. Essa funcionalidade, lançada no Android 6.0, permite que um app forneça dinamicamente a configuração relacionada à telefonia aos vários componentes da plataforma que precisam dela. Especificamente, as seguintes chaves precisam ter 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

Consulte Configuração da operadora para mais detalhes.

Implementação

O cliente VVM do OMTP é implementado no packages/services/Telephony, especificamente no src/com/android/phone/vvm/

Configurar

  1. O cliente VVM detecta TelephonyIntents#ACTION_SIM_STATE_CHANGED ou CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED.
  2. Quando um SIM é adicionado com os valores de configuração da operadora corretos (KEY_VVM_TYPE_STRING definido como TelephonyManager.VVM_TYPE_OMTP ou TelephonyManager.VVM_TYPE_CVVM), o cliente VVM envia um SMS ATIVAR para o valor especificado em KEY_VVM_DESTINATION_NUMBER_STRING.
  3. O servidor ativa o serviço de correio de voz visual e envia as credenciais OMTP pelo STATUS SMA. Quando o cliente de correio de voz por mensagem recebe o SMS de status, ele registra a origem do correio de voz e mostra a guia de correio de voz no dispositivo.
  4. As credenciais do OMTP são salvas localmente, e o dispositivo inicia uma sincronização completa, conforme descrito abaixo.

Sincronizando

Há várias maneiras de sincronizar o cliente da VVM com o servidor da operadora e vice-versa.

  • As sincronizações completas ocorrem no download inicial. O cliente de VVM busca metadados de correio de voz, como data e hora, número de origem, duração, transcrições de correio de voz, se disponíveis, e dados de áudio se KEY_VVM_PREFETCH_BOOLEAN for verdadeiro. As sincronizações completas podem ser acionadas por:
    • Inserir um novo chip
    • Reinicializar o dispositivo
    • Retorno ao serviço
    • Receber a transmissão VoicemailContract.ACTION_SYNC_VOICEMAIL
  • A sincronização de upload ocorre quando um usuário interage com uma mensagem de voz para ler ou excluir. As sincronizações de upload fazem com que o servidor mude os dados para corresponder aos dados do dispositivo. Por exemplo, se o usuário ler uma mensagem de voz, ela será marcada como lida no servidor. Se o usuário excluir uma mensagem de voz, ela será excluída no servidor.
  • A sincronização de download ocorre quando o cliente VVM recebe um SMS SYNC "MBU" (atualização da caixa de correio) da operadora. Uma mensagem SYNC contém os metadados de uma nova mensagem para que ela possa ser armazenada no provedor de conteúdo de correio de voz.

Observação:os valores de cota da caixa de correio de voz são recuperados em cada sincronização.

Download do correio de voz

Quando um usuário pressiona "Tocar" para ouvir um correio de voz, o arquivo de áudio correspondente é transferido por download. Se o usuário escolher ouvir o correio de voz, o discador poderá transmitir VoicemailContract.ACTION_FETCH_VOICEMAIL, que o cliente de correio de voz recebe, iniciar o download do conteúdo e atualizar o registro no provedor de conteúdo de correio de voz da plataforma.

Desativar o VVM

O serviço de correio de voz visual pode ser desativado ou desativado pela interação do usuário, pela remoção de um chip válido ou pela substituição por um app de correio de voz visual da operadora. Desativado significa que o dispositivo local não exibe mais o correio de voz visual. Desativado significa que o serviço foi desativado para o assinante. A interação do usuário pode desativar o serviço. A remoção do SIM desativa temporariamente o serviço porque ele não está mais presente, e a substituição da VVM da operadora desativa o cliente da VVM do AOSP.

Interação do usuário

O usuário pode ativar ou desativar o correio de voz visual manualmente. Se um usuário desativar o correio de voz visual, ele também vai desativar o serviço. Quando o usuário desativa o correio de voz visual, um SMS DEACTIVATE é enviado, a origem do correio de voz é desregistrada localmente e a guia de correio de voz desaparece. Se o usuário reativar o correio de voz visual, o serviço também será reativado.

Remover o chip

Se houver mudanças no estado do SIM do dispositivo (ACTION_SIM_STATE_CHANGED) ou nos valores da configuração da operadora (ACTION_CARRIER_CONFIG_CHANGED) e uma configuração válida para o SIM não existir mais, a origem do correio de voz será desregistrada localmente e a guia de correio de voz vai desaparecer. Se o chip for substituído, o correio de voz visual será reativado.

Substituído por VVM da operadora

Um app de correio de voz visual da operadora, se instalado no dispositivo, pode desativar o cliente de correio de voz visual do AOSP. Isso é feito verificando se um pacote com um nome que corresponde ao parâmetro KEY_CARRIER_VVM_PACKAGE_NAME_STRING está instalado.

O cliente do VVM ainda pode ser ativado pela interação do usuário.

Teste

Há um conjunto de testes do CTS (desde o Android 4.0) para as APIs VoicemailProvider que permitem que um app insira/consulte/exclua mensagens de voz na plataforma. Essas são as mesmas APIs que o VVM usa para adicionar/excluir mensagens de voz, de modo que qualquer app de discagem possa mostrá-las na interface.

Para testar se o app de configuração está transmitindo a configuração OMTP corretamente, teste o código com:

  • Um SIM com uma assinatura de certificado válida
  • Um dispositivo com o Android 6.0 e uma versão não modificada do framework de smartphone do AOSP