2-2.アウトバウンドコールの自動化

Amazon Connect の startOutboundVoiceContact API を利用することにより、複数の顧客へ自動的に連絡するアウトバウンドコールをプログラムできます。この仕組みを活用することで、アンケート、緊急連絡、リマインダー、プロモーションなどのユースケースに活用できます。
startoutboundVoiceContact は、プログラムによって指定された顧客の電話番号に発信を行います。顧客はコンタクトフローに従ってプロンプトを聞いたり、IVR で選択を行ったり、エージェントと会話をすることができます。また、ワンタイムパスワードによる二要素認証メカニズムを組み込むためにも使用できます。
このラボでは、 startOutboundVoiceContact でアウトバウンドコールを開始するプロセスを説明します。次に API が活用できるユースケースについて説明し、パラメータ値の組み合わせサンプルを提示します。


概要

StartOutboundContact API のパラメータのサンプルは、次のコードのようになります。

var params = { 
	ContactFlowId: "e58f792f-c5e6-41b0-a4e2-SAMPLECONTACT", 
	DestinationPhoneNumber: "+12535550100", 
	InstanceId: "30152f88-0694-4f38-9621-SAMPLEINSTANCE", 
	QueueId: "0d922703-0038-46a5-9cf7-SAMPLEQUEUE", 
	Attributes: {"Name": "MyAttribute"}, 
	SourcePhoneNumber: "+12535550199" 
};

重要な点は以下の通りです。
1. パラメータ ContactFlowIdDestinationPhoneNumberInstanceId は必須です。これらのパラメータは、顧客が電話を取った際に使用するコンタクトフロー、Amazon Connect からダイアルする顧客の電話番号、および Amazon Connect のインスタンスとして使用されます。
2. パラメータ Attributes を指定する際は、キーと値のペアで指定します。これにより、コンタクトフローに任意の属性値、例えば顧客情報(名前、電子メール、ID など)を渡すことができます。
3. パラメータ SourcePhoneNumber は、Amazon Connect の管理画面(または AWS サポートへのリクエスト)で取得した電話番号を指定する必要があります。任意の電話番号を指定することはできません。


ウォークスルー

Amazon Connect API を設定して、アウトバウンドコールを開始するには、次の手順に従います。
1. Amazon Connect インスタンスを設定します。
1. AWS Lambda コードを設定します。
1. フローをテストします。

前提条件

以降の手順は Amazon Connect の基本的な設定と、コンタクトフロー、ルーティングプロファイル、キュー、およびユーザーを作成する手順を理解していることを前提としています。API コールを行うため、AWS Lambda 関数の設定知識も必要です。

Amazon Connect を設定する

次のブロックを使用して、シンプルなインバウンドコンタクトフローを作成します。必要に応じてこちらのファイルをフローにインポートすることで、作業時間を省略できます。   - プロンプトを再生する   - 作業キューの転送をキューに設定する
必要に応じて、このフロー内にブロックを追加します。フローの例は、次の図のようになります。
call コンタクトフローの左上の名前の下にある追加のフロー情報の表示セクションを参照してください。ARN の contact-flow/ の後の文字列が ContactflowID ですので、これを書き留めておいてください。 call ルーティング - キューから、コンタクトフローの 作業キューの設定 ブロックで作成したキューを開きます。
- キューに発信者 ID 番号が割り当てられていることを確認します。
- キューの詳細 ページで 追加のキュー情報を表示 を選択して、Amazon Connect の Instance ID と、QueueID の値を収集します。
Instance ID は /instance//queue/ の間にある一意の ID です。
QueueID 値は、/queue/ の後の一意の ID です。
call

Lambda 関数を設定する

AWSConnectGrantOutboundPermission という名前で、Amazon Connect がアウトバウンドコールするため以下の IAM ポリシーを作成します。

{ 
	"Version": "2012-10-17", 
	"Statement": [
		{
			"Sid": "VisualEditor0", 
			"Effect": "Allow", 
			"Action": "connect:StartOutboundVoiceContact", 
			"Resource": "*"
		}
	]
}

次の Node.js サンプルコードを使用して connectOutboundVoiceContact という名前の Lambda 関数を作成します。ContactFlowIdInstanceIdQueueId を上の手順でメモした値に置き換えます。
DestinationPhoneNumber には Amazon Connect インスタンスからコール可能な電話番号を E.164 形式で設定し、SourcePhoneNumber は Amazon Connect インスタンスで取得した電話番号を E.164 形式で設定します。 これらの値は Lambda 内の環境変数オプションを使用して宣言することもできます。
この Lambda 関数の IAM ポリシーには、AWSLambdaBasicExecutionRole-xxx に加えて AWSConnectGrantOutboundPermission を追加してください。

const AWS = require('aws-sdk'); 
var connect = new AWS.Connect(); 
// main entry to the flow 
 
exports.handler = (event, context, callback) => { 
	//define parameter values to use in initiating the outbound call  
	var params = { 
		ContactFlowId: " e58f792f-c5e6-41b0-a4e2-SAMPLECONTACT", 
		DestinationPhoneNumber: "+12535550100", 
		InstanceId: "30152f88-0694-4f38-9621-SAMPLEINSTANCE", 
		QueueId: "0d922703-0038-46a5-9cf7-SAMPLEQUEUE", 
		Attributes: {"Name": "MyAttribute"}, 
		SourcePhoneNumber: "+12535550199" 
	}; 
 
	// method used to initiate the outbound call from Amazon Connect 
	connect.startOutboundVoiceContact(params, function(err, data) { 
		if (err) console.log(err, err.stack) ; 
		else console.log(data); 
	});  
	callback(null, event); 
 
};

フローのテスト

Lambda 関数をデプロイしたらテストを実行します。テスト用のパラメータは不要ですので、hello-world 等のテンプレートを使用してテストを実行します。
関数内で指定した DestinationPhoneNumber に向けて、Amazon Connect からアウトバウンドコールが開始されます。プロンプトが再生後、指定したキューに格納されますので、必要に応じてエージェントと通話を行います。

シナリオとユースケース

コンタクトセンターのさまざまなユースケースとして、複数のシナリオを紹介します。
最適な手順は、QueueID パラメータ、作業キューの設定、およびキューブロックへの転送の使用方法によって異なります。これらのシナリオとユースケースを、以降のセクションで詳しく説明します。

シナリオ 1

このシナリオでは、QueueID の値を、Lambda 内の startOutboundVoiceContact で設定しています。コンタクトフローでは、キューへ転送ブロックが定義されていますが作業キューの設定ブロックにより転送先のキューを定義していません。  

  • 結果
    このシナリオでは、発信は API リクエストの QueueID パラメータによって定義されたキューに送られます。指定された QueueID 値は、キューへ転送ブロックがコンタクトフローを通じて発信者をルーティングするときに使用するキュー(および暗黙的に発信者 ID 番号)を定義します。  

  • ユースケース
    このメソッドを使用して、発信元に応じて、発信者を特定のキューに動的に追加できます。たとえば、発信者がアウトバウンドコールをリクエストした場合、問い合わせの種類(新規申し込み、予約変更など)に基づいて発信後に顧客が接続するキューを再割り当てできます。この再割り当てにより、ターゲットフローでキューを指定する必要がなくなります。QueueID パラメータでは、発信者が電話機に表示される番号も定義することになります。

このシナリオの設定は、上記で作成した Lambda 関数を次のように修正します。

ContactFlowId: "e58f792f-c5e6-41b0-a4e2-SAMPLECONTACT", 
DestinationPhoneNumber: "+12535550100", 
InstanceId: "30152f88-0694-4f38-9621-SAMPLEINSTANCE", 
QueueId: "0d922703-0038-46a5-9cf7-SAMPLEQUEUE", 
//Attributes: { "Name": "MyAttribute"}, 
//SourcePhoneNumber: "+12535550199"

このシナリオのコンタクトフローを以下に示します。 call

シナリオ 2

このシナリオでは、startOutboundVoiceContact のパラメーターには QueueID 値が定義されており、ターゲットコンタクトフローではキューへ転送作業キューの設定を定義しています。  

  • 結果
    発信した通話は作業キューの設定ブロックで指定されたキューに送られます。API から渡される QueueID 値は、呼び出し元に提示される発信者 ID 番号のみを定義します。発信者がキューに入る場合、コンタクトフローの作業キューの設定ブロックによりキューを定義します。  

  • ユースケース
    この手順は Amazon Connect がコールした後に、発信者をエージェントのキューに入れるために使用されます。キューは、コンタクトフローで具体的に定義されます。この場合、API の QueueID パラメータは発信者 ID 番号にのみ使用され、発信者に異なる電話番号を動的に表示することができます。 例えば顧客への発信時、顧客の国の電話番号が表示されるようにすることができます。

このシナリオの設定は、シナリオ1と同じ Lambda 関数のパラメータを使用します。違いはコンタクトフローのみです。

ContactFlowId: "e58f792f-c5e6-41b0-a4e2-SAMPLECONTACT", 
DestinationPhoneNumber: "+12535550100", 
InstanceId: "30152f88-0694-4f38-9621-SAMPLEINSTANCE", 
QueueId: "0d922703-0038-46a5-9cf7-SAMPLEQUEUE", 
//Attributes: {"Name": "MyAttribute"}, 
//SourcePhoneNumber: "+12535550199"

call

シナリオ 3

このシナリオでは、QueueID は startOutboundVoiceContact のパラメータで設定せず、コンタクトフローにキューへ転送および作業キューの設定ブロックを定義していません。  

  • 結果
    この Lambda の実行時は、sourcePhoneNumber 値を指定する必要があります。指定しない場合、API 実行が失敗します。これはシナリオ1および2で説明したように、Amazon Connect がキューを使用して発信者 ID 番号を定義するためです。
    Lambda 関数でsourcePhoneNumber が定義されていない場合は、発信者 ID 番号を定義するために実行パラメータとして sourcePhoneNumber を定義する必要があります。この方法では、コールは着信キューにキューイングされません。発信者をキューに入れずに、Amazon Connect は顧客に発信し、特定のコンタクトフローを介して定義されているアクションを実行した後、通話を切断します。  

  • ユースケース
    このユースケースは、自動リマインダーや通知など、ユーザーがエージェントと話す必要がない通話に適しています。
    コンタクトフローを使用し、sourcePhoneNumber パラメータに基づいて、発信者 ID 番号を動的に設定するだけです。たとえば、ローカルな電話番号を使用して、予約に関する情報を通知するため顧客に電話する場合に使用します。別の発信者 ID 番号を表示させるために、キューの設定を変更する必要はありません。

このシナリオの設定は、以下の Lambda 関数のパラメータを使用します。
シナリオ1・2との違いは、QueueId を指定せず、SourcePhoneNumber を指定している点です。

ContactFlowId: "e58f792f-c5e6-41b0-a4e2-SAMPLECONTACT", 
DestinationPhoneNumber: "+12535550100", 
InstanceId: "30152f88-0694-4f38-9621-SAMPLEINSTANCE", 
//Attributes: {"Name": "MyAttribute"}, 
SourcePhoneNumber: "+12535550199"

次の図は、このシナリオのコンタクトフローを示しています。 call

シナリオ 4

このシナリオでは、QueueID の値は startOutboundVoiceContact のパラメータで設定され、ターゲットコンタクトフローにはキューへ転送ブロックと作業キューの設定ブロックを 定義していません。  

  • 結果
    Amazon Connect は、シナリオ1および2のように、キューを使用して発信者 ID を定義します。ただしこの方法では、キューへ転送ブロックと作業キューの設定ブロックがフローで定義されていないため、コールは着信キューにキューイングされません。発信者をキューに入れずに、Amazon Connect は顧客に発信し、特定のコンタクトフローを介して定義されているアクションを実行した後、通話を切断します。  

  • ユースケース
    このユースケースは、自動リマインダーや通知など、ユーザーがエージェントと話す必要がない通話に適しています。
    コンタクトフロー内で設定された内容を経験させ、QueueID パラメータに基づいて、発信者 ID 番号を表示します。
    たとえば、予約に関する情報を顧客に電話で通知する場合、QueueId パラメータを使用して、顧客に対してキューに設定した発信者番号を表示させることができます。コンソール上で電話番号をいくつか取得し、キューに設定しておくことで、ユーザが電話を取りやすくなる番号を表示することができます。

例については、次のコードを参照してください。
シナリオ3との違いは、QueueId を指定し、SourcePhoneNumber を指定していない点です。

ContactFlowId: "e58f792f-c5e6-41b0-a4e2-SAMPLECONTACT", 
DestinationPhoneNumber: "+12535550100", 
InstanceId: "30152f88-0694-4f38-9621-SAMPLEINSTANCE", 
QueueId: "0d922703-0038-46a5-9cf7-SAMPLEQUEUE", 
//Attributes: {"Name": "MyAttribute"}, 
//SourcePhoneNumber: "+12535550199"

次の図は、このシナリオのコンタクトフローを示しています。シナリオ3と同じコンタクトフローを使用しています。 call

まとめ

このラボでは、強力な Amazon Connect API を使用して、顧客へのアウトバウンドコールを自動化できる様々な方法について紹介しました。Amazon Connect のコンタクトフローを使用すると、ビジネスコンタクトセンターは、さまざまなユースケースで顧客に対して動的にパーソナライズされた電話をかけることができます。
このシステムにより、通話の自動化から重要な情報に関する顧客への通知まで、あらゆるビジネスニーズと顧客のニーズを満たすことができます。IVR またはエージェントで接続したり、セキュリティ用途でワンタイムパスワードを提供したりすることができます。Amazon Connect API を使用すると、クラウドベースのコンタクトセンターの機能を最大限に活用できます。