配置呼叫转接
呼叫转接行为通过 API 和 Voice Gateway 配置或高级 JSON 配置属性进行定义。
发起呼叫转接
在 V1.0.0.2 和更高版本中,通过在 JSON 节点定义中定义 vgwActTransfer 操作标记来在 Watson Assistant 服务中发起呼叫转接。
{
"output": {
"vgwAction": {
"command": "vgwActTransfer",
"parameters": {
"transferHeader": "User-to-User",
"transferHeaderVal": "12a345b6c7d8901234e5;encoding=hex;purpose=foo;content=bar",
"transferTarget": "tel:+18883334444"
}
}
}
}
如果将 SIP URI 定义为转接目标,请确保对 URI 中的 @ 字符进行转义,以便 Watson Assistant 不会处理该值。
...
{
"transferHeader": "User-to-User",
"transferHeaderVal": "12a345b6c7d8901234e5;encoding=hex;purpose=foo;content=bar",
"transferTarget": "sip:12345556789\\@myhost.com"
}
...
先前的 Voice Gateway 版本使用 vgwTransfer 状态变量发起呼叫转接。虽然此状态变量继续可用,但是现在不推荐使用以支持 vgwActTransfer 操作标记。有关更多信息,请参阅不推荐使用的状态变量。
确定转接成功还是失败
当转接过程成功时,Watson Assistant 接收到包含文字 "vgwCallTransferred" 且 vgwCallTransferred 状态变量设置为 Yes 的文本更新。
当转接失败并且 vgwDisconnectCallOnTransferFailure 状态变量设置为 No 时,Watson Assistant 从 Voice Gateway 接收包含字符串 "vgwCallTransferFailed" 的文本更新。此字符串指示转接失败。请参阅故障时转接以配置 Watson
Assistant 服务实例和 Voice Gateway 部署,从而对转接失败作出响应。
挂断后转接
缺省情况下,Voice Gateway 使用 SIP REFER 请求来执行转接呼叫。根据 IVR 服务提供程序,可能需要将呼叫转接配置为改用 SIP BYE 方法。请参阅将 Voice Gateway 与 IVR 和联系中心集成以查找有关 IVR 服务提供者的更多信息。
在 vgwActTransfer 操作中,使用 transferMethod 属性指定转接呼叫的方式(REFER 或 HANGUP)。当设置为 HANGUP 时,转接操作的行为发生更改。Voice Gateway 回放任何关联文本,然后通过发送 SIP BYE 请求来挂断呼叫,而不是发送 SIP REFER 请求。
挂断后,Voice Gateway 通过 BYE 消息将 transferTarget 属性中指定的转接目标传递到呼叫锚点。包含转接目标的头字段由 transferTargetHeader 属性确定。如果未指定 transferTargetHeader 属性,那么 Voice Gateway 使用 Transfer-Target。如果在配置呼叫转接操作时未包含 transferMethod 属性,那么缺省情况下 vgwActTransfer 使用 REFER 方法。
{
"output": {
"vgwAction": {
"command": "vgwActTransfer",
"parameters": {
"transferTarget": "tel:18883334444",
"transferTargetHeader": "Transfer-Target",
"transferMethod": "HANGUP"
}
}
}
}
故障时转接
可将 Voice Gateway 配置为在发生故障时自动将呼叫转接到静态端点。例如,如果 Voice Gateway 失去与已配置的某个 Watson 服务的连接,可能发生故障。
以下状态变量可在首轮对话时设置,并在呼叫期间发送故障时使用。请参阅定义操作和状态。
| 状态变量名称 | 期望值 | 缺省值 | 描述 |
|---|---|---|---|
| vgwTransferFailedMessage | 文本字符串 | - | 如果 vgwDisconnectCallOnTransferFailure 设置为 Yes,那么是指在呼叫转接失败时以流式方法传送到呼叫者的消息。应在第一个轮次由 Watson Assistant 设置。 |
| vgwConversationFailedMessage | 文本字符串 | - | 在 Watson Assistant 失败时以流式方法传送到呼叫者的消息。应在第一个轮次由 Watson Assistant 设置。 |
例如,以下状态变量告知 Voice Gateway,从该节点响应开始,如果呼叫转接失败,那么在结束呼叫之前,vgwTransferFailedMessage 会以流式方法传送到呼叫者。
{
"context": {
"vgwDisconnectCallOnTransferFailure": "Yes",
"vgwTransferFailedMessage": "Call transfer to an agent failed. 请稍后再试。Good bye."
}
}
如果 Voice Gateway 无法访问 Watson Assistant,那么可以使用以下配置环境变量来强制转接到静态电话号码。
| 环境变量 | 缺省值 | 描述 |
|---|---|---|
| CONVERSATION_FAILED_REPLY_MESSAGE | 因技术问题被转接到代理程序的呼叫。再见。 | 在 Watson Assistant 失败时以流式方法传送到呼叫者的消息 |
| TRANSFER_DEFAULT_TARGET | 无 | 标识要转接到的目标端点。必须是有效的 SIP 或 tel URI(例如 sip:10.10.10.10)。这是缺省转接目标。仅当发生故障并且无法从 Watson Assistant API 获取呼叫转接目标时使用 |
| TRANSFER_FAILED_REPLY_MESSAGE | 呼叫转接到代理程序失败。请稍后再试。再见。 | 如果 DISCONNECT_CALL_ON_TRANSFER_FAILURE 设置为 True,那么在呼叫转接失败时,该消息会以流式方法传送到呼叫者。 |
配置 Voice Gateway 以将错误代码作为成功响应处理
当 Voice Gateway 在呼叫转接期间处理 SIP NOTIFY 请求时,如果 NOTIFY 请求中指定的响应代码不在 [200-299] 范围内,那么转接过程将失败。某些 IVR 系统可能会在 NOTIFY 请求中发送错误代码,即使转接成功也如此。可以使用 ACCEPT_TRANSFER_REJECT_CODES 配置属性或 vgwActTransfer 属性 acceptTransferRejectCodes 来配置 Voice Gateway 作为成功响应处理的错误代码的列表。
在以下配置属性示例中,如果 NOTIFY 请求包含 410 或 500 错误代码,那么 Voice Gateway 将 NOTIFY 请求作为成功请求处理,并且继续执行转接过程。
ACCEPT_TRANSFER_REJECT_CODES=410,500
可以使用 vgwActTransfer 操作中的 acceptTransferRejectCodes 属性来指定在处理 NOTIFY 请求期间作为成功响应处理的错误代码的列表。以下示例显示如何使用 vgwActTransfer 操作来配置 Voice Gateway,以将包含 410 或 500 错误代码的 NOTIFY 请求作为成功请求处理。
{
"command": "vgwActTransfer",
"parameters": {
"transferTarget": "tel:999",
"acceptTransferRejectCodes": "410,500"
}
}
在呼叫转接中发送用户到用户信息 (UUI) 数据
Voice Gateway 可以在 SIP REFER 消息、SIP BYE 请求或 SIP INFO 请求中发送用户到用户信息 (UUI) 数据。
当 Voice Gateway 转接呼叫时,它可以在 SIP REFER 消息中发送 UUI 数据。在 V1.0.0.4c 和更高版本中,Voice Gateway 支持使用以下头字段以用于在 REFER 请求中发送 UUI 数据:
User-to-UserContactRefer-To
如果使用 SIP BYE 请求来转接呼叫,在 V1.0.0.7 和更高版本中,将在 User-to-User 头字段内发送 UUI 数据。
在 SIP BYE 或 SIP REFER 请求中发送 UUI 数据
您可以通过针对 SIP BYE 或 SIP REFER 请求在 vgwActTransfer 操作上使用 uuiData 和 uuiSendMethod 属性来定制 Voice Gateway 用于发送 UUI 数据的头。要配置头字段,请将 uuiSendMethod 属性设置为 uuiHeader、contactHeader 或
referToURL。如果不提供 uuiSendMethod 属性的值,那么缺省情况下在 User-to-User 头字段中发送数据。请参阅操作标记。
{
"output": {
"vgwAction": {
"command": "vgwActTransfer",
"parameters": {
"transferTarget": "sip:+18883334444@example.com",
"uuiData": "59a390f3d2b7310023a2;encoding=hex;purpose=abc;content=123",
"uuiSendMethod": "contactHeader"
}
}
}
}
在 SIP INFO 请求中发送 UUI 数据
当转接呼叫时,Voice Gateway 可以在 SIP REFER 或 BYE 请求中发送 UUI 数据。某些会话边界控制器不支持这些选项,并且期望在 SIP INFO 请求中提供 UUI 数据。在转接或断开连接呼叫之前,可以使用 vgwActSendSIPInfo 来发送包含 UUI 数据和定制内容的 SIP INFO 请求。V1.0.0.8 和更高版本。
使用要添加到 SIP INFO 请求中的 SIP 头名称/值对来配置 sipHeaders 属性。请勿在列表中包含系统头字段,如 From、To、Contact 等。请提供正确格式的熟知头字段以避免解析问题。不能将格式不正确的头添加到消息中。
您可以选择性地配置 messageBody 属性以包含任何其他信息。messageBody 是附加到 SIP INFO 请求的主体。要包含 messageBody,请在 sipHeaders 列表中包含强制头 Content-Type。如果不添加 Content-Type,那么将插入缺省值 application/text。
{
"output": {
"command": "vgwActSendSIPInfo",
"parameters": {
"sipHeaders": {
"Content-Type": "multipart/mixed;boundary=unique-boundary-1"
},
"messageBody": "--unique-boundary-1\r\nContent-Type: application/dtmf-relay\r\nSignal=999#\r\nDuration=250\r\n--unique-boundary-1--"
}
}
}
发送 SIP INFO 请求后,Voice Gateway 将等待远程方对 SIP INFO 请求作出响应,然后再处理列表中的其余操作。如果在 Voice Gateway 发送 SIP INFO 请求时出现失败,那么 Voice Gateway 将立即使用 vgwSIPInfoFailed 文本向 SOE 发起轮次。vgwSIPFailureReason 状态变量包含失败原因。
以下示例显示远程方未对 SIP INFO 请求作出响应后 vgwSIPFailureReason 状态变量的格式,包括请求失败的原因。
{
"vgwSIPFailureReason": {
"sipMessage": "INFO",
"failureReason": "A 400 Bad Request error response message was received"
}
}
使用状态变量发送用户到用户信息数据
您还可以在 Watson Assistant 对话中设置以下状态变量。如果定义这些状态变量,然后在转接操作属性上定义不同值,那么操作中的值优先。
| 状态变量名称 | 期望值 | 缺省值 | 描述 |
|---|---|---|---|
vgwUUIData |
用户定义的 | - | 定义转接期间要在传出 SIP REFER 消息中发送的用户到用户信息 (UUI) 数据。V1.0.0.4c 和更高版本。 |
vgwUUISendMethod |
uuiHeader/contactHeader/referToURL |
- | 发送用户到用户信息 (UUI) 数据所使用的方法。缺省情况下,在 User-to-User 头字段中发送 UUI 数据。V1.0.0.4c 和更高版本。 |
Voice Gateway 根据发送的值和方法对 UUI 数据进行编码。如果在 Contact 或 Refer-To 头字段中发送 UUI 数据,那么数据将编码为 URI 头。如果 Refer-To 头值为 tel URL,那么 UUI 数据作为 URL 参数进行发送。例如,先前示例中的 UUI 数据在 Contact 头上发送并按如下所示进行编码:
Contact: <sip:+18883334444@example.com?User-to-User=59a390f3d2b7310023a2%3Bencoding%3Dhex%3Bpurpose%3Dabc%3Bcontent%3D123>
已知问题:无法在 tel URL 中对 UUI 数据进行编码。作为变通方法,请为 UUI 数据提供已编码的值。
在 1.0.0.4c 之前的版本中,可以在 Watson Assistant 对话中设置以下状态变量,以通知 Voice Gateway 要在传出 REFER 消息中设置的定制头。请注意,使用这些变量时,在 vgwTransferHeaderVal 属性上指定的 UUI 数据未编码。
| 状态变量名称 | 期望值 | 缺省值 | 描述 |
|---|---|---|---|
vgwTransferHeader |
用户定义的 | - | 定义转接期间传出 SIP REFER 消息中的定制头字段。定制头值由 vgwSIPTransferHeaderVal 状态变量定义。 |
vgwTransferHeaderVal |
用户定义的 | - | 转接期间在传出 SIP REFER 消息中定义定制头的值。定制头字段由 vgwTransferHeader 状态变量定义。 |
通过传递 GUID 来跟踪呼叫
企业电话系统可以配置为将全局唯一标识 (GUID) 作为 User-to-User 头添加到入局 SIP 呼叫。GUID 用于在企业网络中跟踪呼叫的整个生命周期。Voice Gateway 可配置为从初始 SIP 邀请抽取 GUID,并将相同 GUID 作为后续 REFER 消息中的头进行传递。传递 GUID 将确保在呼叫传播到联系中心代理的过程中可正确地跟踪呼叫。
CUSTOM_SIP_INVITE_HEADER 配置环境变量标识从建立呼叫的初始 SIP INVITE 消息中提取的定制头。指定此环境变量时,指定的 SIP 头将传递到 vgwSIPCustomInviteHeader 状态变量中的 Watson Assistant。
要在传出 REFER 消息中设置定制头,可以使用 UUI 数据的操作标记和状态变量或使用定制转接头状态变量,如上一部分中所述。