配置通話轉接
通話轉接行為是透過 API 和 Voice Gateway 配置或 JSON 進階配置內容來定義的。
起始通話轉接
在 1.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 會將 transferTarget 屬性中指定的轉接目的地傳遞給 BYE 訊息中的通話錨點。含有轉接目標的標頭欄位由
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. Please try again later. Good bye."
}
}
如果 Voice Gateway 無法呼叫到 Watson Assistant,可以使用下列配置環境變數,強制轉接到靜態電話號碼。
| 環境變數 | 預設值 | 說明 |
|---|---|---|
| CONVERSATION_FAILED_REPLY_MESSAGE | 因技術問題,正在轉接通話給代理程式。再見。 | 如果 Watson Assistant 失敗,將以串流方式傳送給發話端的訊息。 |
| TRANSFER_DEFAULT_TARGET | none | 識別指向端點的目標轉接。必須是有效的 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 可以將「使用者對使用者資訊 (UUI)」資料放在 SIP REFER 訊息、SIP BYE 要求或 SIPINFO 要求中傳送。
在 Voice Gateway 轉接通話時,它可以將 UUI 資料放在 SIP REFER 訊息中傳送。在 1.0.0.4c 版及更新版本中,Voice Gateway 支援使用下列的標頭欄位,將 UUI 資料放在 REFER 要求中傳送:
User-to-UserContactRefer-To
在 1.0.0.7 版及更新版本中,如果您使用 SIP BYE 要求來轉接通話,則會將 UUI 資料放在 User-to-User 標頭欄位中傳送。
將 UUI 資料放在 SIP BYE 或 SIP REFER 要求中傳送
您可以針對 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"
}
}
}
}
將 UUI 資料放在 SIP INFO 要求中傳送
在轉接通話時,Voice Gateway 可以將 UUI 資料放在 SIP REFER 或 BYE 要求中傳送。某些「階段作業邊界控制器」不支援這些選項,且會預期 UUI 資料提供於 SIP INFO 要求中。在轉接或掛斷通話之前,您可以使用 vgwActSendSIPInfo,來傳送含有 UUI 資料和自訂內容的 SIP INFO 要求。1.0.0.8 版及更新版本。
使用 SIP 標頭名稱/值配對來配置 sipHeaders 屬性,以新增至 SIP INFO 要求。請勿將系統標頭欄位包含在清單中(例如:From、To、Contact 等)。請提供正確格式的已知標頭欄位,以免發生剖析問題。不會將形態異常的標頭新增至訊息。
您可以選擇性地配置 messageBody 屬性,以包含其他任何資訊。messageBody 是附加至 SIP INFO 要求的內文。如果要包含 messageBody,請將必要標頭 Content-Type 包含在 sipHeaders 清單中。如果您沒有新增 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 |
由使用者定義 | - | 定義「使用者對使用者資訊 (UUI)」資料,以便在轉接期間放在送出的 SIP REFER 訊息中傳送。1.0.0.4c 版及更新版本。 |
vgwUUISendMethod |
uuiHeader / contactHeader / referToURL |
- | 「使用者對使用者資訊 (UUI)」資料的傳送方法。依預設,UUI 資料會放在User-to-User 標頭欄位中傳送。1.0.0.4c 版及更新版本。 |
Voice Gateway 會根據值和傳送方法,來編碼 UUI 資料。如果您將 UUI 資料放在 Contact 或 Refer-To 標頭欄位中傳送,則會將資料編碼成 URI 標頭。如果 Refer-To 標頭是一個
tel URL,則會以 URL 參數形式來傳送 UUI 資料。例如,上述範例中的 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 來追蹤通話
您可以配置企業電話系統,以新增一個廣域唯一 ID (GUID) 來作為 SIP 送入通話的 User-to-User 標頭。GUID 用來在企業網路內追蹤該通話(在其整個生命期限內都會)。Voice Gateway 可配置成從起始 SIP 邀請擷取 GUID,並在後續的 REFER 訊息中,以相同的 GUID 作為標頭。傳遞 GUID 可確保能夠適當地追蹤該通話,因為它會傳播給客服中心服務專員。
CUSTOM_SIP_INVITE_HEADER 配置環境變數會識別從建立通話之起始 SIP INVITE 訊息取出的自訂標頭。當您指定這個環境變數時,會在 vgwSIPCustomInviteHeader 狀態變數中將指定的 SIP 標頭傳遞給 Watson Assistant。
如果要在 REFER 送出訊息中設定自訂標頭,您可以依照上節所述,將動作標籤和狀態變數用於 UUI 資料或自訂轉接標頭狀態變數。