Call Automation の概要

Azure Communication Services の Call Automation を使用すると、開発者は、音声および公衆交換電話網 (PSTN) チャネル用のサーバー ベースのインテリジェントな通話ワークフローおよび通話レコーディングを構築できます。 C#、Java、JavaScript、Python で使用できる SDK は、アクション イベント モデルを使用して、パーソナライズされた顧客との対話の構築を支援します。 コミュニケーション アプリケーションは、リアルタイムの通話イベントをリッスンし、コントロール プレーン アクション (応答、転送、音声再生、録音開始など) を実行して、ビジネス ロジックに基づいて通話を制御できます。

一般的なユース ケース

Call Automation を使用して構築できる一般的なユース ケースには、次のようなものがあります。

  • Click-to-Call や予定の通知などのトランザクション ワークフロー用の VoIP または PSTN の通話をプログラムして、顧客サービスを改善する。
  • 再生 (オーディオ URL、テキスト読み上げ、SSML) および認識 (DTMF、Voice) アクションを使用して、注文の予約や更新などのユース ケースのために、顧客へセルフサービスを提供するインタラクティブな対話ワークフローを構築します。
  • ダイレクト ルーティングを使用して、コミュニケーション アプリケーションをコンタクト センターや非公開テレフォニー ネットワークと統合する。
  • 番号マスク サービスを構築して、プラットフォームで購入者を販売者に、またはユーザーをパートナー ベンダーに接続することで、顧客の ID を保護する。
  • マーケティングと顧客サービスのための自動化された顧客アウトリーチ プログラムを構築することで、エンゲージメントを高める。
  • 通話後に分析すると、品質保証のためにミックスされていないオーディオ録音が処理されます。

アーキテクチャの概要に示すように、Azure Communication Services Call Automation を使用して、顧客サービス シナリオの通話ワークフローを構築できます。 着信通話に応答したり、発信通話を行ったりすることができます。 ウェルカム メッセージを再生したり、Azure Communication Services Calling SDK クライアント アプリ上のライブ エージェントに顧客を接続して着信通話要求に応答したりするといったアクションを実行します。 Azure Communication Services PSTN またはダイレクト ルーティングのサポートにより、このワークフローをコンタクト センターに再び接続できます。

顧客サービス シナリオの通話フローの図。

機能

次の機能は、現在、Azure Communication Services Call Automation SDK で使用できます。

機能領域 機能 .NET Java JavaScript Python
通話前のシナリオ 一対一の通話に応答する ✔️ ✔️ ✔️ ✔️
グループ通話に応答する ✔️ ✔️ ✔️ ✔️
1 つ以上のエンドポイントに新しい発信通話を行う ✔️ ✔️ ✔️ ✔️
1 つ以上のエンドポイントへの通話をリダイレクト* (転送) する ✔️ ✔️ ✔️ ✔️
着信通話を拒否する ✔️ ✔️ ✔️ ✔️
進行中の通話または会議室に接続する (プレビュー中) ✔️ ✔️ ✔️ ✔️
通話中のシナリオ 既存の通話に 1 つ以上のエンドポイントを追加する ✔️ ✔️ ✔️ ✔️
既存の通話へのエンドポイントの追加を取り消す ✔️ ✔️ ✔️ ✔️
オーディオ ファイルのオーディオを再生する ✔️ ✔️ ✔️ ✔️
テキスト読み上げを使用してオーディオを再生する ✔️ ✔️ ✔️ ✔️
DTMF を使用してユーザーによる入力を認識する ✔️ ✔️ ✔️ ✔️
ユーザーの音声入力を認識する ✔️ ✔️ ✔️ ✔️
継続的 DTMF 認識を開始する ✔️ ✔️ ✔️ ✔️
継続的 DTMF 認識を停止する ✔️ ✔️ ✔️ ✔️
DTMF 送信 ✔️ ✔️ ✔️ ✔️
参加者をミュートする ✔️ ✔️ ✔️ ✔️
音声ストリーミングの開始/停止 (パブリック プレビュー) ✔️ ✔️ ✔️ ✔️
リアルタイム文字起こしの開始/停止 (パブリック プレビュー) ✔️ ✔️ ✔️ ✔️
既存の通話から 1 つ以上のエンドポイントを削除する ✔️ ✔️ ✔️ ✔️
別のエンドポイントに一対一の通話をブラインド転送する ✔️ ✔️ ✔️ ✔️
グループ通話から別のエンドポイントに参加者をブラインド転送する ✔️ ✔️ ✔️ ✔️
通話を切断する (通話レッグを削除する) ✔️ ✔️ ✔️ ✔️
通話を終了する (すべての参加者を削除して通話を終了する) ✔️ ✔️ ✔️ ✔️
メディア操作のキャンセル ✔️ ✔️ ✔️ ✔️
エンドポイントを通話に追加する、または通話をエンドポイントに転送する場合に、カスタム情報を (VOIP または SIP ヘッダー経由で) エンドポイントと共有する ✔️ ✔️ ✔️ ✔️
クエリのシナリオ 通話の状態を取得する ✔️ ✔️ ✔️ ✔️
通話の参加者を取得する ✔️ ✔️ ✔️ ✔️
通話のすべての参加者を一覧表示する ✔️ ✔️ ✔️ ✔️
通話レコーディング 記録の開始/一時停止/再開/停止 ✔️ ✔️ ✔️ ✔️

* 電話番号への VoIP 通話の転送やリダイレクトは現在サポートされていません。

Architecture

Call Automation は、REST API インターフェイスを使用して要求を受信し、サービス内で実行されるすべてのアクションに応答を提供します。 通話の非同期性のため、ほとんどのアクションには、アクションが正常に完了または失敗したときにトリガーされる、対応するイベントがあります。

Azure Communication Services は、Event Grid を使用して、すべての通話中のアクション コールバックに対して IncomingCall イベントと HTTPS Webhook を配信します。

着信通話およびアクションのフローのスクリーンショット。

通話アクション

通話前アクション

この種類のアクションは、IncomingCall イベント通知に一覧表示されている宛先エンドポイントが接続される前に実行されます。 Webhook コールバック イベントは、reject または redirect アクションではなく、answer 通話前アクションのみを通信します。

応答 - Event Grid と Call Automation SDK の IncomingCall イベントを使用して、アプリケーションは通話に応答できます。 このアクションは、アプリケーションが着信 PSTN 通話にプログラムで応答できる IVR のシナリオで使用します。 その他のシナリオとしては、ユーザーの代わりに通話に応答することが挙げられます。

拒否 - 通話の拒否とは、アプリケーションで IncomingCall イベントを受信した後に、通話が宛先エンドポイントに接続されないようにすることができることを指します。

リダイレクト - Event Grid の IncomingCall イベントを使用して、単一または同時の通話 (同時通話) のシナリオを作成することで、通話を 1 つ以上のエンドポイントにリダイレクトできます。 リダイレクト アクションが通話に応答しません。 通話は単にリダイレクトされるか、応答する別の宛先エンドポイントに転送されます。

通話の作成 - 通話の作成アクションを使用して、電話番号や他のコミュニケーション ユーザーに通話を発信することができます。 ユース ケースとしては、アプリケーションで発信通話を行って、ユーザーに停止について事前に通知したり、注文の更新について通知したりすることが挙げられます。

通話の接続 (プレビュー中) - 通話の接続アクションを使用して、進行中の通話に接続し、その通話に対してアクションを実行できます。 このアクションは、独自のサービスを使用して会議室の PSTN ダイヤル アウトを実行するなど、プログラムによって Rooms 通話を管理および接続するためにも使用できます。

通話中アクション

アプリケーションは、Call Automation SDK を使用して応答または発信された通話に対して、これらのアクションを実行できます。 各通話中アクションには、対応する成功または失敗の Webhook コールバック イベントがあります。

参加者の追加/削除 - 1 つの要求に 1 人以上の参加者を追加できます。各参加者は、サポートされている宛先エンドポイントのバリエーションです。 Webhook コールバックは、通話に正常に追加されたすべての参加者に対して送信されます。

再生 - アプリケーションで通話に応答するか、発信通話を行ったときに、発信者に対してオーディオ プロンプトを再生できます。 このオーディオは、必要に応じて、保留音の再生などのシナリオでループできます。 詳細については、「通話で音声を再生する」および再生アクションを使用したユーザーへの音声プロンプトのカスタマイズに関する記事を参照してください。

入力の認識 - アプリケーションでオーディオ プロンプトを再生した後、アプリケーションでビジネス ロジックとナビゲーションを促進するためのユーザーによる入力を要求できます。 詳細については、「ユーザーによる入力の収集」と、「認識アクションを使用してユーザーによる入力を収集する」ハウツー ガイドを参照してください。

継続的 DTMF 認識 - 通話中の任意の時点で、アプリケーションが特定の認識アクションをトリガーすることなく、DTMF トーンを受信することができる必要がある場合。 この機能は、エージェントが通話中で、ユーザーが何らかの種類の ID または追跡番号を入力する必要があるシナリオで役立ちます。 詳細については、通話中のメディア アクションのコントロール方法に関する記事を参照してください。

DTMF の送信 – アプリケーションが外部参加者に DTMF トーンを送信する必要がある場合。 このアクションは、外部エージェントにダイヤルアウトし、内線番号を指定したり、外部 IVR メニューに移動したりするために使用します。

ミュート - アプリケーションは、ビジネス ロジックに基づいて特定のユーザーをミュートすることができます。 そのユーザーが話す場合は、自ら手動でミュートを解除する必要があります。

転送 – アプリケーションで通話に応答するか、エンドポイントに発信通話を行った場合、その通話を別の宛先エンドポイントに転送できます。 一対一の通話を転送すると、アプリケーションでは Call Automation SDK を使用して通話を制御できなくなります。

レコード - アプリケーションのビジネス ロジックに基づいて記録を開始/一時停止/再開/停止するタイミングを決定するか、エンド ユーザーに制御を許可してこれらのアクションをトリガーすることができます。 詳細については、概念クイック スタートを参照してください。

切断 - アプリケーションで一対一の通話に応答した場合、切断アクションを実行すると、通話レッグが削除され、もう一方のエンドポイントとの通話が終了します。 通話に 3 人以上の参加者が存在する場合 (グループ通話)、"切断" アクションを実行すると、グループ通話から自分のアプリケーションのエンドポイントが削除されます。

終了 - アプリケーションで 1 対 1 またはグループ通話に応答するか、1 人以上の参加者への発信通話を行った場合、このアクションを実行すると、すべての参加者が削除され、通話が終了します。 この操作は、切断通話アクションで forEveryOne プロパティを true に設定することでトリガーされます。

メディア操作のキャンセル - ビジネス ロジックに基づいて、進行中またはキューにあるメディア操作をアプリケーション側でキャンセルする必要がある場合があります。 キャンセルされたメディア操作とキュー内の操作に応じて、アプリケーションは、アクションがキャンセルされたことを示す Webhook イベントを受け取ります。

音声ストリーミングの開始/停止 (パブリック プレビュー) - 音声ストリーミングを使用すると、進行中の通話からリアルタイムの音声ストリーミングをサブスクライブできます。 音声ストリーミングの使用を開始する方法の詳細なガイダンスと、音声ストリーミング コールバック イベントに関する情報については、概念クイックスタートを参照してください。

リアルタイム文字起こしの開始/停止 (パブリック プレビュー) - リアルタイム文字起こしを使用すると、進行中の通話の音声のライブ文字起こしにアクセスできます。 リアルタイム文字起こしの使用を開始する方法の詳細なガイダンスと、リアルタイム文字起こしコールバック イベントに関する情報については、概念クイックスタートを参照してください。

クエリのシナリオ

参加者の一覧 - 通話の参加者すべてを含む一覧を返します。 この一覧では、レコーディングと文字起こしのボットは省略されます。

イベント

次の表は、Azure Communication Services によって生成される現在のイベントの概要を示しています。 次の 2 つの表は、Event Grid によって生成されるイベントと、Webhook イベントとして Call Automation から生成されるものを示しています。

Event Grid のイベント

Event Grid によって送信されるイベントのほとんどは、プラットフォームに依存しません。 SDK (Calling または Call Automation) に関係なく送信されます。 任意のイベントのサブスクリプションを作成できますが、プログラムで通話を制御するすべての Call Automation ユース ケースで IncomingCall イベントを使用することをお勧めします。 レポート/テレメトリの目的では他のイベントを使用します。

イベント 説明
IncomingCall コミュニケーション ユーザーまたは電話番号への通話の通知。
CallStarted 通話が確立されました (着信または発信)。
CallEnded 通話が終了し、すべての参加者が退出されました。
ParticipantAdded 通話に参加者が追加されました。
ParticipantRemoved 通話から参加者が退出されました。
RecordingFileStatusUpdated レコーディング ファイルが使用可能になりました。

これらのイベントとペイロード スキーマの詳細については、「Azure Communication Services - 音声およびビデオ通話イベント」を参照してください。

Call Automation の Webhook イベント

Call Automation イベントは、着信に応答するか、新しい発信通話を行ったときに指定された Webhook コールバック URI に送信されます。

イベント 説明
CallConnected 通話が正常に開始された (Answer アクションまたは Create アクションを使用している場合) か、アプリケーションが進行中の通話に正常に接続されました (Connect アクションを使用している場合)。
CallDisconnected アプリケーションが通話から切断されました。
CreateCallFailed アプリケーションが呼び出しの作成に失敗しました。
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 トーンの送信中にエラーが発生しました。

さまざまなアクションに対して発行されるイベントについては、通話制御のためのアクションに関する記事を参照してください。 この記事では、さまざまな通話制御フローのコード サンプルとシーケンス図を提供しています。

コールバック イベントを受け取る場合は、200 OK などの標準の HTTP 状態コードで応答することをお勧めします。 詳細情報は不要であり、よりデバッグ プロセスに適しています。

コールバック イベント配信をセキュリティで保護する方法については、「Webhook エンドポイントをセキュリティで保護する方法」を参照してください。

操作コールバック URI

操作コールバック URI は、非同期応答としてイベントを使用する一部の Mid-call API のオプション パラメーターです。 既定では、ユーザーが通話を確立すると、すべてのイベントは CreateCall / AnswerCall API によって設定された既定のコールバック URI に送信されます。 操作コールバック URI を使用して、API によってこの個別 (1 回限り) の要求に対応するイベントが、その新しい 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

次のステップ