可视化语音信箱

Android 6.0 (Marshmallow) 实现了集成到拨号器的可视化语音信箱 (VVM) 支持,使兼容的运营商 VVM 服务能够通过最少的配置接入拨号器。通过可视化语音信箱,用户无需拨号便可轻松查收语音信息。用户可以在类似于收件箱的界面中查看信息列表,按任何顺序收听信息,并可根据需要删除信息。

Android 7.0 已将下列配置参数添加到可视化语音信箱:

  • 通过 KEY_VVM_PREFETCH_BOOLEAN 控制语音信息的预提取
  • 通过 KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN 控制是否需要移动数据网络连接
  • 语音信息转录内容的提取
  • 语音信箱配额的提取

本文概述了可视化语音信箱的功能、运营商与之进行集成的方式,以及实现方面的一些相关细节。

可视化语音信箱 (VVM) 客户端

Android 6.0 及更高版本中包含一个 OMTP VVM 客户端。如果配置正确的话,该客户端将连接到运营商的 VVM 服务器,并在 Android 开放源代码项目 (AOSP) 拨号器中填入可视化语音邮件。VVM 客户端会执行以下操作:

  • 处理用于激活/停用/查询服务状态的短信,以及处理用于将订阅者邮箱中的事件通知设备的短信
  • 将信箱与 IMAP 服务器同步
  • 当用户选择收听语音邮件时下载这类邮件
  • 提取语音邮件转录内容
  • 提取语音信箱配额的详细信息(信箱总容量和占用容量)
  • 集成到拨号器以实现用户功能(例如:回拨、查看未读邮件、删除邮件等)

与 VVM 客户端进行集成

实现

运营商必须提供实施 OMTP VVM 规范的可视化语音信箱服务器。AOSP VVM 客户端当前的实现支持核心功能(查看/删除语音信息、下载/同步/收听语音信息),但没有实现其他的 TUI 功能(密码更改、语音信箱问候语、语言)。目前,我们仅支持 OMTP 版本 1.1,并且没有对 IMAP 身份验证进行加密。

如需支持转录功能,运营商必须支持 OMTP 1.3 规范第 2.1.3 项所规定的转录附件格式(MIME 类型 plain/text)。

注意:服务器发送到设备的短信(例如:STATUS 或 SYNC)必须为数据短信。

配置

为了让运营商能与 VVM 服务集成,运营商必须向平台提供 OMTP 客户端可以使用的配置详情。这些参数包括:

  • 短信的目标号码和端口号
  • 运营商提供的可视化语音信箱应用的软件包名称(如有提供),以便在安装该软件包后,可以停用平台实现

这些值通过 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_CHANGEDCarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED
  2. 当添加了具有合适的运营商配置值(KEY_VVM_TYPE_STRING 设置为 TelephonyManager.VVM_TYPE_OMTPTelephonyManager.VVM_TYPE_CVVM)的 SIM 卡后,VVM 客户端会向 KEY_VVM_DESTINATION_NUMBER_STRING 中指定的值发送 ACTIVATE 短信。
  3. 服务器激活可视化语音信箱服务,并通过 STATUS 短信发送 OMTP 凭据。当 VVM 客户端收到 STATUS 短信后,就会注册语音邮件来源,并在设备上显示语音信箱标签页。
  4. OMTP 凭据保存到本地,并且设备开始执行完全同步(如下所述)。

同步

VVM 客户端可以通过多种方式与运营商服务器进行同步,反之亦然。

  • 初次下载时会触发完全同步。VVM 客户端提取语音信息的元数据,例如日期和时间、发件号码、时长、语音信息转录内容(如果有)以及音频数据(如果 KEY_VVM_PREFETCH_BOOLEAN 为 true)。完全同步可由以下操作触发:
    • 插入新的 SIM 卡
    • 重启设备
    • 重新使用服务
    • 收到 VoicemailContract.ACTION_SYNC_VOICEMAIL 广播
  • 当用户与语音信箱进行互动以查看或删除语音信息时,就会触发上传同步。上传同步会导致服务器更改其数据,以匹配设备上的数据。例如,如果用户查看语音信息,则相应信息会在服务器中标为已读;如果用户删除语音信息,则相应信息会从服务器中删除。
  • 当 VVM 客户端收到来自运营商的“MBU”(信箱更新)SYNC 短信时,就会触发下载同步。SYNC 短信包含新信息的元数据,以便该信息可以存储在语音信箱内容提供程序中。

注意:每次同步时,系统都会检索语音信箱收件箱配额值。

下载语音信息

当用户按下“播放”来收听语音信息时,相应的音频文件便会下载下来。如果用户选择收听语音信息,拨号器便可以广播语音信箱客户端将会收到的 VoicemailContract.ACTION_FETCH_VOICEMAIL、开始下载内容,并更新平台语音信箱内容提供程序中录制的内容。

停用 VVM

用户互动、取出有效 SIM 卡或者被运营商 VVM 应用所取代都会导致 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 测试用于 VoicemailProvider API。借助 VoicemailProvider API,应用可以在平台中插入/查询/删除语音信息。这些 API 与 VVM 用来添加/删除语音信息的 API 相同,这样一来,任何拨号器应用都可以在界面中显示这些语音信息。

如需测试您的配置应用是否在正确地传递 OMTP 配置,您可以使用以下工具来测试代码:

  • 包含有效证书签名的 SIM 卡
  • 搭载 Android 6.0 且具备未修改版 AOSP 手机框架的设备