O Android 6.0 (Marshmallow) trouxe uma implementação de suporte para correio de voz visual (VVM) integrado ao Dialer, permitindo que serviços Carrier VVM compatíveis se conectem ao Dialer com configuração mínima. O correio de voz visual permite que os usuários verifiquem facilmente o correio de voz sem fazer nenhuma ligação. Os usuários podem visualizar uma lista de mensagens em uma interface semelhante a uma caixa de entrada, ouvi-las em qualquer ordem e excluí-las conforme desejado.
O Android 7.0 adicionou os seguintes parâmetros de configuração ao correio de voz visual:
- Pré-busca de correios de voz controlados por
KEY_VVM_PREFETCH_BOOLEAN
- Controle se uma conexão de dados de celular é exigida por
KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
- Busca de transcrições de correio de voz
- Buscando cota de correio de voz
Este artigo fornece uma visão geral do que é fornecido, como as operadoras podem se integrar a ele e alguns detalhes da implementação.
Cliente de correio de voz visual (VVM)
O Android 6.0 e superior inclui um cliente OMTP VVM, que (quando fornecido com a configuração correta) se conectará aos servidores Carrier VVM e preencherá mensagens visuais de correio de voz no discador Android Open Source Project (AOSP). O cliente VVM:
- Lida com 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 correio do assinante
- Sincroniza a caixa de correio com o servidor IMAP
- Baixa os correios de voz quando o usuário decide ouvi-los
- Busca transcrições de correio de voz
- Busca detalhes da cota do correio de voz (tamanho total da caixa de correio e tamanho ocupado)
- Integra-se ao Dialer para funcionalidades do usuário, como retornar chamadas, visualizar mensagens não lidas, excluir mensagens, etc.
Integrar com o cliente VVM
Implementação
A Operadora deverá fornecer um servidor de correio de voz visual implementando as especificações OMTP VVM . A implementação atual do cliente AOSP VVM suporta os recursos principais (ler/excluir mensagens de voz, baixar/sincronizar/ouvir), mas os recursos adicionais da TUI (alteração de senha, saudação de correio de voz, idiomas) não são implementados. No momento, oferecemos suporte apenas ao OMTP versão 1.1 e não usamos criptografia para autenticação IMAP.
Para suportar transcrições, as operadoras devem suportar o formato de anexo de transcrição (tipo MIME simples/texto) especificado na especificação OMTP 1.3, item 2.1.3.
Nota : As mensagens SMS originadas no servidor para o dispositivo (por exemplo, STATUS ou SYNC) devem ser mensagens SMS de dados.
Configuração
Para que uma operadora se integre ao serviço VVM, a operadora deve fornecer detalhes de configuração para a 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 aplicativo de correio de voz visual fornecido pela operadora (se houver), para que a implementação da plataforma possa ser desabilitada se esse pacote estiver instalado
Esses valores são fornecidos por meio da API Carrier Config . Essa funcionalidade, lançada no Android 6.0, permite que um aplicativo forneça de forma dinâmica configurações relacionadas à telefonia para os diversos componentes da plataforma que dela necessitam. Em particular as seguintes chaves devem 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 o artigo Configuração da operadora para obter mais detalhes.
Implementação
O cliente OMTP VVM é implementado em packages/services/Telephony
, em particular em src/com/android/phone/vvm/
Configurar
- O cliente VVM escuta
TelephonyIntents#ACTION_SIM_STATE_CHANGED
ouCarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED
. - Quando um SIM é adicionado com os valores corretos de Carrier Config (
KEY_VVM_TYPE_STRING
definido comoTelephonyManager.VVM_TYPE_OMTP
ouTelephonyManager.VVM_TYPE_CVVM
), o cliente VVM envia um ACTIVATE SMS para o valor especificado emKEY_VVM_DESTINATION_NUMBER_STRING
. - O servidor ativa o serviço de correio de voz visual e envia as credenciais OMTP via sms STATUS. Quando o cliente VVM recebe o sms STATUS, ele registra a origem do correio de voz e exibe a guia correio de voz no dispositivo.
- As credenciais OMTP são salvas localmente e o dispositivo inicia uma sincronização completa, conforme descrito abaixo.
Sincronizando
Existem várias maneiras pelas quais o cliente VVM pode sincronizar com o servidor da operadora e vice-versa.
- As sincronizações completas ocorrem no download inicial. O cliente VVM busca metadados do 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 True. As sincronizações completas podem ser acionadas por:- Inserindo um novo SIM
- Reinicializando o dispositivo
- Voltando ao serviço
- Recebendo a transmissão
VoicemailContract.ACTION_SYNC_VOICEMAIL
- A sincronização de upload acontece quando um usuário interage com um correio de voz para lê-lo ou excluí-lo. As sincronizações de upload fazem com que o servidor altere seus dados para corresponder aos dados no dispositivo. Por exemplo, se o usuário lê uma mensagem de voz, ela é marcada como lida no servidor; se um usuário excluir um correio de voz, ele será excluído do servidor.
- A sincronização de download ocorre quando o cliente VVM recebe um SMS SYNC "MBU" (atualização de 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.
Nota : Os valores de cota da caixa de entrada do correio de voz são recuperados durante cada sincronização.
Baixar correio de voz
Quando um usuário pressiona play para ouvir uma mensagem de voz, o arquivo de áudio correspondente é baixado. Caso o usuário opte por ouvir o correio de voz, o Dialer poderá transmitir VoicemailContract.ACTION_FETCH_VOICEMAIL
, que o cliente de correio de voz receberá, iniciar o download do conteúdo e atualizar o registro no provedor de conteúdo de correio de voz da plataforma.
Desativando VVM
O serviço VVM pode ser desativado ou desativado por interação do usuário, remoção de um SIM válido ou substituição por um aplicativo VVM da operadora. Desativado significa que o dispositivo local não exibe mais o correio de voz visual. Desativado significa que o serviço está 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 do VVM da operadora desativa o cliente AOSP VVM.
Interação com o usuário
O usuário pode ativar ou desativar manualmente o correio de voz visual. Se um usuário desabilitar o correio de voz visual, ele também estará desativando seu serviço. Quando eles desativam o correio de voz visual, um SMS DEACTIVATE é enviado, a origem do correio de voz é cancelada localmente e a guia do correio de voz desaparece. Se eles reativarem o correio de voz visual, o serviço também será reativado.
Remoção de SIM
Se houver alterações no estado do SIM do dispositivo ( ACTION_SIM_STATE_CHANGED
) ou nos valores de configuração da operadora ( ACTION_CARRIER_CONFIG_CHANGED
) e uma configuração válida para o SIM determinado não existir mais, o registro da origem do correio de voz será cancelado localmente e a guia do correio de voz desaparecerá. Se o SIM for substituído, o VVM será reativado.
Substituído pela operadora VVM
Um aplicativo de correio de voz visual da operadora, se instalado no dispositivo, pode desabilitar o cliente AOSP VVM. Isso é conseguido verificando se um pacote com um nome correspondente ao parâmetro KEY_CARRIER_VVM_PACKAGE_NAME_STRING
está instalado.
O cliente VVM ainda pode ser habilitado através da interação do usuário.
Teste
Existe um conjunto existente (desde o Android 4.0) de testes CTS para as APIs VoicemailProvider que permitem que um aplicativo insira/consulte/exclua mensagens de voz na plataforma. Essas são as mesmas APIs que o VVM usa para adicionar/excluir mensagens de correio de voz para que qualquer aplicativo Dialer possa exibi-las na IU.
Para testar se seu aplicativo de configuração está passando corretamente a configuração do OMTP, você pode testar seu código com:
- Um SIM contendo uma assinatura de certificado válida
- Um dispositivo com Android 6.0 com uma versão não modificada da estrutura de telefone AOSP