この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
1 はじめに
Amazon Connectでは、発信者の電話番号が取得できるので、それを基づいた処理の分岐が可能です。今回は、発信者の電話番号でメッセージを変えるフローを作成してみました。
2 問い合わせ属性で判定する
発信者番号で処理を分岐するには、問い合わせ属性を確認するブロックを配置して、$System.Customer Numberを確認するのが、最も簡単です。
確認する属性で System を選択すると、Customer Numberも選択リストに現れます。 なお、電話番号は、E.164形式(日本の場合、+81で始まるやつ)で指定することに注意が必要です。
そして、分岐した後のプロンプトは、以下の2つを用意しました。
3 電話番号をDBで管理する
先の方法では、対象の電話番号を問い合わせフローに べた書き となってしまっていますが、これをDBで管理するようにしてみます。
とりあえず雑にDynamoDBに、電話番号のリストを作ってみました。
Amazon ConnectからLambdaに送られるJSONは、以下のようになっており、発信者番号が入っています。
{
"Details": {
"ContactData": {
"Attributes": {},
"Channel": "VOICE",
"ContactId": "305661db-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"CustomerEndpoint": {
"Address": "+819012345678",
"Type": "TELEPHONE_NUMBER"
},
"InitialContactId": "305661db-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"InitiationMethod": "INBOUND",
"InstanceARN": "arn:aws:connect:ap-southeast-2:xxxxxxxxxxxx:instance/8db137d2-cacd-xxxx-xxxx-xxxxxxxxxxxx",
"PreviousContactId": "305661db-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Queue": null,
"SystemEndpoint": {
"Address": "+819012345678",
"Type": "TELEPHONE_NUMBER"
}
},
"Parameters": {}
},
"Name": "ContactFlowEvent"
}
JSONから発信者番号を抽出し、DynamoDBの電話番号一覧と比較して、リストにヒットすれば、{"result" : "true"} 、無ければ、{"result" : "false"} を返すコードが、以下のとおりです。
const AWS = require("aws-sdk");
const DynamoDB = new AWS.DynamoDB.DocumentClient({ region: "ap-southeast-2" });
const tableName = 'PhoneNumberTable';
exports.handler = async (event) => {
// 発信者番号
const phone = event.Details.ContactData.CustomerEndpoint.Address;
// DynamoDBの一覧取得
const db = await DynamoDB.scan({TableName: tableName}).promise();
// 発信者番号が一覧に存在するかどうかの確認
const result = db.Items.some( item => {
return (item.PhoneNumber == phone);
});
return { result : result };
};
問い合わせフローの方は、こんな感じになりました。着信を受けたらまずLambdaに制御を移し、戻り値でレスポンスを変えています。
AWS Lambda関数を呼び出すブロックでは、Lambdaのarnを指定しています。
問い合わせ属性を確認するブロックでは、result が true かどうかを条件に分岐しています。
Lambdaのコードでは、true(Boolean) で返していますが、問い合わせフローに戻った時点ではstringとして処理されています。
4 最後に
今回は、発信者番号に基づいて制御を変更する 問い合わせフロー を作成してみました。このような処理もLambdaを挟むことで、自由に応用が広がりそうです。
5 参考リンク
Amazon Connect 簡単に使えるクラウド型コンタクトセンター
Amazon Connect Administrator Guide
[Amazon Connect] 最初のプロンプトで再生するメッセージをLambda関数で生成してみる
[Amazon Connect] 問い合わせフローの中でLambda関数を実行する
Amazon Connectのデータストリーミング機能でAgent Event StreamsをKinesis Streamに送る
[Amazon Connect] プロンプトのテキスト読み上げにSSMLが使用可能です
[Amazon Connect] 問い合せフローのログを保存する
[Amazon Connect] キューに入った時のメッセージや保留音を変更する
Amazon Connectでコンタクトフロー上で設定した値を画面上に表示する方法
Amazon ConnectのCCP(Contact Control Pannel)から発信、転送する方法
Amazon Connectのデータストリーミング機能でコンタクト履歴情報をKinesis Firehose経由でS3に保存する
[Lex] Amazon Connectを使用して Amazon Lex を電話で使用してみる
Amazon ConnectをZendesk Support上で使用してみる
Amazon Connect Outbound ContactのPreview版を試してみる
Amazon Connect Streamsで各種EventをSubscribeする
Amazon Connect Streamsの初期セットアップ手順
(レポート)BAP202 : Amazon Connectでクラウドベースのコンタクトセンター向けにパーソナライズされた顧客体験を届ける #reinvent
Amazon Connect CTI Adapter for SalesforceでScreen Popupを試してみる
Amazon ConnectをSalesforce Service Cloud上で使用してみる
Amazon Connectを使って電話からEC2を再起動する
コールセンターサービス Amazon Connect で日本語TTSメッセージを再生する