Android 6.0 (Marshmallow) ha introdotto un'implementazione del supporto Visual Voicemail (VVM) integrato nel Dialer, consentendo ai servizi Carrier VVM compatibili di collegarsi al Dialer con una configurazione minima. La segreteria visiva consente agli utenti di controllare facilmente la posta vocale senza effettuare telefonate. Gli utenti possono visualizzare un elenco di messaggi in un'interfaccia simile a una casella di posta, ascoltarli in qualsiasi ordine e eliminarli come desiderato.
Android 7.0 ha aggiunto i seguenti parametri di configurazione alla segreteria visiva:
- Prelettura dei messaggi vocali controllata da
KEY_VVM_PREFETCH_BOOLEAN
- Controllo se è richiesta una connessione dati cellulare da
KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
- Recupero delle trascrizioni dei messaggi vocali
- Recupero della quota di posta vocale
Questo articolo fornisce una panoramica di ciò che viene fornito, di come gli operatori possono integrarlo e di alcuni dettagli sull'implementazione.
Client di posta vocale visiva (VVM).
Android 6.0 e versioni successive includono un client VVM OMTP che (se fornito con la configurazione corretta) si connetterà ai server Carrier VVM e popolerà i messaggi di posta vocale visiva all'interno del dialer Android Open Source Project (AOSP). Il client VVM:
- Gestisce i messaggi SMS utilizzati per attivare/disattivare/interrogare lo stato del servizio e i messaggi SMS utilizzati per notificare al dispositivo eventi presenti nella casella di posta dell'abbonato
- Sincronizza la casella di posta con il server IMAP
- Scarica i messaggi vocali quando l'utente sceglie di ascoltarli
- Recupera le trascrizioni dei messaggi vocali
- Recupera i dettagli della quota di posta vocale (dimensione totale della casella di posta e dimensione occupata)
- Si integra nel Dialer per funzionalità utente come richiamare, visualizzare messaggi non letti, eliminare messaggi, ecc.
Integrazione con il client VVM
Implementazione
Il vettore deve fornire un server di posta vocale visiva che implementi le specifiche OMTP VVM . L'attuale implementazione del client AOSP VVM supporta le funzionalità principali (lettura/eliminazione messaggi vocali, download/sincronizzazione/ascolto) ma le funzionalità TUI aggiuntive (modifica password, saluto della segreteria telefonica, lingue) non sono implementate. Al momento supportiamo solo la versione OMTP 1.1 e non utilizziamo la crittografia per l'autenticazione IMAP.
Per supportare le trascrizioni, i vettori devono supportare il formato dell'allegato di trascrizione (tipo MIME semplice/testo) specificato nella specifica OMTP 1.3, punto 2.1.3.
Nota : i messaggi SMS originati dal server al dispositivo (ad esempio STATUS o SYNC) devono essere messaggi SMS di dati.
Configurazione
Affinché un operatore possa integrarsi con il servizio VVM, deve fornire i dettagli di configurazione alla piattaforma che il client OMTP può utilizzare. Questi parametri sono:
- Numero di destinazione e numero di porta per gli SMS
- Il nome del pacchetto dell'app di segreteria visiva fornita dall'operatore (se fornita), in modo che l'implementazione della piattaforma possa essere disabilitata se il pacchetto è installato
Questi valori vengono forniti tramite l' API Carrier Config . Questa funzionalità, lanciata in Android 6.0, consente a un'applicazione di fornire dinamicamente la configurazione relativa alla telefonia ai vari componenti della piattaforma che la richiedono. In particolare le seguenti chiavi dovranno avere valori definiti:
-
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
Per ulteriori dettagli, consultare l'articolo Configurazione dell'operatore .
Implementazione
Il client OMTP VVM è implementato all'interno di packages/services/Telephony
, in particolare all'interno di src/com/android/phone/vvm/
Impostare
- Il client VVM è in ascolto per
TelephonyIntents#ACTION_SIM_STATE_CHANGED
oCarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED
. - Quando viene aggiunta una SIM con i valori di configurazione dell'operatore corretti (
KEY_VVM_TYPE_STRING
impostato suTelephonyManager.VVM_TYPE_OMTP
oTelephonyManager.VVM_TYPE_CVVM
), il client VVM invia un ACTIVATE SMS al valore specificato inKEY_VVM_DESTINATION_NUMBER_STRING
. - Il server attiva il servizio visual voicemail e invia le credenziali OMTP tramite sms STATUS. Quando il client VVM riceve l'sms STATUS, registra l'origine della posta vocale e visualizza la scheda della posta vocale sul dispositivo.
- Le credenziali OMTP vengono salvate localmente e il dispositivo inizia una sincronizzazione completa, come descritto di seguito.
Sincronizzazione
Esistono diversi modi in cui il client VVM può sincronizzarsi con il server dell'operatore e viceversa.
- La sincronizzazione completa avviene al momento del download iniziale. Il client VVM recupera i metadati della posta vocale come data e ora; numero di origine; durata; trascrizioni dei messaggi vocali, se disponibili; e dati audio se
KEY_VVM_PREFETCH_BOOLEAN
è vero. Le sincronizzazioni complete possono essere attivate da:- Inserimento di una nuova SIM
- Riavvio del dispositivo
- Ritorno in servizio
- Ricezione della trasmissione
VoicemailContract.ACTION_SYNC_VOICEMAIL
- La sincronizzazione del caricamento avviene quando un utente interagisce con un messaggio vocale per leggerlo o eliminarlo. Le sincronizzazioni di caricamento fanno sì che il server modifichi i propri dati in modo che corrispondano ai dati sul dispositivo. Ad esempio, se l'utente legge un messaggio vocale, viene contrassegnato come letto sul server; se un utente elimina un messaggio vocale, viene eliminato sul server.
- La sincronizzazione dei download avviene quando il client VVM riceve un sms SYNC "MBU" (aggiornamento della casella di posta) dal gestore. Un messaggio SYNC contiene i metadati per un nuovo messaggio in modo che possa essere archiviato nel fornitore di contenuti della posta vocale.
Nota : i valori della quota della casella di posta vocale vengono recuperati durante ogni sincronizzazione.
Scarica la segreteria telefonica
Quando un utente preme Riproduci per ascoltare un messaggio vocale, viene scaricato il file audio corrispondente. Se l'utente sceglie di ascoltare la posta vocale, il Dialer può trasmettere VoicemailContract.ACTION_FETCH_VOICEMAIL
, che il client di posta vocale riceverà, avviare il download del contenuto e aggiornare il record nel fornitore di contenuti della posta vocale della piattaforma.
Disabilitare VVM
Il servizio VVM può essere disabilitato o disattivato tramite l'interazione dell'utente, la rimozione di una SIM valida o la sostituzione con un'app VVM dell'operatore. Disabilitato significa che il dispositivo locale non visualizza più la posta vocale visiva. Disattivato significa che il servizio è disattivato per l'abbonato. L'interazione dell'utente può disattivare il servizio, la rimozione della SIM disabilita temporaneamente il servizio perché non è più presente e la sostituzione della VVM dell'operatore disabilita il client VVM AOSP.
Interazione dell'utente
L'utente può abilitare o disabilitare manualmente la segreteria visiva. Se un utente disattiva la segreteria visiva, disattiva anche il proprio servizio. Quando disabilitano la posta vocale visiva, viene inviato un sms DISATTIVATO, la fonte della posta vocale viene annullata localmente e la scheda della posta vocale scompare. Se riattivano la segreteria visiva, anche il loro servizio verrà riattivato.
Rimozione della SIM
Se vengono apportate modifiche allo stato della SIM del dispositivo ( ACTION_SIM_STATE_CHANGED
) o ai valori di configurazione dell'operatore ( ACTION_CARRIER_CONFIG_CHANGED
) e non esiste più una configurazione valida per la SIM specificata, l'origine della segreteria telefonica verrà annullata localmente e la scheda della segreteria telefonica scomparirà. Se la SIM viene sostituita, VVM verrà riattivato.
Sostituito dall'operatore VVM
Un'app di segreteria visiva dell'operatore, se installata sul dispositivo, può disabilitare il client AOSP VVM. Ciò si ottiene controllando se è installato un pacchetto con un nome corrispondente al parametro KEY_CARRIER_VVM_PACKAGE_NAME_STRING
.
Il client VVM può comunque essere abilitato tramite l'interazione dell'utente.
Test
Esiste un set esistente (a partire da Android 4.0) di test CTS per le API VoicemailProvider che consentono a un'app di inserire/interrogare/eliminare messaggi vocali nella piattaforma. Queste sono le stesse API utilizzate da VVM per aggiungere/eliminare messaggi vocali in modo che qualsiasi app Dialer possa visualizzarli nell'interfaccia utente.
Per verificare che l'applicazione di configurazione stia superando correttamente la configurazione OMTP, puoi testare il codice con:
- Una SIM contenente una firma di certificato valida
- Un dispositivo con Android 6.0 con una versione non modificata del framework del telefono AOSP