[Amazon Connect] 発信者番号でフローの処理を分岐する

2018.06.06

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を指定しています。

問い合わせ属性を確認するブロックでは、resulttrue かどうかを条件に分岐しています。

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でコンタクトフロー上で設定した値を画面上に表示する方法

Amazon ConnectのCCP(Contact Control Pannel)から発信、転送する方法

Amazon Connectのデータストリーミング機能でコンタクト履歴情報をKinesis Firehose経由でS3に保存する

[Lex] Amazon Connectを使用して Amazon Lex を電話で使用してみる

Amazon ConnectをZendesk Support上で使用してみる

Amazon ConnectのACD機能について

Amazon Connectの通話録音機能について

Amazon Connect Outbound ContactのPreview版を試してみる

Amazon Connect Streamsで各種EventをSubscribeする

Amazon Connect Streamsの初期セットアップ手順

(レポート)BAP202 : Amazon Connectでクラウドベースのコンタクトセンター向けにパーソナライズされた顧客体験を届ける #reinvent

Amazon Connectのユーザー管理機能について

Amazon Connect CTI Adapter for SalesforceでScreen Popupを試してみる

Amazon ConnectをSalesforce Service Cloud上で使用してみる

Amazon Connectを使って電話からEC2を再起動する

コールセンターサービス Amazon Connect で日本語TTSメッセージを再生する

[アップデート] コールセンターサービス Amazon Connect が諸々アップデート

AWSのコールセンターサービス Amazon Connectの試し方