O Android 6.0 (Marshmallow) trouxe uma implementação de suporte a correio de voz visual (VVM) integrado ao discador, permitindo que serviços VVM de portadora compatíveis se conectem ao discador com configuração mínima. O correio de voz visual permite que os usuários verifiquem facilmente o correio de voz sem fazer chamadas telefônicas. Os usuários podem visualizar uma lista de mensagens em uma interface semelhante à 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 controlada 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 de correio de voz visual no discador Android Open Source Project (AOSP). O cliente VVM:
- Manipula 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 postal do assinante
- Sincroniza a caixa de correio com o servidor IMAP
- Baixa os correios de voz quando o usuário opta por ouvi-los
- Busca transcrições de correio de voz
- Busca detalhes da cota de correio de voz (tamanho total da caixa de correio e tamanho ocupado)
- Integra-se ao Discador para funcionalidades do usuário, como retorno de chamada, visualização de mensagens não lidas, exclusão de mensagens, etc.
Integrar com o cliente VVM
Implementação
A Operadora deve 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 correios 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 do 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 desativada 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 dinamicamente a configuração relacionada à telefonia para os diversos componentes da plataforma que precisam dela. 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 que tem os valores corretos de Configuração de Operadora (
KEY_VVM_TYPE_STRING
definido comoTelephonyManager.VVM_TYPE_OMTP
ouTelephonyManager.VVM_TYPE_CVVM
), o cliente VVM envia um SMS ACTIVATE 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 STATUS sms. Quando o cliente VVM recebe o sms de STATUS, ele registra a origem do correio de voz e exibe a guia do correio de voz no dispositivo.
- As credenciais OMTP são salvas localmente e o dispositivo inicia uma sincronização completa, conforme descrito abaixo.
Sincronizando
Há várias maneiras pelas quais o cliente VVM pode sincronizar com o servidor da operadora e vice-versa.
- Sincronizações completas ocorrem no download inicial. O cliente 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 True. Sincronizações completas podem ser acionadas por:- Inserindo um novo chip
- Reiniciando 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 ler um correio de voz, ele será marcado como lido 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 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 do correio de voz.
Observação : os valores de cota da caixa de entrada do correio de voz são recuperados durante cada sincronização.
Download do correio de voz
Quando um usuário pressiona play para ouvir um correio de voz, o arquivo de áudio correspondente é baixado. Caso o usuário opte por ouvir o correio de voz, o Discador pode 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 do 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 desabilita temporariamente o serviço porque ele não está mais presente e a substituição da VVM da operadora desabilita o cliente AOSP VVM.
Interação com o usuário
O usuário pode habilitar ou desabilitar manualmente o correio de voz visual. Se um usuário desabilitar o correio de voz visual, ele também está desativando seu serviço. Quando eles desabilitam o correio de voz visual, um sms DEACTIVATE é enviado, a origem do correio de voz não é registrada 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 do chip
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 fornecido não existir mais, a origem do correio de voz não será registrada 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 é feito 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 por meio 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/consulta/exclua correios de voz na plataforma. Essas são as mesmas APIs que o VVM usa para adicionar/excluir correios de voz para que qualquer aplicativo Dialer possa exibi-los na interface do usuário.
Para testar se seu aplicativo de configuração está passando a configuração OMTP corretamente, você pode testar seu código com:
- Um SIM contendo uma assinatura de certificado válida
- Um dispositivo executando o Android 6.0 com uma versão não modificada da estrutura de telefone AOSP