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

この記事は公開されてから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を指定しています。

問い合わせ属性を確認するブロックでは、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の試し方