Amazon Connectで、オペレーターが着信履歴からユーザー情報を確認する方法

# はじめに
電話をかけると、オペレーターに繋げるConnectシステム構築した際、オペレーターが電話に出られず、発信者が電話を切る場合があります。
その場合、オペレーターが折り返しの電話をする必要があり、かつ発信者の名前を知る必要がありました。

Connectのシステムは、事前に電話番号と名前をDynamoDBに登録したユーザーのみが使用できる仕様です。
そのため、`オペレーターが着信履歴からユーザー名などを確認できる仕組みを構築`しましたので、まとめます。

# 事前構築
下記のサービス構築を行いました。
DynamoDBでは、パーティションキーを`電話番号(user_phone)`にし、`family_name`と`given_name`を属性として加えます。
connectに発信すると、発信電話番号をLambdaが受け取り、Lambdaが発信電話番号から`電話番号(user_phone)`に一致する項目を取得し、`family_name`と`given_name`を返すようにします。

その後、オペレータにつなげる、というお問い合わせフローを作成します。
![スクリーンショット 2022-03-13 22.26.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/0878e567-ce10-c94e-8c27-e8d4eb0950ae.png)



# お問い合わせフロー
電話をかけてオペレーターに転送するまでに、以下のフローを加えます。
`Lambda実行`（発信電話番号から、DynamoDBでユーザー情報を取得する）
→`コンタクト属性の設定`
→`顧客キューフロー`
→`作業キューの設定`
→`キューへ転送`

オペレーターが着信履歴からユーザー名を確認できる仕組み構築するためには、`コンタクト属性の設定`に、着信履歴に必要なユーザーデータを設定する必要があります。
![スクリーンショット 2022-03-13 22.12.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/8719447c-4f8a-849d-9e11-3a18a004e7b4.png)

## Lambda
Lambdaでは、発信電話番号から、DynamoDBでユーザー情報を取得する必要があります。
着信履歴に必要なユーザーデータを、returnでdict型で返します。

```py:例
return{
  "user_phone": user_phone,
  "family_name": family_name,
  "given_name": given_name
}
```

## コンタクト属性の設定
繰り返しになりますが、オペレーターが着信履歴からユーザー名を確認できる仕組み構築するためには、`コンタクト属性の設定`に、着信履歴に必要なユーザーデータを設定する必要があります。
Lambdaでreturnした3つをコンタクト属性として、以下のように設定します

user_phone
- `宛先タイプ`：`ユーザー定義`
- `宛先属性`：`user_phone`
- `タイプ`：`外部`
- `属性`：`user_phone`

family_name
- `宛先タイプ`：`ユーザー定義`
- `宛先属性`：`family_name`
- `タイプ`：`外部`
- `属性`：`family_name`

given_name
- `宛先タイプ`：`ユーザー定義`
- `宛先属性`：`given_name`
- `タイプ`：`外部`
- `属性`：`given_name`
![スクリーンショット 2022-03-13 22.28.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/191ccc2c-74ac-7e64-ebe6-52a9aa8af1c1.png)
![スクリーンショット 2022-03-13 22.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/40ebc237-1e5a-9d8f-4ffc-1a0f6b6a5ac7.png)
![スクリーンショット 2022-03-13 22.29.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/6c50d1a4-bba0-d88b-2774-9248a30dfd32.png)

# 顧客キューフロー以降のフロー
顧客キューフロー以降の3つのフローは、下記の記事を参考にしてください

https://dev.classmethod.jp/articles/inbound-call-using-amazon-connect/

https://dev.classmethod.jp/articles/amazon-connect-customer-queue/

# 着信履歴からユーザー情報を確認する
では、下準備ができましたので、発信して、オペレータに繋がる前に電話を切りましょう。

電話を切ると、着信履歴は、左タブの`問い合わせ検索`から確認できますので、クリックします。
![スクリーンショット 2022-03-13 22.40.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/3707b1c5-ff35-9344-f978-fb8b030cc8d3.png)

- `コンタクトID`に発信の詳細が記載されています。
クリックすると詳細画面に遷移します。

- `キュー`は、適用されたキューが記載されてます。
`キュー`欄に記載がなければ、キューの転送の前に、電話を切れたなどの可能性があります。

- `エージェント`は、対応したオペレーター名が記載されます。
`エージェント`に記載がなければ、対応したオペレーターがいなかったということです。

![スクリーンショット 2022-03-13 22.42.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/f77cf959-77fd-9f64-dd05-6da729e80e97.png)
`コンタクトID`をクリックましょう。
一番下に、`属性`の一覧があり、ここに、`コンタクト属性の設定`で設定したユーザーデータが反映されています。

![スクリーンショット 2022-03-13 22.50.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/17d185c5-b29a-7773-1266-9d09d9cf53bc.png)

# まとめ
まとめますと、発信者の電話にオペレーターが出られず、発信者が電話を切った場合、
名前を確認してから折り返しの電話する必要があるため、オペレーターは、`問い合わせ検索`から、`エージェント`欄が空白のコンタクトIDを探し、そのコンタクトIDの属性から名前を確認できます。


# 参照

https://qiita.com/k_suzuki527/items/0db7f6843d17aa4432da