В Android 6.0 (Marshmallow) появилась поддержка просмотра голосовой почты (VVM), интегрированная в приложение "Телефон". Это позволяет совместимым сервисам VVM операторов связи подключаться к приложению "Телефон" с минимальной настройкой. Просмотр голосовой почты позволяет пользователям легко проверять голосовые сообщения без звонков. Пользователи могут просматривать список сообщений в интерфейсе, похожем на почтовый ящик, слушать их в любом порядке и удалять.
В Android 7.0 в просмотр голосовой почты были добавлены следующие параметры конфигурации:
- Предварительная загрузка голосовых сообщений контролируется приложением "
KEY_VVM_PREFETCH_BOOLEAN" - Управление тем, требуется ли подключение к мобильному интернету, с помощью
KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN - Получение расшифровок голосовой почты.
- Получение квоты голосовой почты
На этой странице вы найдете общие сведения о том, что входит в API, как операторы могут интегрировать его и как он работает.
Клиент для просмотра голосовой почты
В Android 6.0 и более поздних версиях есть клиент OMTP VVM, который (при правильной настройке) подключается к серверам VVM оператора и заполняет сообщения VVM в приложении "Телефон" Android Open Source Project (AOSP). Клиент VVM:
- Обрабатывает SMS-сообщения, используемые для активации, деактивации и запроса статуса сервиса, а также SMS-сообщения, используемые для уведомления устройства о событиях в почтовом ящике подписчика.
- Синхронизирует почтовый ящик с сервером IMAP.
- Скачивает голосовые сообщения, когда пользователь решает их прослушать.
- Получение расшифровок голосовой почты.
- Получает сведения о квоте на голосовую почту (общий размер почтового ящика и занятый объем)
- Интегрируется с приложением "Телефон", чтобы пользователи могли перезванивать, просматривать непрочитанные сообщения, удалять сообщения и т. д.
Как интегрировать клиент VVM
Реализация
Оператор должен предоставить сервер визуальной голосовой почты, реализующий спецификации OMTP VVM. В текущей реализации клиента VVM AOSP поддерживаются основные функции (чтение и удаление голосовых сообщений, скачивание, синхронизация и прослушивание), но не реализованы дополнительные функции TUI (изменение пароля, приветствие в голосовой почте, языки). В настоящее время мы поддерживаем только версию 1.1 протокола OMTP и не используем шифрование для аутентификации IMAP.
Чтобы поддерживать расшифровки, операторы должны поддерживать формат прикрепленных файлов с расшифровками (MIME-тип plain/text), указанный в спецификации OMTP 1.3, пункт 2.1.3.
Примечание. SMS-сообщения, отправляемые сервером на устройство (например, STATUS или SYNC), должны быть SMS-сообщениями с данными.
Конфигурация
Чтобы оператор мог интегрировать сервис VVM, он должен предоставить платформе сведения о конфигурации, которые может использовать клиент OMTP. Параметры:
- Целевой номер и номер порта для SMS
- Название пакета приложения для просмотра голосовой почты, предоставленного оператором (если оно есть). Если этот пакет установлен, реализация платформы может быть отключена.
Эти значения предоставляются через Carrier Config API. Эта функция, появившаяся в Android 6.0, позволяет приложению динамически предоставлять конфигурацию, связанную с телефонией, различным компонентам платформы, которым она необходима. В частности, должны быть определены значения следующих ключей:
KEY_VVM_DESTINATION_NUMBER_STRINGKEY_VVM_PORT_NUMBER_INTKEY_VVM_TYPE_STRINGKEY_CARRIER_VVM_PACKAGE_NAME_STRINGKEY_VVM_PREFETCH_BOOLEANKEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
Подробнее о конфигурации оператора…
Реализация
Клиент OMTP VVM реализован в packages/services/Telephony, в частности в src/com/android/phone/vvm/.
Настроить
- Клиент VVM ожидает
TelephonyIntents#ACTION_SIM_STATE_CHANGEDилиCarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED. - Когда добавляется SIM-карта с правильными значениями Carrier Config (
KEY_VVM_TYPE_STRINGсо значениемTelephonyManager.VVM_TYPE_OMTPилиTelephonyManager.VVM_TYPE_CVVM), клиент VVM отправляет SMS-сообщение ACTIVATE на номер, указанный вKEY_VVM_DESTINATION_NUMBER_STRING. - Сервер активирует визуальную голосовую почту и отправляет учетные данные OMTP через STATUS SMA. Когда клиент VVM получает SMS со статусом, он регистрирует источник голосовой почты и показывает вкладку голосовой почты на устройстве.
- Учетные данные OMTP сохраняются локально, и устройство начинает полную синхронизацию, как описано ниже.
Синхронизация
Клиент VVM может синхронизироваться с сервером оператора разными способами.
- Полная синхронизация выполняется при первой загрузке. Клиент визуальной голосовой почты получает метаданные голосовой почты, такие как дата и время, номер отправителя, продолжительность, расшифровка голосовой почты (если доступна) и аудиоданные, если для параметра
KEY_VVM_PREFETCH_BOOLEANзадано значение True. Полную синхронизацию можно запустить:- Как вставить новую SIM-карту
- Перезагрузка устройства
- Возвращение в строй
- Получение трансляции "
VoicemailContract.ACTION_SYNC_VOICEMAIL"
- Синхронизация загрузки происходит, когда пользователь взаимодействует с голосовой почтой, чтобы прочитать или удалить ее. При синхронизации с загрузкой данные на сервере изменяются в соответствии с данными на устройстве. Например, если пользователь прочитает голосовое сообщение, оно будет отмечено как прочитанное на сервере, а если удалит его, оно будет удалено и на сервере.
- Синхронизация скачивания происходит, когда клиент VVM получает от оператора SMS-сообщение SYNC с уведомлением об обновлении почтового ящика (MBU). Сообщение SYNC содержит метаданные нового сообщения, которые могут быть сохранены в поставщике контента голосовой почты.
Примечание. Значения квоты для папки "Входящие" голосовой почты извлекаются во время каждой синхронизации.
Скачивание голосовой почты
Когда пользователь нажимает кнопку воспроизведения, чтобы прослушать голосовое сообщение, скачивается соответствующий аудиофайл. Если пользователь решит прослушать голосовое сообщение, приложение "Телефония" может передать команду VoicemailContract.ACTION_FETCH_VOICEMAIL, которую получит клиент голосовой почты. После этого начнется скачивание контента и обновится запись в поставщике контента голосовой почты платформы.
Как отключить визуальную голосовую почту
Сервис просмотра голосовой почты может быть отключен или деактивирован пользователем, при удалении действительной SIM-карты или при замене приложением оператора. Отключено означает, что на устройстве больше не отображается визуальная голосовая почта. Отключено означает, что сервис отключен для подписчика. Взаимодействие с пользователем может деактивировать сервис, извлечение SIM-карты временно отключает сервис, поскольку он больше не присутствует, а замена оператором VVM отключает клиент AOSP VVM.
Взаимодействие с пользователем
Пользователь может вручную включить или отключить визуальную голосовую почту. Если пользователь отключит просмотр голосовой почты, он также деактивирует сервис. Когда пользователь отключает просмотр голосовой почты, отправляется SMS с текстом DEACTIVATE, источник голосовой почты отменяет локальную регистрацию, а вкладка голосовой почты исчезает. Если они снова включат визуальную голосовую почту, сервис будет активирован.
Извлечение SIM-карты
Если состояние SIM-карты (ACTION_SIM_STATE_CHANGED) или значения конфигурации оператора (ACTION_CARRIER_CONFIG_CHANGED) изменились и для SIM-карты больше нет действительной конфигурации, источник голосовой почты отменяет локальную регистрацию, и вкладка голосовой почты исчезает. Если SIM-карта будет заменена, просмотр голосовой почты снова включится.
Заменена на визуальную голосовую почту оператора
Если на устройстве установлено приложение просмотра голосовой почты оператора, оно может отключить клиент VVM AOSP. Для этого проверяется, установлен ли пакет с названием, соответствующим параметру KEY_CARRIER_VVM_PACKAGE_NAME_STRING.
Клиент VVM можно включить вручную.
Тестирование
В Android 4.0 и более поздних версиях есть набор тестов CTS для API VoicemailProvider, которые позволяют приложению вставлять, запрашивать и удалять голосовые сообщения на платформе. Эти же API используются для добавления и удаления голосовых сообщений, поэтому любое приложение "Телефона" может показывать их в интерфейсе.
Чтобы проверить, правильно ли приложение передает конфигурацию OMTP, протестируйте код с помощью:
- SIM-карта с действительной подписью сертификата.
- Устройство с Android 6.0 и неизмененной версией фреймворка AOSP для телефонов.