Visuelle Voicemail

Android 6.0 (Marshmallow) brachte eine in den Dialer integrierte Implementierung der Visual Voicemail (VVM)-Unterstützung, die es kompatiblen Carrier-VVM-Diensten ermöglicht, sich mit minimaler Konfiguration in den Dialer einzubinden. Mit Visual Voicemail können Benutzer Voicemails ganz einfach abrufen, ohne einen Anruf tätigen zu müssen. Benutzer können eine Liste von Nachrichten in einer posteingangsähnlichen Oberfläche anzeigen, sie in beliebiger Reihenfolge anhören und sie bei Bedarf löschen.

Android 7.0 hat der visuellen Voicemail die folgenden Konfigurationsparameter hinzugefügt:

  • Vorabruf von Voicemails gesteuert durch KEY_VVM_PREFETCH_BOOLEAN
  • Steuerung, ob eine Mobilfunk-Datenverbindung erforderlich ist, durch KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
  • Abrufen von Voicemail-Transkripten
  • Abrufen des Voicemail-Kontingents

Dieser Artikel gibt einen Überblick darüber, was bereitgestellt wird, wie Netzbetreiber es integrieren können und einige Details zur Implementierung.

Visual Voicemail (VVM)-Client

Android 6.0 und höher enthält einen OMTP-VVM-Client, der (bei korrekter Konfiguration) eine Verbindung zu Carrier-VVM-Servern herstellt und visuelle Voicemail-Nachrichten innerhalb des Android Open Source Project (AOSP) Dialer auffüllt. Der VVM-Client:

  • Verarbeitet die SMS-Nachrichten, die zum Aktivieren/Deaktivieren/Abfragen des Status des Dienstes verwendet werden, und die SMS-Nachrichten, die zum Benachrichtigen des Geräts über Ereignisse im Postfach des Abonnenten verwendet werden
  • Synchronisiert das Postfach mit dem IMAP-Server
  • Lädt die Voicemails herunter, wenn der Benutzer sie anhören möchte
  • Ruft Voicemail-Transkripte ab
  • Ruft Details zum Voicemail-Kontingent ab (Gesamtgröße der Mailbox und belegte Größe)
  • Integriert sich in den Dialer für Benutzerfunktionen wie Rückruf, Anzeigen ungelesener Nachrichten, Löschen von Nachrichten usw.

Integrieren Sie den VVM-Client

Implementierung

Der Netzbetreiber muss einen visuellen Voicemail-Server bereitstellen, der die OMTP-VVM-Spezifikationen implementiert. Die aktuelle Implementierung des AOSP VVM-Clients unterstützt die Kernfunktionen (Voicemails lesen/löschen, herunterladen/synchronisieren/anhören), die zusätzlichen TUI-Funktionen (Passwortänderung, Voicemail-Begrüßung, Sprachen) sind jedoch nicht implementiert. Derzeit unterstützen wir nur OMTP Version 1.1 und verwenden keine Verschlüsselung für die IMAP-Authentifizierung.

Um Transkriptionen zu unterstützen, müssen Netzbetreiber das Transkriptionsanhangsformat (MIME-Typ Plain/Text) unterstützen, das in der OMTP 1.3-Spezifikation, Punkt 2.1.3, angegeben ist.

Hinweis : Vom Server stammende SMS-Nachrichten an das Gerät (z. B. STATUS oder SYNC) müssen Daten-SMS-Nachrichten sein.

Aufbau

Damit ein Netzbetreiber den VVM-Dienst integrieren kann, muss der Netzbetreiber der Plattform Konfigurationsdetails bereitstellen, die der OMTP-Client verwenden kann. Diese Parameter sind:

  • Zielnummer und Portnummer für SMS
  • Der Paketname der vom Netzbetreiber bereitgestellten visuellen Voicemail-App (falls vorhanden), damit die Plattformimplementierung deaktiviert werden kann, wenn dieses Paket installiert ist

Diese Werte werden über die Carrier Config API bereitgestellt. Diese in Android 6.0 eingeführte Funktionalität ermöglicht es einer Anwendung, den verschiedenen Plattformkomponenten, die sie benötigen, dynamisch telefoniebezogene Konfigurationen bereitzustellen. Insbesondere müssen für die folgenden Schlüssel Werte definiert sein:

  • 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

Weitere Einzelheiten finden Sie im Artikel zur Carrier-Konfiguration .

Implementierung

Der OMTP-VVM-Client ist in packages/services/Telephony implementiert, insbesondere in src/com/android/phone/vvm/

Aufstellen

  1. Der VVM-Client wartet auf TelephonyIntents#ACTION_SIM_STATE_CHANGED oder CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED .
  2. Wenn eine SIM-Karte hinzugefügt wird, die über die richtigen Carrier-Config-Werte verfügt ( KEY_VVM_TYPE_STRING auf TelephonyManager.VVM_TYPE_OMTP oder TelephonyManager.VVM_TYPE_CVVM gesetzt), sendet der VVM-Client eine ACTIVATE-SMS an den in KEY_VVM_DESTINATION_NUMBER_STRING angegebenen Wert.
  3. Der Server aktiviert den visuellen Voicemail-Dienst und sendet die OMTP-Anmeldeinformationen per STATUS-SMS. Wenn der VVM-Client die STATUS-SMS empfängt, registriert er die Voicemail-Quelle und zeigt die Registerkarte „Voicemail“ auf dem Gerät an.
  4. Die OMTP-Anmeldeinformationen werden lokal gespeichert und das Gerät beginnt mit der vollständigen Synchronisierung, wie unten beschrieben.

Synchronisierung

Es gibt verschiedene Möglichkeiten, wie der VVM-Client mit dem Carrier-Server synchronisiert werden kann und umgekehrt.

  • Vollständige Synchronisierungen erfolgen beim ersten Download. Der VVM-Client ruft Voicemail-Metadaten wie Datum und Uhrzeit ab; Herkunftsnummer; Dauer; Voicemail-Transkriptionen, falls verfügbar; und Audiodaten, wenn KEY_VVM_PREFETCH_BOOLEAN True ist. Vollständige Synchronisierungen können ausgelöst werden durch:
    • Einlegen einer neuen SIM
    • Neustart des Geräts
    • Rückkehr in den Dienst
    • Empfangen der VoicemailContract.ACTION_SYNC_VOICEMAIL -Broadcast
  • Die Upload-Synchronisierung erfolgt, wenn ein Benutzer mit einer Voicemail interagiert, um sie zu lesen oder zu löschen. Upload-Synchronisierungen führen dazu, dass der Server seine Daten ändert, um sie an die Daten auf dem Gerät anzupassen. Wenn der Benutzer beispielsweise eine Voicemail liest, wird sie auf dem Server als gelesen markiert. Wenn ein Benutzer eine Voicemail löscht, wird sie auf dem Server gelöscht.
  • Die Download-Synchronisierung erfolgt, wenn der VVM-Client eine „MBU“-SYNC-SMS (Mailbox-Update) vom Netzbetreiber erhält. Eine SYNC-Nachricht enthält die Metadaten für eine neue Nachricht, damit diese im Voicemail-Inhaltsanbieter gespeichert werden kann.

Hinweis : Die Quotenwerte für den Voicemail-Posteingang werden bei jeder Synchronisierung abgerufen.

Voicemail-Download

Wenn ein Benutzer auf „Play“ drückt, um eine Voicemail anzuhören, wird die entsprechende Audiodatei heruntergeladen. Wenn der Benutzer die Voicemail abhört, kann der Dialer VoicemailContract.ACTION_FETCH_VOICEMAIL senden, den der Voicemail-Client empfängt, den Download des Inhalts initiieren und den Datensatz im Voicemail-Inhaltsanbieter der Plattform aktualisieren.

VVM deaktivieren

Der VVM-Dienst kann durch Benutzerinteraktion, Entfernen einer gültigen SIM-Karte oder Ersetzen durch eine VVM-App des Mobilfunkanbieters deaktiviert oder deaktiviert werden. Deaktiviert bedeutet, dass das lokale Gerät keine visuelle Voicemail mehr anzeigt. Deaktiviert bedeutet, dass der Dienst für den Abonnenten deaktiviert ist. Durch Benutzerinteraktion kann der Dienst deaktiviert werden, durch das Entfernen der SIM-Karte wird der Dienst vorübergehend deaktiviert, da er nicht mehr vorhanden ist, und durch den Austausch der Netzbetreiber-VVM wird der AOSP-VVM-Client deaktiviert.

Benutzerinteraktion

Der Benutzer kann die visuelle Voicemail manuell aktivieren oder deaktivieren. Wenn ein Benutzer die visuelle Voicemail deaktiviert, deaktiviert er auch seinen Dienst. Wenn sie die visuelle Voicemail deaktivieren, wird eine DEAKTIVIEREN-SMS gesendet, die Voicemail-Quelle wird lokal abgemeldet und die Registerkarte „Voicemail“ verschwindet. Wenn sie Visual Voicemail wieder aktivieren, wird auch ihr Dienst reaktiviert.

SIM-Entfernung

Wenn sich der SIM-Status ( ACTION_SIM_STATE_CHANGED ) oder die Carrier-Konfigurationswerte ( ACTION_CARRIER_CONFIG_CHANGED ) des Geräts ändern und keine gültige Konfiguration für die angegebene SIM-Karte mehr vorhanden ist, wird die Voicemail-Quelle lokal abgemeldet und die Registerkarte „Voicemail“ verschwindet. Wenn die SIM-Karte ausgetauscht wird, wird VVM wieder aktiviert.

Ersetzt durch Träger VVM

Eine visuelle Voicemail-App des Mobilfunkanbieters kann den AOSP-VVM-Client deaktivieren, sofern sie auf dem Gerät installiert ist. Dies wird erreicht, indem überprüft wird, ob ein Paket mit einem Namen installiert ist, der dem Parameter KEY_CARRIER_VVM_PACKAGE_NAME_STRING entspricht.

Der VVM-Client kann weiterhin durch Benutzerinteraktion aktiviert werden.

Testen

Es gibt (seit Android 4.0) eine Reihe von CTS-Tests für die VoicemailProvider-APIs, die es einer App ermöglichen, Voicemails in die Plattform einzufügen/abzufragen/zu löschen. Dies sind dieselben APIs, die VVM zum Hinzufügen/Löschen von Voicemails verwendet, damit jede Dialer-App sie in der Benutzeroberfläche anzeigen kann.

Um zu testen, ob Ihre Konfigurationsanwendung die OMTP-Konfiguration korrekt übergibt, können Sie Ihren Code testen mit:

  • Eine SIM-Karte mit einer gültigen Zertifikatsignatur
  • Ein Gerät mit Android 6.0 und einer unveränderten Version des AOSP-Telefon-Frameworks