对代理程序助手和 SIPREC 进行编程

在将 Voice Gateway 配置为支持代理程序助手时,必须将来自呼叫的媒体与 Voice Gateway 共享,以进行呼叫音频转录并转发到互联服务。

Voice Gateway 在配置为代理程序助手时充当 SIPREC 会话记录服务器 (SRS)。 您可以将来自任何 SIPREC 会话记录客户机 (SRC)(例如会话边界控制器 (SBC))的呼叫派生到 Voice Gateway 来处理实时转录。然后,这些转录作为轮次事件转发到服务编排引擎 (SOE),或者作为报告事件转发到报告 REST 服务器或 IBM Cloudant 服务。

使用 Voice Gateway 打开 SIPREC 会话时,该会话会从 SRC 接收到呼叫者和代理程序的单独音频流。Voice Gateway 将呼叫音频转码并转发到语音转文字处理引擎,然后将返回的转录发送到任何已配置的服务。

Voice Gateway 还处理 SIPREC 元数据的解析,以将每个转录的发声的源参与者详细信息与相关的已解析会话详细信息相关联。

连接到服务编排引擎

Voice Gateway 通过 Watson Assistant REST API 与 Watson Assistant/服务编排引擎 (SOE) 通信,从而发送请求数据和接收对应的 JSON 响应。有关 REST 请求/响应消息格式,请参阅 Watson Assistant REST API 文档

使用 Watson Assistant API v1 时,服务编排引擎必须在所有响应消息中提供必需的 conversation_id 字段。

{
  "context": {
    "conversation_id": "xxxx"
  }
}

使用 Watson Assistant API 将转录发布到 SOE

在代理程序助手环境中,您可以将 Voice Gateway 配置为通过 Watson Assistant REST API 将转录发送到 SOE。系统在 input.text 字段中发送转录。

谨记:使用 SIPREC 时,流只是单向传入到 Voice Gateway 中。

系统从 SIPREC 元数据中抽取以下状态变量的值并使用每个转录或发声将其发送到 SOE。

表 1. 从 SIPREC 元数据抽取的状态变量。
状态变量 特定于 SIPREC 的描述
vgwSessionID 缺省情况下,设置为 gcid。还支持 calliducidsession_id。请参阅状态变量
vgwSIPCallID 对于 SIPREC,Voice Gateway 将尝试从 SIPREC 元数据中提取此状态变量。如果在 SIPREC 元数据中找不到 SIP 呼叫标识,那么它会从 SIPREC SIP INVITE 插入 SIP 呼叫标识。请参阅状态变量
vgwSIPToURI 表示记录的被呼叫者地址。必须进行配置。请参阅状态变量
vgwSIPFromURI 表示记录的呼叫者地址。请参阅状态变量

Voice Gateway 发送到 SOE 的 SIPREC 相关状态变量。

表 2. 发送到 SOE 的 SIPREC 相关状态变量。
状态变量 特定于 SIPREC 的描述
vgwTranscriptionSource 包含转录来自的参与者记录地址 (AOR) 的状态变量。V1.0.0.7a 和更高版本。
vgwIsCaller 状态变量设置为 Yes(对于呼叫者)和 No(对于代理程序)。缺省情况下,设置为 No。V1.0.0.7a 和更高版本。
vgwSTTResponse 包含从 Speech to Text 服务接收到的最终响应。
vgwSIPRequestURI 从 SIPREC SIP INVITE 请求 URI 中提取。请参阅状态变量
vgwSIPCustomInviteHeader 从 SIPREC INVITE 消息中提取的头(如果已配置)。请参阅状态变量
vgwSIPCustomInviteHeaders 从 SIPREC INVITE 消息中提取的头(如果已配置)。请参阅状态变量
vgwIsDTMF 在输入发声 DTMF 时设置为 Yes
vgwNetworkWarnings 启用 RTCP 后,Voice Gateway 将网络警告发送到已配置的 SOE。

SOE 发送到 Voice Gateway 的 SIPREC 相关状态变量。

表 3. 发送到 Voice Gateway 的 SIPREC 相关状态变量
状态变量 特定于 SIPREC 的描述
vgwPostResponseTimeoutCount 等待参与者进行输入的时间量(以毫秒为单位)。 如果超过该值,那么 Watson Assistant 将接收到包含文字 vgwPostResponseTimeout 的文本更新,以指示发生了超时。缺省情况下,在 SIPREC 会话中不支持响应计时器。SOE 必须设置此状态变量才能启用响应超时. V1.0.1.0 和更高版本。

报告事件

发布转录事件的备用方法是发布到报告服务器。此接口还可用于将转录事件存储到 IBM Cloudant 或报告 REST 服务器(例如 Splunk)。

请参阅从 Voice Gateway 报告转录事件以获取更多详细信息。

配置 SIPREC 连接

您可以配置 SIPREC 连接以在 SOE 和/或报告 REST 服务器上发送转录事件。

配置 SOE 以接收转录事件

要使用 Docker 环境变量将 SOE 配置为通过 Watson Assistant REST API 从 Voice Gateway 接收转录事件,请将以下环境变量添加到 Voice Gateway 部署文件。

表 4. 用于配置 SOE 以接收转录事件的环境变量
环境变量 描述
WATSON_CONVERSATION_URL 请参阅 SIP Orchestrator 环境变量
WATSON_CONVERSATION_USERNAME 配置 SOE 是否需要基本认证用户名。请参阅 SIP Orchestrator 环境变量
WATSON_CONVERSATION_PASSWORD 配置 SOE 是否需要基本认证密码。请参阅 SIP Orchestrator 环境变量

您还可以使用 JSON 属性来配置 SOE。以下代码示例显示如何配置 conversation 对象以包含 SOE 配置。请使用 SOE urlpasswordusername 来代替 Watson Assistant 实例的凭证。

{
  "tenantURI": "siprec-tenant",
  "conversation": {
    "url": "https://your-soe.com/soe-api",
    "password": "soe-defined-password",
    "username": "soe-defined-username"
  },
}

使用 Docker 环境变量配置 SIPREC

在为代理程序助手设置 Voice Gateway 时,请使用以下环境变量。请参阅 Voice Gateway 的配置环境变量

表 5. 用于为代理程序助手配置 Voice Gateway 的环境变量。
环境变量 特定于 SIPREC 的描述
CUSTOM_SIPREC_SESSION_FIELD 缺省情况下,设置为 gcid。还支持 calliducidsession_id。请参阅 SIP Orchestrator 环境变量
SEND_SIP_TO_URI_TO_CONVERSATION true/false 表示记录的被呼叫者地址。请参阅 SIP Orchestrator 环境变量
SEND_SIP_FROM_URI_TO_CONVERSATION true/false 记录的呼叫者地址。请参阅 SIP Orchestrator 环境变量
SEND_SIP_CALL_ID_TO_CONVERSATION true/false 对于 SIPREC,Voice Gateway 尝试从 SIPREC 元数据中提取此环境变量。如果找不到 SIP 呼叫标识,那么它将从 SIPREC SIP INVITE 插入 SIP 呼叫标识。
CUSTOM_SIP_INVITE_HEADER 请参阅 SIP Orchestrator 环境变量
CUSTOM_SIP_SESSION_HEADER 此环境变量在 SIPREC 元数据中找不到 CUSTOM_SIPREC_SESSION_FIELD 时用于 vgwSessionID。请参阅 SIP Orchestrator 环境变量
WHITELIST_TO_URI 请参阅 SIP Orchestrator 环境变量。对于 SIPREC,在 V1.0.2 和更高版本中支持该环境变量。
WHITELIST_SIPREC_ATTR_NAME 请参阅 SIP Orchestrator 环境变量
WHITELIST_SIPREC_ATTR_VALUE 请参阅 SIP Orchestrator 环境变量

当新呼叫进入时,Voice Gateway 将内省 SIPREC 元数据并查找 WHITELIST_SIPREC_ATTR_NAMEWHITELIST_SIPREC_ATTR_VALUE 对。如果找不到匹配项,那么 Voice Gateway 将内省 SIP To URI 或 SIP Request URI 以验证它是否与 WHITELIST_TO_URI 中指定的值匹配。

使用多租户 JSON 配置文件配置 SIPREC

在多租户部署中,通过对 tenantURI 属性使用 siprec-tenant 标识,在租户中指定 SIPREC 会话的配置设置。请参阅高级 JSON 配置属性

以下示例显示的配置表明如何使用 Watson Assistant REST API 将转录发布到 SOE。

{
  "tenantURI": "siprec-tenant",
  "description": "SIPREC tenant",
  "sendSIPCallIDToConversation": true,
  "sendSIPToUriToConversation": true,
  "sendSIPFromUriToConversation": true,
  "whitelistSiprecAttrName": "aor",
  "whitelistSiprecAttrValue": "123456789",
  "customSIPRECSessionField": "ucid",
  "conversation": {
    "url": "https://your-soe.com/soe-api",
    "password": "soe-defined-password",
    "username": "soe-defined-username"
  },
        "stt": {
          "credentials": {
              "username": "3b36c02g-6dfb-4cb6-9a7f-et4fafd1b2f1",
      "password": "pLM1h4hcgExG"
    },
            "config": {
                "profanity_filter": true,
      "smart_formatting": true,
      "model": "en-US_NarrowbandModel"
    }
  }
}
表 6. 用于为代理程序助手配置 Voice Gateway 的 JSON 属性。
JSON 属性 特定于 SIPREC 的描述
customSIPRECSessionField 缺省情况下,设置为 gcid。还支持 calliducidsession_id。请参阅可选租户属性
sendSIPToUriToConversation true/false 表示记录的被呼叫者地址。请参阅可选租户属性
sendSIPFromUriToConversation true/false 记录的呼叫者地址。请参阅可选租户属性
sendSIPCallIDToConversation true/false 对于 SIPREC,Voice Gateway 尝试从 SIPREC 元数据中提取此环境变量。如果找不到 SIP 呼叫标识,那么它将从 SIPREC SIP INVITE 插入 SIP 呼叫标识。
customSIPInviteHeader 请参阅可选租户属性
customSIPInviteHeaders 请参阅可选租户属性
customSIPRECSessionField 此环境变量在 SIPREC 元数据中找不到 customSIPRECSessionField 时用于 vgwSessionID。请参阅可选租户属性
whitelistToUri 请参阅可选租户属性
whitelistSiprecAttrName 请参阅可选租户属性
whitelistSiprecAttrValue 请参阅可选租户属性
表 7. SIPREC 会话中支持的操作。
JSON 属性 特定于 SIPREC 的描述
vgwActSetSTTConfig 请参阅 Voice Gateway API 中的操作标记和状态变量
vgwActPauseSTT 请参阅 Voice Gateway API 中的操作标记和状态变量
vgwActPauseDTMF 请参阅 Voice Gateway API 中的操作标记和状态变量
vgwActUnPauseDTMF 请参阅 Voice Gateway API 中的操作标记和状态变量
vgwActAddCustomCDRData 请参阅 Voice Gateway API 中的操作标记和状态变量
vgwActCollectDTMF 请参阅 Voice Gateway API 中的操作标记和状态变量收集双音多频 (DTMF) 数字
vgwActHangup 请参阅 Voice Gateway API 中的操作标记和状态变量

在某些操作中,您可以使用 participants 属性来指定应该应用该操作的参与者的列表。