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

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

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

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

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

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

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

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

Интеграция с клиентом 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 через смс STATUS. Когда клиент VVM получает sms-сообщение STATUS, он регистрирует источник голосовой почты и отображает вкладку голосовой почты на устройстве.
  4. Учетные данные OMTP сохраняются локально, и устройство начинает полную синхронизацию, как описано ниже.

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

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

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

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

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

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

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

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

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

Пользователь может вручную включить или отключить визуальную голосовую почту. Если пользователь отключает визуальную голосовую почту, он также деактивирует свою службу. Когда они отключают визуальную голосовую почту, отправляется смс DEACTIVATE, источник голосовой почты отменяется локально, и вкладка голосовой почты исчезает. Если они повторно включают визуальную голосовую почту, их служба также повторно активируется.

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

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

Заменен перевозчиком VVM

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

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

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

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

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

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