Voice Gateway 中通話失敗的處理
一般而言,與 Voice Gateway 通話時,如果遇到問題導致失敗,視是否有定義轉接目標而定,Voice Gateway 會有兩種行為。在轉接方面,建議配置預設轉接目標,如此一來,當連接至 Watson Assistant 或「服務編排引擎」失敗時,仍會轉接該通話。這兩者不論何者,在設置通話時,以及當通話處於作用中時,都會進行以下說明的通話失敗處理。
若有定義轉接目標
在此情況下,當發生任何失敗情況時,IBM Voice Gateway 會傳送 SIP REFER,以便起始轉接至所定義的轉接目標。當發生失敗時,它會執行下列步驟,並將通話轉接出去:
- 嘗試將
CONVERSATION_FAILED_REPLY_MESSAGE環境變數配置(JSON 進階配置的conversationFailedReplyMessage)中指定的文字,加以合成並播放給發話端 - 如果因 Text to Speech 服務無法使用,而無法合成音訊時,則會改為從
CONVERSATION_FAILED_REPLY_AUDIO_URL環境變數配置(JSON 進階配置的conversationFailedReplyAudioURL)中指定的 URL,將 WAV 檔以串流方式傳送給發話端 - 讓發話端維持通話,並使用 SIP REFER 起始轉接。
萬一轉接失敗,IBM Voice Gateway 會嘗試將 TRANSFER_FAILED_REPLY_MESSAGE 環境變數配置(JSON 進階配置的 transferFailedReplyMessage)中指定的文字,加以合成並播放給發話端。
重要事項:唯一不會傳送 SIP REFER 的情況是,當 IBM Voice Gateway 無法配置 UDP 埠給媒體時,它會以 302 暫時移動回應,來回應 SIP INVITE 要求,並在 contact 標頭中包含轉接目標,該標頭就會將通話遞送至所定義的端點。
如果沒有定義轉接目標
如果沒有定義轉接目標,當發生任何錯誤情況時,Voice Gateway 將:
- 嘗試將
CONVERSATION_FAILED_REPLY_MESSAGE環境變數配置(JSON 進階配置的conversationFailedReplyMessage)中指定的文字,加以合成並播放給發話端。 - 如果因 Text to Speech 服務無法使用,而無法合成音訊時,則會改為從
CONVERSATION_FAILED_REPLY_AUDIO_URL(JSON 進階配置的conversationFailedReplyAudioURL)中指定的 URL,將 WAV 檔以串流方式傳送給發話端。 - 傳送 SIP BYE 要求給發話端,以結束通話。
配置預設轉接目標
配置預設轉接目標,如此一來,萬一通話失敗,且無法從 Watson Assistant 工作區取得轉接目標時,還是可以轉接該通話。
`DEFAULT_TRANSFER_TARGET=<sip-address-of-target-to-transfer-to>`
或者,透過 JSON 進階配置:
{
"tenants": [{
"tenantURI": "2345556789",
"description": "Voice Gateway Demo US",
"whitelistFromUri": "8765554321",
"putCallerOnHoldOnTransfer": "false",
"transferDefaultTarget": "<sip-address-of-target-to-transfer-to>"
"conversation": {
...
},
"stt": {
...
},
"tts": {
...
}
}]
}