对代理程序助手和 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。
| 状态变量 | 特定于 SIPREC 的描述 |
|---|---|
vgwSessionID |
缺省情况下,设置为 gcid。还支持 callid、ucid 和 session_id。请参阅状态变量。 |
vgwSIPCallID |
对于 SIPREC,Voice Gateway 将尝试从 SIPREC 元数据中提取此状态变量。如果在 SIPREC 元数据中找不到 SIP 呼叫标识,那么它会从 SIPREC SIP INVITE 插入 SIP 呼叫标识。请参阅状态变量。 |
vgwSIPToURI |
表示记录的被呼叫者地址。必须进行配置。请参阅状态变量。 |
vgwSIPFromURI |
表示记录的呼叫者地址。请参阅状态变量。 |
Voice Gateway 发送到 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 相关状态变量。
| 状态变量 | 特定于 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 部署文件。
| 环境变量 | 描述 |
|---|---|
WATSON_CONVERSATION_URL |
请参阅 SIP Orchestrator 环境变量。 |
WATSON_CONVERSATION_USERNAME |
配置 SOE 是否需要基本认证用户名。请参阅 SIP Orchestrator 环境变量。 |
WATSON_CONVERSATION_PASSWORD |
配置 SOE 是否需要基本认证密码。请参阅 SIP Orchestrator 环境变量。 |
您还可以使用 JSON 属性来配置 SOE。以下代码示例显示如何配置 conversation 对象以包含 SOE 配置。请使用 SOE url、password 和 username 来代替 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 的配置环境变量。
| 环境变量 | 值 | 特定于 SIPREC 的描述 |
|---|---|---|
CUSTOM_SIPREC_SESSION_FIELD |
无 | 缺省情况下,设置为 gcid。还支持 callid、ucid 和 session_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_NAME 和 WHITELIST_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"
}
}
}
| JSON 属性 | 值 | 特定于 SIPREC 的描述 |
|---|---|---|
customSIPRECSessionField |
无 | 缺省情况下,设置为 gcid。还支持 callid、ucid 和 session_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 | 无 | 请参阅可选租户属性。 |
| 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 属性来指定应该应用该操作的参与者的列表。