Wizualna poczta głosowa

Android 6.0 (Marshmallow) wprowadził obsługę poczty głosowej z wizualizacją (VVM) zintegrowaną z aplikacją Dialer, co pozwala kompatybilnym usługom VVM operatora na łączenie się z aplikacją Dialer przy minimalnej konfiguracji. Wizualna poczta głosowa umożliwia użytkownikom łatwe sprawdzanie poczty głosowej bez konieczności nawiązywania połączeń. Użytkownicy mogą wyświetlać listę wiadomości w interfejsie przypominającym skrzynkę odbiorczą, słuchać ich w dowolnej kolejności i usuwać je według uznania.

W Androidzie 7.0 do wizualnej poczty głosowej dodano te parametry konfiguracji:

  • Pobieranie w poprzednim planie wiadomości głosowych kontrolowane przez aplikację KEY_VVM_PREFETCH_BOOLEAN
  • Określanie, czy aplikacja wymaga połączenia z komórkową transmisją danych KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
  • Pobieranie transkrypcji wiadomości poczty głosowej
  • Pobieranie limitu poczty głosowej

Na tej stronie znajdziesz przegląd tego, co jest udostępniane, jak przewoźnicy mogą to zintegrować, oraz niektóre szczegóły dotyczące implementacji.

Klient wizualnej poczty głosowej (VVM)

Android 6.0 i nowsze wersje zawierają klienta VVM OMTP, który (jeśli ma prawidłową konfigurację) łączy się z serwerami VVM operatora i wypełnia wiadomości VVM w Dialerze w ramach projektu Open Source Android (AOSP). Klient VVM:

  • Obsługuje SMS-y używane do aktywowania/dezaktywowania/sprawdzania stanu usługi oraz SMS-y używane do powiadamiania urządzenia o zdarzeniach w skrzynce pocztowej subskrybenta.
  • Synchronizuje skrzynkę pocztową z serwerem IMAP.
  • Pobiera wiadomości głosowe, gdy użytkownik zdecyduje się je odsłuchać.
  • Pobiera transkrypcje wiadomości poczty głosowej.
  • Pobiera szczegóły limitu poczty głosowej (łączny rozmiar skrzynki pocztowej i zajęty rozmiar).
  • Integruje się z aplikacją Dialer, aby umożliwić użytkownikom wykonywanie takich czynności jak oddzwanianie połączeń, wyświetlanie nieprzeczytanych wiadomości czy ich usuwanie.

Integracja z klientem VVM

Implementacja

Operator musi udostępnić serwer poczty głosowej z wizualizacją, który spełnia specyfikacje OMTP VVM. Obecna implementacja klienta AOSP VVM obsługuje podstawowe funkcje (odczytywanie/usuwanie wiadomości głosowych, pobieranie/synchronizowanie/słuchanie), ale dodatkowe funkcje TUI (zmiana hasła, powitanie wiadomości głosowej, języki) nie są zaimplementowane. Obecnie obsługujemy tylko wersję 1.1 protokołu OMTP i nie używamy szyfrowania do uwierzytelniania IMAP.

Aby obsługiwać transkrypcje, operatorzy muszą obsługiwać format załącznika transkrypcji (typ MIME plain/text) określony w specyfikacji OMTP 1.3, punkt 2.1.3.

Uwaga: SMS-y wysyłane z serwera na urządzenie (np. STATUS lub SYNC) muszą być SMS-ami danych.

Konfiguracja

Aby operator mógł zintegrować się z usługą VVM, musi podać szczegóły konfiguracji platformy, których może użyć klient OMTP. Są to:

  • Numer docelowy i numer portu w przypadku SMS-ów
  • nazwę pakietu aplikacji do wizualnej poczty głosowej dostarczonej przez operatora (jeśli taka aplikacja jest dostępna), aby można było wyłączyć implementację platformy, jeśli pakiet jest zainstalowany;

Te wartości są udostępniane za pomocą interfejsu Carrier Config API. Ta funkcja, wprowadzona w Androidzie 6.0, umożliwia aplikacji dynamiczne dostarczanie konfiguracji związanej z telefonią do różnych komponentów platformy, które jej potrzebują. W szczególności te klucze muszą mieć zdefiniowane wartości:

  • 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

Więcej informacji znajdziesz w sekcji Konfiguracja operatora.

Implementacja

Klient VVM OMTP jest implementowany w ramach packages/services/Telephony, w szczególności w ramach src/com/android/phone/vvm/

Konfiguracja

  1. Klient VVM czeka na TelephonyIntents#ACTION_SIM_STATE_CHANGED lub CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED.
  2. Gdy dodasz kartę SIM z odpowiednimi wartościami konfiguracji operatora (KEY_VVM_TYPE_STRING ustawioną na TelephonyManager.VVM_TYPE_OMTP lub TelephonyManager.VVM_TYPE_CVVM), klient VVM wysyła SMS aktywacyjny na numer podany w polu KEY_VVM_DESTINATION_NUMBER_STRING.
  3. Serwer aktywuje usługę wizualnej poczty głosowej i wysyła dane logowania OMTP przez SMA STATUS. Gdy klient VVM otrzyma SMS-a STATUS, rejestruje źródło poczty głosowej i wyświetla kartę poczty głosowej na urządzeniu.
  4. Dane logowania do OMTP są zapisywane lokalnie, a urządzenie rozpoczyna pełną synchronizację, jak opisano poniżej.

Synchronizacja

Klient VVM może synchronizować się z serwerem operatora i odwrotnie na różne sposoby.

  • Pełna synchronizacja odbywa się podczas pierwszego pobierania. Klient VVM pobiera metadane poczty głosowej, takie jak data i godzina, numer źródłowy, czas trwania, transkrypcje poczty głosowej (jeśli są dostępne) oraz dane audio (jeśli KEY_VVM_PREFETCH_BOOLEAN ma wartość Prawda). Pełne synchronizacje mogą być uruchamiane przez:
    • Wkładanie nowej karty SIM
    • Restartowanie urządzenia
    • Powrót do służby
    • Odbieranie transmisji VoicemailContract.ACTION_SYNC_VOICEMAIL
  • Synchronizacja przesyłania następuje, gdy użytkownik w jakimś stopniu wejdzie w interakcję z pocztą głosową, aby ją przeczytać lub usunąć. Przesyłanie danych synchronizuje zmiany na serwerze, aby dopasować je do danych na urządzeniu. Jeśli na przykład użytkownik przeczyta wiadomość głosową, zostanie ona oznaczona jako przeczytana na serwerze. Jeśli ją usunie, zostanie usunięta na serwerze.
  • Synchronizacja pobierania występuje, gdy klient VVM otrzyma od operatora SMS-a SYNC „MBU” (mailbox update). Komunikat SYNC zawiera metadane nowej wiadomości, aby można było ją zapisać w serwisie poczty głosowej dostawcy treści.

Uwaga: wartości dotyczące limitu skrzynki odbiorczej poczty głosowej są pobierane podczas każdej synchronizacji.

Pobieranie poczty głosowej

Gdy użytkownik naciśnie przycisk odtwarzania, aby odsłuchać pocztę głosową, odpowiedni plik audio zostanie pobrany. Jeśli użytkownik zdecyduje się odsłuchać pocztę głosową, Dialer może przesłać VoicemailContract.ACTION_FETCH_VOICEMAIL, którą odbierze klient poczty głosowej, zainicjować pobieranie treści i zaktualizować rekord w usługach dostawcy treści poczty głosowej.

Wyłączanie VVM

Usługę poczty głosowej na kartę SIM można wyłączyć lub dezaktywować, wykonując odpowiednie czynności na urządzeniu, usuwając kartę SIM lub zastępując ją aplikacją poczty głosowej operatora. Wyłączona oznacza, że urządzenie lokalne nie wyświetla już poczty głosowej na kartę SIM. Dezaktywowana oznacza, że usługa jest wyłączona dla abonenta. Użytkownik może dezaktywować usługę, usunięcie karty SIM powoduje tymczasowe wyłączenie usługi, ponieważ nie jest ona już obecna, a wymiana karty VVM operatora powoduje wyłączenie klienta VVM AOSP.

Interakcje użytkownika

Użytkownik może ręcznie włączyć lub wyłączyć wizualną pocztę głosową. Jeśli użytkownik wyłączy pocztę głosową z wizualizacją, dezaktywuje też usługę. Gdy użytkownik wyłączy pocztę głosową, zostanie wysłany SMS z komandom DEACTIVATE, źródło poczty głosowej zostanie usunięte z rejestru lokalnego, a karta poczty głosowej zniknie. Jeśli ponownie włączysz wizualną pocztę głosową, usługa zostanie również ponownie aktywowana.

Usuwanie karty SIM

Jeśli nastąpią zmiany stanu karty SIM (ACTION_SIM_STATE_CHANGED) lub wartości konfiguracji operatora (ACTION_CARRIER_CONFIG_CHANGED) na urządzeniu, a nie ma już prawidłowej konfiguracji dla danej karty SIM, źródło poczty głosowej zostanie zarejestrowane lokalnie, a karta poczty głosowej zniknie. Jeśli karta SIM zostanie wymieniona, wizualna poczta głosowa zostanie ponownie włączona.

Zastąpione przez VVM operatora

Aplikacja operatora do obsługi wizualnej poczty głosowej, jeśli jest zainstalowana na urządzeniu, może wyłączyć klienta AOSP VVM. Sprawdza to, czy zainstalowany jest pakiet o nazwie odpowiadającej parametrowi KEY_CARRIER_VVM_PACKAGE_NAME_STRING.

Klient VVM może nadal być włączany przez użytkownika.

Testowanie

Od Androida 4.0 istnieje zestaw testów CTS dotyczących interfejsów API usługi VoicemailProvider, które umożliwiają aplikacji wstawianie, wyszukiwanie i usuwanie wiadomości głosowych na platformie. Są to te same interfejsy API, których VVM używa do dodawania i usuwania wiadomości głosowych, dzięki czemu dowolna aplikacja Dialer może wyświetlać je w interfejsie.

Aby sprawdzić, czy aplikacja konfiguracyjna poprawnie przekazuje konfigurację OMTP, możesz przetestować kod za pomocą:

  • karta SIM z prawidłowym podpisem certyfikatu;
  • urządzenie z Androidem 6.0 i niezmienioną wersją AOSP Phone Framework;