本機能はβ版となります。今後、仕様変更が発生する場合がありますので、ご了承ください。
本連携はAmazon Connectを利用していることが前提となります。ご了承ください。

Amazon EventBridge連携プラグインを活用して、Amazon Connectとの連携をするための手順を説明します。

Amazon Connect連携とは

アマゾン ウェブサービス ジャパン株式会社が提供するクラウド型のコンタクトセンター向けサービス「Amazon Connect」との連携が可能となります。本連携をコンタクトセンターに導入した企業は、ウェブサイトやモバイルアプリの利用に困っている顧客の状況をリアルタイムに把握しながら、プロアクティブに電話やチャット等のサポートを実施することができるようになります。

  • ポイント
    • Amazon Connect連携用の接客サービスが配信可能に(インバウンドcall)
    • KARTEの管理画面にWebベースのソフトフォンを埋め込む(アウトバウンドcall)

ここでは、Amazon Connect連携の手順を説明します。

事前準備

[KARTE側]プラグインのインストール

下記のプラグインを、対象のKARTEプロジェクトにインストールする必要があります。

  • 「Amazon EventBridge」プラグイン
  • 「Amazon Connect(β版)」プラグイン

インストールされていない場合は、サポートにお問い合わせください。

インバウンドcall

ここでは、想定シナリオに合わせたKARTEとAWSの設定サンプルをご紹介します。

null

想定シナリオ

※こちらのシナリオは、接客サービステンプレートとしてご利用いただけます。
※表示形式やヒアリング事項は、KARTE上で自由にカスタマイズ可能です。

ユーザー側

  • Webサイト上にアイコンが表示される
ivr_1
  • 「ユーザー種別(user_type)」を選択
ivr_2
  • 「問い合わせ内容(inquiry_type)」を選択
ivr_3
  • 「問い合わせ方法」を選択
    • ここでは、「電話で問い合わせる」を選択
ivr_4
  • 「電話番号(phone_e164)」を選択
ivr_5
  • 入力した電話番号に対して、Amazon Connect経由で電話がかかってくる
    • 同時に問い合わせ番号が表示される
ivr_6
  • 自動音声の後、オペレーターにつながる
  • オペレーターに対して、「問い合わせ番号」を口頭で伝える

オペレーター側

  • Amazon Connectのソフトフォンで電話を受ける

null

  • ユーザーから「問い合わせ番号」をヒアリングし、KARTEのユーザーリスト画面からユーザーを検索する
    • イベント名: call_tracking
    • フィールド名: track_id

null

  • ユーザー情報や行動履歴を見ながら、電話対応を実施

null

構成図

ここで使用するAWSの各種サービスと連携構成図は下記です。

null

KARTE側の設定

[KARTE側]プラグイン設定

プラグイン設定画面から、「Amazon EventBridge(β版)」プラグインの設定をします

  • AmazonEventBridgeとの連携を有効化します
  • AWS accountID
    • 連携先AWSアカウントのアカウントIDを入力します
  • Region
    • 連携先のregionを選択します
    • 2020年2月現在、ap-northeast-1のみ対応しています

[KARTE側]ビジュアルIVR用ポップアップの配信

「Amazon Connect(β版)」プラグインがインストールされたKARTEプロジェクトでは、接客テンプレートから下記の名称のテンプレートが使えます。

  • 「Visual IVRサンプル」

このテンプレートを元に接客サービスの配信を実施してください。

テンプレート内では、下記のような記述でイベント発生を行っています。(実際には、値は動的に変わります)

// KARTEへのイベント送信例
krt('send', 'call_request', {
    phone_e164: '+819012345678'),
    user_type: 'visitor',
    inquiry_type: 'KARTE Datahubについて'
});
// ユーザー情報として電話番号を取得し、アウトバウンドコールできるようにする
krt('send', 'identify', {
    phone: '09012345678',
    phone_e164: '+819012345678')
});
  • call_requestイベント内の各フィールド値をAmazon Connectに連携させることで、問い合わせ内容を元にしたContact Flow内での分岐や、インバウンドcallを実現します
    • イベント名を変更する場合は、後述するAmazon EventBridge連携アクション内で指定する配信トリガーやユーザー情報変数も同様に変更してください
  • identifyイベントは、後述するアウトバウンドcallで利用します

[KARTE側]Amazon EventBridge連携アクションの配信

上記ビジュアルIVR接客でKARTEに発生したcall_requestイベントを、Amazon EventBridgeに連携するための接客サービスを作成します。

アクション

  • [他サービスにデータを連携する > Amazon EventBridgeテンプレート]

  • 以下のようなユーザー情報変数を作成

    • phone_e164
      • すべての期間 > call_request > phone_e164 > 最新の値
    • user_type
      • すべての期間 > call_request > user_type > 最新の値
    • inquiry_type
      • すべての期間 > call_request > inquiry_type > 最新の値
  • name変数を設定

    • Amazon EventBridgeのイベントパターンでマッチさせるための識別子を入力
    • この例では、karte_ivr_call_requestとします
    • この値は、[Amazon EventBridge > ルール > イベントパターン > detail.name]で指定します
  • content変数を設定

    • Amazon Connectで利用するAttributesを、下記のようにJSON形式で入力します
    • ここでは、上記で作成した各ユーザー情報変数を値に設定しています
{
  "phone_e164":"#{phone_e164}",
  "user_type": "#{user_type}",
  "inquiry_type": "#{inquiry_type}"
}

対象ユーザー

  • 条件
    • 全員

対象イベント

  • 配信トリガー(例)
    • [call_request phone_e164 が 存在する]
  • 配信頻度
    • アクセス毎

オプション

  • 同時配信
    • OK

[KARTE側]テスト配信

  • 実際に「ビジュアルIVR用ポップアップ」と「Amazon EventBridgeアクション」をテスト配信します
  • 下記を確認します

AWS側の設定

この記事で紹介するAWS側の設定はサンプルの設定になります。各種設定の詳細については、AWS側のドキュメントをご覧ください。

[AWS側]Amazon Connectの設定

ここでは、KARTEとの連携用に新規にAmazon Connect環境を作成する想定でご説明します。既存の環境を使う場合は、適宜読み飛ばしてください。

インスタンスの作成

  • [インスタンスを追加する]をクリックします

null

  • [Amazon Connect内にユーザーを保存]を選択し、適切なドメインを入力します

null

  • 管理者を作成します

null

  • その他、デフォルト設定で次へ進み、インスタンスを作成します
  • 作成したインスタンスに、先ほど作成した管理者アカウントでログインします

Queueの作成

null

  • Queueを新規作成します
    • インバウンドの問い合わせはQueueに振り分けられ、どのオペレーターが担当するのかをQueue毎に管理できます

Routing profilesの作成

null

  • Routing profilesを新規作成します
    • Routing profilesは、担当のQueueを1つまたは複数持つことができます
    • 各オペレーター(User)は、Routing profilesに所属することができます

Userの設定

null

  • [User management]画面から、管理者ユーザーをEditします
  • [Routing Profile]の項目で、先ほど作成したRouting Profileを選択し保存します

実際には、オペレーター毎にUserを作成し、分岐の数だけQueueやRouting Profileをそれぞれ用意してください。

Contact Flowの作成

null

  • ここでは、下記のサンプルFlowを設定します

null

  • [Set Voice]で日本語の自動音声を設定します
  • [Check contact attributes]で、ビジュアルIVRで取得したuser_typeの値に応じてフローを分岐させます
    null
  • [Play Prompt]で、各分岐先で読み上げるテキストを設定します
    • [Text-to-speech or chat text]を選択
    • [Enter text]を選択
    • memberの場合
      • いつもKARTEをご利用いただきありがとうございます。
    • visitorの場合
      • KARTEの利用をご検討いただきありがとうございます。
  • [Play Prompt]で、ビジュアルIVRで取得したinquiry_typeを読み上げさせます
    null
  • [Play Prompt]で、先ほどと同様に固定のテキストを読み上げさせます
    • のお問い合わせですね。オペレーターにおつなぎします。
  • [Set working queue]で、先ほど作成したQueueを選択します
  • [Transfer to queue]で、Queueに追加します
  • Errorの場合は、[Disconnect / hang up]で電話を切ります
    • 本来は、適切な自動音声を実行した後に切ってください
  • 編集した後は、「Save」と「Publish」をすることで、修正が反映されます
    • 編集する度に、毎回実施してください

保留用のContact Flowの修正

  • Contact Flowの一覧から、[Default customer queue]というflowを開きます

    • これは、Queueに追加されたユーザーがオペレーターを待つまでのContact Flowになります
  • [Loop prompts]を開き、テキスト読み上げ部分を削除します

    • ここを削除しないと、英語でのテキスト読み上げが入ってしまいます
      null
  • 編集した後は、「Save」と「Publish」をすることで、修正が反映されます

電話番号の取得

null

  • [Phone Numbers]から、適当な電話番号を取得します
    • Contact flowには、先ほど新規作成したflowを選択します

ARNの確認

  • [Show additional flow information]を開くと表示されるARNをメモしておきます
    null

  • ARNからは、下記を取得することができます

    • Amazon ConnectのインスタンスID
    • Contact FlowのID
      • arn:aws:connect:ap-northeast-1:123456789012:instance/#{Amazon ConnectのインスタンスID}/contact-flow/#{Contact FlowのID}

[AWS側]AWS Lambdaの設定

  • 関数を作成します
  • 以下に、python 3.8での実装例を示します
    • 各定数については、下記を設定してください
      • RESION
        • 作成したAmazon Connectインスタンスのリージョン
      • INSTANCE_ID
        • 作成したAmazon ConnectインスタンスのARNから取得(上述)
      • CONTACT_FLOW_ID
        • 作成したAmazon ConnectインスタンスのARNから取得(上述)
      • SOURCE_PHONE_NUMBER
        • Amazon Connectで取得した電話番号
import boto3
import json

def handler(event, context):
    # 定数を設定
    RESION = 'ap-northeast-1'
    INSTANCE_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
    CONTACT_FLOW_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
    SOURCE_PHONE_NUMBER = '+81800xxxxxxx'

    records = event['Records']
    connect = boto3.client('connect', region_name=RESION)
    for record in records:
        snsMessage = record['Sns']['Message']
        print(snsMessage)
        content = json.loads(snsMessage)['detail']['content']
        if (not 'phone_e164' in content ):
            print('necessary fields are missed')
            return
        print(content)
        connect.start_outbound_voice_contact(
            DestinationPhoneNumber=content['phone_e164'],
            InstanceId=INSTANCE_ID,
            ContactFlowId=CONTACT_FLOW_ID,
            SourcePhoneNumber=SOURCE_PHONE_NUMBER,
            Attributes=content
    )
  • Lambda関数の実行ロールを新規作成し、[IAMコンソール]を開きます
  • 作成したロールに、[AmazonConnectFullAccessポリシー]をアタッチします

null

[AWS側]Amazon SNSの設定

  • トピックを作成します
  • サブスクリプションを作成します
    • 先ほど作成したトピックを選択
    • 先ほど作成したLambda関数をエンドポイントに指定

null

[AWS側]Amazon EventBridgeの設定

パートナーイベントソースの確認

  • [Amazon EventBridge > イベント > パートナーイベントソース]から、KARTEのイベントソースが「保留中」というステータスで表示されていることを確認します
  • ステータスの説明は下記の通りです
ステータス 説明
保留中 KARTEのプラグイン設定で有効にされたが、イベントバスとの関連付けが未設定
アクティブ イベントバスとの関連付けが完了
削除済み KARTEのプラグイン設定で無効にされた

null

イベントバスの作成

  • [パートナーイベントソース]からそのイベントソースを選択し、[イベントバスと関連付ける]をクリックします
  • イベントバスが新しく作成されます

ルールの作成

  • [ルール > イベントバスを選択]から、先ほど作成したイベントバスを選択します
  • [ルールを作成]をクリックします
  • [パターンを定義 > イベントパターン > カスタムパターン]を選択します
  • 以下のようなJSONをイベントパターンに設定します
    • detail.nameには、KARTEのAmazonEventBridge連携アクションで設定したnameと同じ値を指定します
{
  "detail-type": [
    "KARTE Action"
  ],
  "detail": {
    "name": [
      "karte_ivr_call_request"
    ]
  }
}

null

  • [イベントバスを選択]に先ほど作成したイベントバスが設定されていることを確認します
    null

  • [ターゲット > SNSトピック]を選び、先ほど作成したSNSトピックを選択します
    null

  • 上記設定で作成します

動作確認

  • ビジュアルIVRの接客サービスを実際にテストユーザーに配信し、電話番号を送信します
  • エンドユーザーとして、以下を確認します
    • 入力した番号に、Amazon Connectで取得した電話番号から電話がかかってくる
    • 電話を取ると、自動音声がContact Flowで設定した通りに流れる
    • 自動音声が終わると、保留音が流れる
  • Amazon Connectの画面右上の電話マークからソフトフォンを開きます
  • オペレーターとして、以下を確認します
    • エンドユーザー側電話番号との通話が取れること
    • 通話がつながった場合に、相互の端末で会話ができること

トラブルシューティング

電話がかからない場合は、以下の順番で確認してください。

  • KARTE側でAmazon EventBridge連携アクションがテストユーザーに発火していること
    • 発火していない場合は、接客サービスの配信設定に不備がある可能性があります
  • AWS LambdaからAmazon CloudWatchにログが書き込まれていること
    • 書き込まれていない場合は、Amazon EventBridgeまたはAmazon SNSの設定に不備がある可能性があります
  • AWS Lambdaで下記のようなテストイベントを設定し、関数をテストした場合、Amazon Connectから電話がかかってくること
    • phone_e164の値は、実際に電話を受け取りたい番号を設定してください
    • かかってこない場合は、下記のいずれかが考えられます
      • Lambda関数の実行ロールに[AmazonConnectFullAccessポリシー]が付与されていない
      • Amazon Connectの設定に不備がある
{
  "Records": [
    {
      "Sns": {
        "Message": "{\"detail\":{\"content\":{\"phone_e164\":\"+819012345678\",\"user_type\":\"visitor\",\"inquiry_type\":\"動作環境について\"}}}"
      }
    }
  ]
}

アウトバウンドcall

KARTEで電話番号が取得できているユーザーについては、KARTEのユーザー詳細画面からAmazon Connectのソフトフォンを呼び出し、電話をかけることができます。

null

AWS側の設定

[AWS側]Amazon Connectの設定

  • Amazon Connectのインスタンス画面を開きます
  • [アプリケーション統合 > オリジンの追加]から、下記オリジンを追加します
    • https://admin.karte.io

null

KARTE側の設定

[KARTE側]プラグイン設定

プラグイン設定画面から、「Amazon Connect(β版)」プラグインの設定をします

  • 「Amazon Connect ccpURL」を入力します
    • https://#{INSTANCE_ALIAS}.awsapps.com/connect/ccp

[KARTE側]電話番号の取得

SDKから取得する場合

Webブラウザやネイティブアプリから直接的に電話番号を取得する場合は、下記に従ってください。

  • ユーザー情報(identify)イベントのphone_e164というフィールドで連携する
  • 値となる電話番号は、「E.164番号」の形式に準拠してください。ハイフンは不要です
{
    "phone_e164": "+819012345678",
}
  • 実行するタグの例(Web)
krt('send', 'identify', {
    phone_e164: "+819012345678",
});

ファイル連携で取得する場合

KARTE Datahubの紐付けテーブルで、phone_e164というカラム名で「E.164番号」を格納し、ユーザー情報(identify)イベントに対して紐付けを行ってください。

  • 取り込むcsvファイルの例
user_id,phone_e164
"user001","+819012345678"

[KARTE側]call方法

  • identifyイベントのphone_e164フィールドが正しく連携されているユーザーについては、ユーザー詳細画面でcallボタンがアクティブになります
  • callボタンを押すことで、Amazon Connect経由で通話が可能です
    • Amazon Connect側のアカウントでの認証が必要です

null

[KARTE側]call時に発生するイベント

KARTEで電話番号が取得できているユーザーにKARTEのユーザー詳細画面からAmazon Connect経由で電話をかけた場合、当該ユーザーに対して下記のイベントが発生します。

イベント名 条件
_amazon_connect_call_try Amazon Connectへの接続に成功
_amazon_connect_call_fail Amazon Connectへの接続に失敗
_amazon_connect_call_connected 電話がつながった
_amazon_connect_call_ended 電話が切れた

なお、下記のイベントのcontactIdフィールドに、Amazon Connectが付与したコンタクトIDが付与されます。

  • _amazon_connect_call_connected
  • _amazon_connect_call_ended

注意事項

AWSの各種サービスの仕様に関しては、アマゾン ウェブサービス ジャパン株式会社にお問い合わせください。