Визуальная голосовая почта

В Android 6.0 (Marshmallow) реализована поддержка визуальной голосовой почты (VVM), интегрированная в Dialer, что позволяет совместимым службам Carrier VVM подключаться к Dialer с минимальной настройкой. Визуальная голосовая почта позволяет пользователям легко проверять голосовую почту, не совершая телефонных звонков. Пользователи могут просматривать список сообщений в интерфейсе, похожем на почтовый ящик, прослушивать их в любом порядке и удалять по желанию.

В Android 7.0 к визуальной голосовой почте добавлены следующие параметры конфигурации:

  • Предварительная загрузка голосовой почты, контролируемая KEY_VVM_PREFETCH_BOOLEAN
  • Контроль того, требуется ли сотовое соединение для передачи данных, с помощью KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
  • Получение транскрипций голосовой почты
  • Получение квоты голосовой почты

В этой статье представлен обзор того, что предоставляется, как операторы связи могут с ним интегрироваться, а также некоторые подробности реализации.

Клиент визуальной голосовой почты (VVM)

Android 6.0 и более поздних версий включает в себя клиент OMTP VVM, который (при наличии правильной конфигурации) будет подключаться к серверам Carrier VVM и заполнять сообщения визуальной голосовой почты в номеронабирателе Android Open Source Project (AOSP). Клиент ВВМ:

  • Обрабатывает SMS-сообщения, используемые для активации/деактивации/запроса статуса услуги, а также SMS-сообщения, используемые для уведомления устройства о событиях в почтовом ящике абонента.
  • Синхронизирует почтовый ящик с сервером IMAP.
  • Загружает голосовые сообщения, когда пользователь решает их прослушать.
  • Получает транскрипции голосовой почты
  • Получает подробную информацию о квоте голосовой почты (общий размер почтового ящика и занятый размер).
  • Интегрируется в Dialer для пользовательских функций, таких как обратный вызов, просмотр непрочитанных сообщений, удаление сообщений и т. д.

Интеграция с клиентом VVM

Выполнение

Оператор связи должен предоставить сервер визуальной голосовой почты, реализующий спецификации OMTP VVM . Текущая реализация клиента AOSP VVM поддерживает основные функции (чтение/удаление голосовой почты, загрузка/синхронизация/прослушивание), но дополнительные функции TUI (смена пароля, приветствие голосовой почты, языки) не реализованы. В настоящее время мы поддерживаем только OMTP версии 1.1 и не используем шифрование для аутентификации IMAP.

Для поддержки транскрипции операторы связи должны поддерживать формат вложения транскрипции (тип MIME обычный/текст), указанный в спецификации OMTP 1.3, пункт 2.1.3.

Примечание . SMS-сообщения, отправляемые сервером на устройство (например, STATUS или SYNC), должны быть SMS-сообщениями с данными.

Конфигурация

Чтобы оператор связи мог интегрироваться со службой VVM, оператор связи должен предоставить сведения о конфигурации платформы, которую может использовать клиент OMTP. Эти параметры:

  • Номер назначения и номер порта для SMS
  • Имя пакета приложения визуальной голосовой почты, предоставляемого оператором связи (если оно предусмотрено), чтобы можно было отключить реализацию платформы, если этот пакет установлен.

Эти значения предоставляются через Carrier Config API . Эта функция, представленная в Android 6.0, позволяет приложению динамически предоставлять конфигурацию, связанную с телефонией, различным компонентам платформы, которым она необходима. В частности, следующие ключи должны иметь определенные значения:

  • 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

Более подробную информацию можно найти в статье «Конфигурация оператора связи» .

Выполнение

Клиент OMTP VVM реализован в packages/services/Telephony , в частности в src/com/android/phone/vvm/

Настраивать

  1. Клиент VVM прослушивает TelephonyIntents#ACTION_SIM_STATE_CHANGED или CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED .
  2. При добавлении SIM-карты с правильными значениями конфигурации оператора связи (для KEY_VVM_TYPE_STRING установлено значение TelephonyManager.VVM_TYPE_OMTP или TelephonyManager.VVM_TYPE_CVVM ), клиент VVM отправляет SMS-сообщение ACTIVATE на значение, указанное в KEY_VVM_DESTINATION_NUMBER_STRING .
  3. Сервер активирует службу визуальной голосовой почты и отправляет учетные данные OMTP через SMS-сообщение STATUS. Когда клиент VVM получает SMS-сообщение СТАТУС, он регистрирует источник голосовой почты и отображает вкладку голосовой почты на устройстве.
  4. Учетные данные OMTP сохраняются локально, и устройство начинает полную синхронизацию, как описано ниже.

Синхронизации

Существует множество способов синхронизации клиента VVM с сервером оператора связи и наоборот.

  • Полная синхронизация происходит при первой загрузке. Клиент VVM извлекает метаданные голосовой почты, такие как дата и время; исходный номер; продолжительность; транскрипции голосовой почты, если таковые имеются; и аудиоданные, если KEY_VVM_PREFETCH_BOOLEAN имеет значение True. Полную синхронизацию можно запустить по следующим причинам:
    • Установка новой SIM-карты
    • Перезагрузка устройства
    • Возвращаюсь в строй
    • Получение широковещательной рассылки VoicemailContract.ACTION_SYNC_VOICEMAIL
  • Синхронизация загрузки происходит, когда пользователь взаимодействует с голосовым сообщением, чтобы прочитать или удалить его. Синхронизация загрузки приводит к тому, что сервер меняет свои данные в соответствии с данными на устройстве. Например, если пользователь читает голосовое сообщение, оно помечается на сервере как прочитанное; если пользователь удаляет голосовое сообщение, оно удаляется на сервере.
  • Синхронизация загрузки происходит, когда клиент VVM получает SMS-сообщение SYNC «MBU» (обновление почтового ящика) от оператора связи. Сообщение SYNC содержит метаданные нового сообщения, которые можно сохранить в поставщике содержимого голосовой почты.

Примечание . Значения квоты для голосовой почты извлекаются во время каждой синхронизации.

Загрузка голосовой почты

Когда пользователь нажимает кнопку воспроизведения, чтобы прослушать голосовое сообщение, загружается соответствующий аудиофайл. Если пользователь решает прослушать голосовую почту, номеронабиратель может передать VoicemailContract.ACTION_FETCH_VOICEMAIL , который получит клиент голосовой почты, инициировать загрузку контента и обновить запись в поставщике контента голосовой почты платформы.

Отключение ВВМ

Службу VVM можно отключить или деактивировать путем взаимодействия с пользователем, удаления действующей SIM-карты или замены приложением VVM оператора связи. Отключено означает, что локальное устройство больше не отображает визуальную голосовую почту. Деактивация означает, что услуга отключена для абонента. Взаимодействие с пользователем может деактивировать службу, удаление SIM-карты временно отключает службу, поскольку она больше не существует, а замена VVM оператора связи отключает клиент AOSP VVM.

Взаимодействие с пользователем

Пользователь может вручную включить или отключить визуальную голосовую почту. Если пользователь отключает визуальную голосовую почту, он также деактивирует свою услугу. Когда они отключают визуальную голосовую почту, отправляется SMS-сообщение ДЕАКТИВИРОВАТЬ, источник голосовой почты отменяется локально, и вкладка голосовой почты исчезает. Если они повторно включат визуальную голосовую почту, их служба также будет повторно активирована.

Удаление SIM-карты

Если произошли изменения в состоянии SIM-карты устройства ( ACTION_SIM_STATE_CHANGED ) или значениях конфигурации оператора связи ( ACTION_CARRIER_CONFIG_CHANGED ), а действительная конфигурация для данной SIM-карты больше не существует, то источник голосовой почты отменяется локально, и вкладка голосовой почты исчезает. Если SIM-карта будет заменена, VVM будет снова включен.

Заменен оператором ВВМ.

Приложение визуальной голосовой почты оператора связи, если оно установлено на устройстве, может отключить клиент AOSP VVM. Это достигается путем проверки того, установлен ли пакет с именем, соответствующим параметру KEY_CARRIER_VVM_PACKAGE_NAME_STRING .

Клиент VVM по-прежнему можно включить посредством взаимодействия с пользователем.

Тестирование

Существует существующий (начиная с Android 4.0) набор тестов CTS для API VoicemailProvider, которые позволяют приложению вставлять, запрашивать и удалять голосовую почту на платформе. Это те же API-интерфейсы, которые VVM использует для добавления/удаления голосовой почты, чтобы любое приложение Dialer могло отображать их в пользовательском интерфейсе.

Чтобы проверить, правильно ли ваше приложение конфигурации передает конфигурацию OMTP, вы можете протестировать свой код с помощью:

  • SIM-карта с действительной подписью сертификата
  • Устройство под управлением Android 6.0 с немодифицированной версией телефонной платформы AOSP.