通話自動化概觀

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 辨識 ✔️ ✔️ ✔️ ✔️
Send DTMF ✔️ ✔️ ✔️ ✔️
將參與者設為靜音 ✔️ ✔️ ✔️ ✔️
從現有的呼叫中移除一或多個端點 ✔️ ✔️ ✔️ ✔️
盲目傳輸* 另一個端點的 1:1 呼叫 ✔️ ✔️ ✔️ ✔️
盲目轉移* 從群組呼叫到另一個端點的參與者 ✔️ ✔️ ✔️ ✔️
掛斷電話(移除通話腿) ✔️ ✔️ ✔️ ✔️
終止通話(移除所有參與者和結束通話) ✔️ ✔️ ✔️ ✔️
取消媒體作業 ✔️ ✔️ ✔️ ✔️
將自訂資訊新增至通話或將通話轉接至端點時,請與端點共用 自定義資訊 (透過 VOIP 或 SIP 標頭) ✔️ ✔️ ✔️ ✔️
查詢案例 取得呼叫狀態 ✔️ ✔️ ✔️ ✔️
在通話中取得參與者 ✔️ ✔️ ✔️ ✔️
列出通話中的所有參與者 ✔️ ✔️ ✔️ ✔️
通話錄音 開始/暫停/繼續/停止錄製 ✔️ ✔️ ✔️ ✔️

*目前不支援將 VoIP 通話轉移或重新導向至電話號碼。

架構

呼叫自動化會使用 REST API 介面來接收要求,並提供對服務內所執行之所有動作的回應。 由於呼叫的異步本質,大部分動作都有在動作成功完成或失敗時觸發的對應事件。

Azure 通訊服務 使用事件方格來傳遞所有中呼叫動作回呼的 IncomingCall 事件和 HTTPS Webhook。

傳入通話和動作的流程螢幕快照。

呼叫動作

預先呼叫動作

這些動作會在連線 IncomingCall 事件通知中列出的目的地端點之前執行。 Web 攔截回呼事件只會傳達「回應」預先呼叫動作,而不是拒絕或重新導向動作。

回應 使用來自事件方格和呼叫自動化 SDK 的 IncomingCall 事件,您的應用程式可以接聽通話。 此動作允許 IVR 案例,您的應用程式可以透過程式設計方式接聽輸入 PSTN 呼叫。 其他案例包括代表使用者接聽通話。

拒絕 拒絕呼叫表示您的應用程式可以接收 IncomingCall 事件,並防止呼叫連線到目的地端點。

重新 導向 使用事件方格中的 IncomingCall 事件,呼叫可以重新導向至一或多個建立單一或同時響鈴(sim-ring) 案例的端點。 重新導向動作不會接聽通話,只會重新導向或轉送至要接聽的另一個目的地端點。

建立通話 建立通話動作可用來撥打電話給電話號碼和其他通訊使用者。 使用案例包括您的應用程式發出輸出呼叫,以主動通知用戶中斷或通知訂單更新。

通話中動作

這些動作可以在使用通話自動化 SDK 接聽或放置的通話上執行。 每個中呼叫動作都有對應的成功或失敗 Web 攔截回呼事件。

新增/移除參與者 一 或多個參與者可以在單一要求中新增,每個參與者都是支援目的地端點的變化。 Web 攔截回呼會針對成功新增至呼叫的每個參與者傳送。

播放 當您的應用程式接聽通話或撥出通話時,您可以播放來電者的音訊提示。 視需要播放音樂等案例,可以迴圈播放此音訊。 若要深入瞭解,請檢視我們的 概念 和操作指南,以 自定義語音提示給具有播放動作的使用者。

辨識輸入 在應用程式播放音訊提示之後,您可以要求使用者輸入來驅動應用程式的商業規則和流覽。 若要深入瞭解,請檢視收集使用者輸入的概念和操作指南

連續 DTMF 辨識 當您的應用程式必須能夠在呼叫的任何時間點接收 DTMF 音調,而不需要應用程式觸發特定的辨識動作。 這在代理程式正在呼叫且需要使用者以某種標識碼或追蹤號碼輸入的案例中很有用。 若要深入瞭解如何使用此檢視我們的 指南

傳送 DTMF 當您的應用程式需要將 DTMF 音調傳送給外部參與者時,這可能是為了向外部代理程式撥出並提供擴充功能號碼,或像是流覽外部 IVR 功能表之類的用途。

靜音 您的應用程式可以根據商業規則將特定用戶靜音。 然後,如果使用者想要說話,則必須手動取消靜音。

傳輸 當您的應用程式接聽通話或將輸出呼叫放置至端點時,該呼叫可以轉移到另一個目的地端點。 傳輸 1:1 呼叫可移除應用程式使用呼叫自動化 SDK 來控制呼叫的能力。

記錄 您可以根據應用程式商業規則決定何時啟動/暫停/繼續/停止錄製,也可以將控制權授與使用者以觸發這些動作。 若要深入瞭解,請檢視我們的 概念快速入門

停止回應 應用程式接聽一對一通話時,停止響應動作會移除呼叫腿,並終止與其他端點的呼叫。 如果通話中有兩個以上的參與者(群組通話),則執行「掛斷」動作會從群組呼叫中移除應用程式的端點。

終止 您的應用程式是否已接聽一對一或群組通話,或撥打一或多個參與者的輸出通話,此動作會移除所有參與者並結束通話。 在 Hang-Up 呼叫動作中,將屬性設定 forEveryOne 為 true,以觸發此作業。

根據應用程式可能需要取消進行中和佇列媒體作業的商業規則來取消媒體 作業。 視媒體作業取消和佇列中的媒體作業而定,您會收到 Webhook 事件,指出動作已取消。

查詢案例

清單參與者 傳回通話中所有參與者的清單。 錄製和轉譯 Bot 會從這份清單中省略。

事件

下表概述 Azure 通訊服務 發出的目前事件。 下列兩個數據表將事件方格所發出的事件描述為 Webhook 事件,以及從呼叫自動化發出的事件。

事件方格的事件

事件方格傳送的大部分事件都是平台無關的,這表示無論 SDK(通話或通話自動化)為何,都會發出它們。 雖然您可以為任何事件建立訂用帳戶,但建議您針對您想要以程序設計方式控制呼叫的所有通話自動化使用案例使用 IncomingCall 事件。 使用其他事件進行報告/遙測。

活動 描述
IncomingCall 對通訊用戶或電話號碼的通話通知
CallStarted 已建立通話(輸入或輸出)
CallEnded 呼叫已終止,並移除所有參與者
ParticipantAdded 參與者已新增至通話
ParticipantRemoved 已從通話中移除參與者
RecordingFileStatusUpdated 錄製檔案可供使用

在這裡深入了解這些事件和承載架構

呼叫自動化 Webhook 事件

當您接聽或放置新的輸出呼叫時,呼叫自動化事件會傳送至指定的 Web 攔截回呼 URI。

活動 描述
呼叫 連線 您的應用程式呼叫腿已連線 (輸入或輸出)
CallDisconnected 應用程式的呼叫腿已中斷連線
CallTransferAccepted 應用程式的呼叫腿已轉移到另一個端點
CallTransferFailed 應用程式呼叫腿的傳輸失敗
AddParticipantSucceeded 您的應用程式已新增參與者
AddParticipantFailed 您的應用程式無法新增參與者
CancelAddParticipantSucceeded 您的應用程式已取消新增參與者
CancelAddParticipantFailed 您的應用程式無法取消新增參與者
RemoveParticipantSucceeded 您的應用程式已成功從通話中移除參與者。
RemoveParticipantFailed 您的應用程式無法從通話中移除參與者。
ParticipantsUpdated 當應用程式的通話回合連線到通話時,參與者的狀態已變更
PlayCompleted 您的應用程式已成功播放提供的音訊檔案
PlayFailed 您的應用程式無法播放音訊
PlayCanceled 要求的播放動作已取消
RecognizeCompleted 使用者輸入的辨識已順利完成
RecognizeCanceled 要求的辨識動作已取消
RecognizeFailed 使用者輸入的辨識失敗
若要深入了解辨識動作事件,請參閱收集使用者輸入的作法指南
RecordingStateChanged 錄製動作的狀態已從作用中變更為非使用中,反之亦然
ContinuousDtmfRecognitionToneReceived StartContinuousDtmfRecognition 成功完成,且已從參與者收到 DTMF 音調
ContinuousDtmfRecognitionToneFailed StartContinuousDtmfRecognition 已完成,但處理來自參與者的 DTMF 音調時發生錯誤
ContinuousDtmfRecognitionStopped 已成功執行 StopContinuousRecognition
SendDtmfCompleted SendDTMF 成功完成,DTMF 音調已傳送給目標參與者
SendDtmfFailed 傳送 DTMF 音調時發生錯誤

若要瞭解針對不同動作發佈哪些事件,請參閱 本指南 ,提供各種呼叫控制流程的程式代碼範例和順序圖表。

確認回呼事件時,最佳做法是使用標準 HTTP 狀態代碼來回應,例如 200 OK。 詳細資訊是不必要的,更適合您的偵錯程式。

若要瞭解如何保護回呼事件傳遞,請參閱 本指南

作業回呼 URI

這是某些中呼叫 API 中的選擇性參數,會使用事件作為其異步回應。 根據預設,當使用者建立呼叫時,所有事件都會傳送至 CreateCall / AnswerCall API 所設定的預設回呼 URI。 使用作業回呼 URI 時,此個別(僅限一次性)要求的對應事件將會傳送至新的 URI。

支援 API 對應的事件
AddParticipant AddParticipantSucceed / AddParticipantFailed
RemoveParticipant RemoveParticipantSucceed / RemoveParticipantFailed
TransferCall CallTransferAccepted / CallTransferFailed
CancelAddParticipant CancelAddParticipantSucceeded / CancelAddParticipantFailed
Play PlayCompleted / PlayFailed / PlayCanceled
PlayToAll PlayCompleted / PlayFailed / PlayCanceled
辨識 RecognizeCompleted / RecognizeFailed / RecognizeCanceled
StopContinuousDTMFRecognition ContinuousDtmfRecognitionStopped
SendDTMF ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed

下一步

以下是您感興趣的一些文章: