通話自動化概觀
Azure 通訊服務通話自動化可讓開發人員建置以伺服器為基礎的智慧型通話工作流程,以及語音和公用交換電話網路 (PSTN) 頻道的通話錄音。 可在 C#、Java、JavaScript 和 Python 中取得的 SDK,其會使用動作事件模型,協助您建置個人化的客戶互動。 您的通訊應用程式可以接聽即時通話事件,並執行控制平面動作 (例如接聽、轉接、播放音訊、開始錄製等),以根據您的商務邏輯來引導和控制通話。
常見使用案例
您可以使用通話自動化建置的一些常見使用案例:
- 針對交易式工作流程規劃 VoIP 或 PSTN 通話 (例如點擊通話和約會提醒),以改善客戶服務。
- 使用播放 (音訊 URL、文字轉換語音和 SSML) 和辨識 (DTMF 和語音) 動作,為自助客戶建置互動工作流程,以用於訂單預約和更新等使用案例。
- 使用直接路由,將您的通訊應用程式與連絡中心和私人電話語音網路整合。
- 藉由建置號碼遮罩服務來保護客戶的身分識別,讓購買者與銷售人員或使用者與平台上的合作夥伴廠商可安全連線。
- 建置行銷和客戶服務的自動化客戶拓展計畫,以提高參與度。
- 基於品質保證目的,在通話後的程序中分析原音音訊的錄音。
使用 Azure 通訊服務通話自動化來建置適合客戶服務案例的通話工作流程,如高階結構所示。 您可以接聽來電或撥打電話。 執行動作,例如播放歡迎訊息,或將客戶連線至 Azure 通訊服務通話 SDK 用戶端應用程式上的即時代理程式來接聽來電要求。 有了 Azure 通訊服務 PSTN 或直接路由的支援,您就可以將此工作流程連線回連絡中心。
功能
Azure 通訊服務通話自動化 SDK 目前提供以下功能。
功能區域 | 功能 | .NET | Java | JavaScript | Python |
---|---|---|---|---|---|
通話前案例 | 接聽一對一通話 | ✔️ | ✔️ | ✔️ | ✔️ |
接聽群組通話 | ✔️ | ✔️ | ✔️ | ✔️ | |
將新的輸出通話放置至一或多個端點 | ✔️ | ✔️ | ✔️ | ✔️ | |
重新導向* (轉接) 通話至一或多個端點 | ✔️ | ✔️ | ✔️ | ✔️ | |
拒絕來電 | ✔️ | ✔️ | ✔️ | ✔️ | |
連線到進行中的通話或會議室 | ✔️ | ✔️ | ✔️ | ✔️ | |
通話中案例 | 將一或多個端點新增至現有通話 | ✔️ | ✔️ | ✔️ | ✔️ |
取消新增端點至現有通話 | ✔️ | ✔️ | ✔️ | ✔️ | |
從音訊檔案播放音訊 | ✔️ | ✔️ | ✔️ | ✔️ | |
使用文字轉換語音播放音訊 | ✔️ | ✔️ | ✔️ | ✔️ | |
透過 DTMF 辨識使用者輸入 | ✔️ | ✔️ | ✔️ | ✔️ | |
辨識使用者語音輸入 | ✔️ | ✔️ | ✔️ | ✔️ | |
啟動連續 DTMF 辨識 | ✔️ | ✔️ | ✔️ | ✔️ | |
停止連續 DTMF 辨識 | ✔️ | ✔️ | ✔️ | ✔️ | |
傳送 DTMF | ✔️ | ✔️ | ✔️ | ✔️ | |
將參與者靜音 | ✔️ | ✔️ | ✔️ | ✔️ | |
啟動/停止音訊串流 (公開預覽) | ✔️ | ✔️ | ✔️ | ✔️ | |
啟動/停止即時轉譯(公開預覽) | ✔️ | ✔️ | ✔️ | ✔️ | |
從現有的通話移除一或多個端點 | ✔️ | ✔️ | ✔️ | ✔️ | |
將 1 對 1 通話盲目轉接至另一個端點 | ✔️ | ✔️ | ✔️ | ✔️ | |
將參與者從群組通話盲轉至另一個端點 | ✔️ | ✔️ | ✔️ | ✔️ | |
掛斷通話 (移除通話連結) | ✔️ | ✔️ | ✔️ | ✔️ | |
終止通話 (移除所有參與者並結束通話) | ✔️ | ✔️ | ✔️ | ✔️ | |
取消媒體作業 | ✔️ | ✔️ | ✔️ | ✔️ | |
將自訂資訊新增至通話或將通話轉接至端點時,與端點共用自訂資訊 (透過 VOIP 或 SIP 標頭) | ✔️ | ✔️ | ✔️ | ✔️ | |
查詢案例 | 取得通話狀態 | ✔️ | ✔️ | ✔️ | ✔️ |
取得通話中的參與者 | ✔️ | ✔️ | ✔️ | ✔️ | |
列出通話中的所有參與者 | ✔️ | ✔️ | ✔️ | ✔️ | |
通話錄音 | 開始/暫停/繼續/停止錄音 | ✔️ | ✔️ | ✔️ | ✔️ |
* 不支援將 VoIP 通話重新導向至電話號碼。
架構
通話自動化會使用 REST API 介面來接收要求,並提供回應給服務內執行的所有動作。 由於通話的非同步本質,大部分動作都會在動作順利完成或失敗時觸發對應的事件。
Azure 通訊服務會使用事件方格來為所有「回撥」通話中動作傳遞 IncomingCall 事件和 HTTPS Webhook。
通話動作
通話前動作
這些動作會在 IncomingCall
事件通知中列出的目的地端點連線之前執行。 Webhook 回撥事件只會傳達 answer
預先通話動作,而不傳達 reject
或 redirect
動作。
接聽 – 使用事件方格和通話自動化 SDK 中的 IncomingCall 事件,您的應用程式可以接聽通話。 在 IVR 案例中使用此動作,讓您的應用程式以程式設計方式接聽傳入的 PSTN 通話。 其他案例包括代表使用者接聽通話。
拒絕 – 拒絕通話表示您的應用程式可以接收 IncomingCall
事件,並阻止通話連線到目的地端點。
重新導向 – 使用事件方格的事件 IncomingCall
,您可以將呼叫重新導向至另一個端點。 重新導向動作不會接聽通話。 通話被重新導向或轉送到另一個目的地端點以進行接聽。
建立通話 - 使用 [建立通話] 動作來撥打電話給電話號碼和其他通訊使用者。 使用案例包括:應用程式撥打電話來主動通知使用者服務中斷或訂單更新。
線上通話 - 使用 [連線通話 ] 動作連線到進行中的通話,並對其採取通話動作。 您也可以使用此動作以程式設計方式連線及管理會議室通話,例如使用您的服務執行會議室的 PSTN 撥出。
通話中動作
您的應用程式可以對使用通話自動化 SDK 接聽或撥出的通話執行這些動作。 每個通話中動作都有對應的成功或失敗 Webhook 回撥事件。
新增/刪除參與者 – 您可以在單一要求中新增一或多個參與者,每個參與者都是受支援的目的地端點的變體。 Webhook 回撥會針對成功新增至通話的每個參與者傳送。
播放 – 當您的應用程式接聽通話或撥打電話時,您可以為來電者播放音訊提示。 有需要時可循環播放音訊,例如播放等候音樂。 若要深入了解,請參閱在通話中播放音訊和透過播放動作自訂向使用者發出的語音提示。
辨識輸入 – 在您的應用程式播放音訊提示後,您可以要求使用者輸入以驅動應用程式中的商務邏輯和導覽。 若要深入了解,請參閱收集使用者輸入和操作指南透過辨識動作收集使用者輸入。
連續 DTMF 辨識 – 當您的應用程式需要能夠在通話的任何時間點接收 DTMF 音調,而不需要應用程式觸發特定辨識動作。 此功能在代理程式正在通話並需要使用者輸入某種識別碼或追蹤號碼的情況下非常有用。 若要深入了解,請參閱如何控制通話中的媒體動作。
傳送 DTMF – 當您的應用程式需要將 DTMF 音調傳送給外部參與者時。 使用此動作來撥出到外部代理程式並提供分機號碼,或導覽外部 IVR 功能表。
靜音 – 您的應用程式可以根據商務邏輯將特定使用者靜音。 如果使用者想要說話,則必須手動取消靜音。
轉接 – 當您的應用程式接聽通話或對端點撥打電話時,該通話可以轉接至另一個目的地端點。 如果轉接 1:1 通話,應用程式無法使用通話自動化 SDK 來控制通話。
錄音 – 您可以根據應用程式商務邏輯,決定何時開始/暫停/繼續/停止錄音,或者您可以將控制權授與終端使用者以觸發這些動作。 若要深入了解,請檢視我們的概念和快速入門。
掛斷 – 當您的應用程式接聽一對一通話時,掛斷動作會移除通話連結,並終止與另一個端點的通話。 如果通話中有兩個以上的參與者 (群組通話),則執行「掛斷」動作會從群組通話中移除您應用程式的端點。
終止 – 無論您的應用程式是否接聽一對一或群組通話,或撥打電話給一或多個參與者,此動作將會移除所有參與者並結束通話。 透過在「掛斷」通話動作中將 forEveryOne
屬性設為 true
來觸發此作業。
取消媒體作業 - 根據商務邏輯,您的應用程式可能需要取消進行中或已排入佇列的媒體作業。 根據取消的媒體作業和佇列中的媒體作業,您的應用程式可能會收到指示動作已取消的 Webhook 事件。
啟動/停止音訊串流 (公開預覽) - 音訊串流可讓您訂閱進行中通話的即時音訊串流。 如需如何開始使用音訊串流以及如何開始使用音訊串流回呼事件的詳細資訊,請參閱我們的概念和快速入門。
啟動/停止實時轉譯 (公開預覽) - 實時轉譯可讓您存取進行中通話音訊的實時轉譯。 如需如何開始使用即時轉譯和實時轉譯回呼事件的詳細資訊,請參閱我們的概念和快速入門。
查詢案例
列出參與者 – 傳回通話中所有參與者的清單。 錄製和轉譯 Bot 會從這份清單中省略。
事件
下表概述 Azure 通訊服務所發出的目前事件。 下列兩個表格描述事件方格所發出的事件,以及從通話自動化中作為 Webhook 事件發出的事件。
事件方格的事件
事件方格傳送的大部分事件與平台無關。 無論 SDK (通話或通話自動化) 為何,都會傳送它們。 雖然您可以為任何事件建立訂用帳戶,但建議您對想要以程式設計的方式控制通話的所有通話自動化使用案例使用 IncomingCall
事件。 針對報告/遙測用途,請使用其他事件。
事件 | 描述 |
---|---|
IncomingCall |
打電話給通訊使用者或電話號碼的通知。 |
CallStarted |
已建立通話 (傳入或傳出)。 |
CallEnded |
已終止通話並移除所有參與者。 |
ParticipantAdded |
已將參與者新增至通話。 |
ParticipantRemoved |
已從通話中移除參與者。 |
RecordingFileStatusUpdated |
有錄音檔案可用。 |
在 Azure 通訊服務 - 語音和視訊通話事件中詳細了解這些事件和承載結構描述
通話自動化 Webhook 事件
通話自動化事件會在您接聽或撥打新的電話時,傳送至指定的 Webhook 回撥 URI。
事件 | 描述 |
---|---|
CallConnected |
通話已成功啟動 (使用 Answer 或 Create 動作時),或您的應用程式已成功連線到進行中的通話 (使用 Connect 動作時)。 |
CallDisconnected |
您的應用程式已與通話中斷連線。 |
CreateCallFailed |
您的應用程式無法建立呼叫。 |
AnswerFailed |
您的應用程式無法接聽電話。 |
ConnectFailed |
您的應用程式無法連線到通話 (僅適用於 Connect 通話動作)。 |
CallTransferAccepted |
轉接動作已順利完成,且受話者連線到目標參與者。 |
CallTransferFailed |
轉接動作失敗。 |
AddParticipantSucceeded |
您的應用程式已成功將參與者新增至通話。 |
AddParticipantFailed |
您的應用程式無法將參與者新增至通話 (因為發生錯誤或參與者不接受邀請) |
CancelAddParticipantSucceeded |
您的應用程式已成功取消 AddParticipant 要求 (參與者未新增至通話)。 |
CancelAddParticipantFailed |
您的應用程式無法取消 AddParticipant 要求 (這可能是因為已處理要求)。 |
RemoveParticipantSucceeded |
您的應用程式已成功從通話中移除參與者。 |
RemoveParticipantFailed |
您的應用程式無法從通話中移除參與者。 |
ParticipantsUpdated |
在您的應用程式連線到通話時,參與者的狀態已變更。 |
PlayCompleted |
您的應用程式已成功播放提供的音訊檔案。 |
PlayFailed |
您的應用程式無法播放音訊。 |
PlayCanceled |
要求的播放動作已取消。 |
RecognizeCompleted |
使用者輸入的辨識已順利完成。 |
RecognizeCanceled |
要求的 Recognize 動作已取消。 |
RecognizeFailed |
使用者輸入的辨識失敗。 如需辨識動作事件的詳細資訊,請參閱收集使用者輸入的操作指南。 |
RecordingStateChanged |
錄製動作的狀態已從作用中變更為非使用中,反之亦然。 |
ContinuousDtmfRecognitionToneReceived |
StartContinuousDtmfRecognition 已順利完成,且已收到來自參與者的 DTMF 音調。 |
ContinuousDtmfRecognitionToneFailed |
StartContinuousDtmfRecognition 已完成,但處理來自參與者的 DTMF 音調時發生錯誤。 |
ContinuousDtmfRecognitionStopped |
已成功執行 StopContinuousRecognition 。 |
SendDtmfCompleted |
SendDTMF 已順利完成,且已將 DTMF 音調傳送至目標參與者。 |
SendDtmfFailed |
傳送 DTMF 音調時發生錯誤。 |
若要了解針對不同動作發佈哪些事件,請參閱通話控制的動作。 本文提供了各種通話控制流程的程式碼範例和順序圖表。
作為確認回撥事件的最佳做法,請使用標準 HTTP 狀態碼 (如 200 OK) 進行回應。 詳細資訊為非必要,且更適合您的偵錯程序。
若要了解如何保護回撥事件傳遞的安全,請參閱如何保護 Webhook 端點的安全。
作業回撥 URI
作業回撥 URI 是某些使用事件作為其非同步回應的通話中 API 中的選用參數。 根據預設,當使用者建立通話時,所有事件都會傳送到由 CreateCall
/ AnswerCall
API 事件所設定的預設回撥 URI。 使用作業回撥 URI,API 會將此個別 (僅限一次性) 要求的對應事件傳送至新的 URI。
支援 API | 對應的事件 |
---|---|
AddParticipant |
AddParticipantSucceed / AddParticipantFailed |
RemoveParticipant |
RemoveParticipantSucceed / RemoveParticipantFailed |
TransferCall |
CallTransferAccepted / CallTransferFailed |
CancelAddParticipant |
CancelAddParticipantSucceeded / CancelAddParticipantFailed |
Play |
PlayCompleted / PlayFailed / PlayCanceled |
PlayToAll |
PlayCompleted / PlayFailed / PlayCanceled |
Recognize |
RecognizeCompleted / RecognizeFailed / RecognizeCanceled |
StopContinuousDTMFRecognition |
ContinuousDtmfRecognitionStopped |
SendDTMF |
ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed |
Hold |
HoldFailed |
StartMediaStreaming |
MediaStreamingStarted / MediaStreamingFailed |
StopMediaStreaming |
MediaStreamingStopped / MediaStreamingFailed |
StartTranscription |
TranscriptionStarted / TranscriptionFailed |
UpdateTranscription |
TranscriptionUpdated / TranscriptionFailed |
StopTranscription |
TranscriptionStopped / TranscriptionFailed |
下一步
相關文章
- 了解您的資源如何在各種通話使用案例中計費,並提供範例。
- 請參閱快速入門以撥打傳出電話。
- 了解通話自動化發佈的使用量和作業記錄。