Call Automation の概要

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

Note

Call Automation では現在、ルーム通話はサポートされていません。

一般的なユース ケース

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 通話の転送やリダイレクトは現在サポートされていません。

アーキテクチャ

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

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

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

通話アクション

通話前アクション

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

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

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

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

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

通話中アクション

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

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

再生 アプリケーションで通話に応答するか、発信通話を行ったときに、発信者に対してオーディオ プロンプトを再生できます。 このオーディオは、必要に応じて、保留音の再生などのシナリオでループできます。 詳細については、概念再生アクションを持つユーザーに音声プロンプトをカスタマイズするの攻略ガイドをご覧ください。

入力の認識 アプリケーションでオーディオ プロンプトを再生した後、アプリケーションでビジネス ロジックとナビゲーションを促進するためのユーザーによる入力を要求できます。 詳細については、概念ユーザー入力の収集の攻略ガイドをご覧ください。

継続的 DTMF 認識 通話中の任意の時点で、アプリケーションが特定の認識アクションをトリガーすることなく、DTMF トーンを受信することができる必要がある場合。 これは、エージェントが通話中で、ユーザーが何らかの種類の ID または追跡番号を入力する必要があるシナリオで役立ちます。 この使用方法について詳しくは、ガイドをご覧ください。

DTMF の送信 アプリケーションが DTMF トーンを外部の参加者に送信する必要がある場合、これは外部エージェントにダイヤル アウトして内線番号を提供する、または外部 IVR メニューを操作するなどの目的であることがあります。

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

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

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

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

終了 アプリケーションで一対一またはグループ通話に応答するか、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 レコーディング ファイルを使用可能です

これらのイベントとペイロード スキーマの詳細については、こちらを参照してください

Call Automation の Webhook イベント

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

イベント 説明
CallConnected アプリケーションの通話レッグが接続された (着信または発信)
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 トーンの送信中にエラーが発生しました

さまざまなアクションに対して発行されるイベントを理解するには、コード サンプルと、さまざまな通話制御フローのシーケンス図を含むこちらのガイドを参照してください。

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

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

操作コールバック URI

これは、非同期応答としてイベントを使用する一部の Mid-call API の省略可能なパラメーターです。 既定では、ユーザーが通話を確立すると、すべてのイベントは CreateCall/AnswerCall API によって設定された既定のコールバック URI に送信されます。 操作コールバック URI を使用すると、この個別 (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

次のステップ

興味のある記事を次に示します。