Amazon Connectのchat サンプルの利用方法

# はじめに
先月2019年11月に発表されたAmazon Connectのchat機能について、[githubにサンプル](https://github.com/amazon-connect/amazon-connect-chat-ui-examples)が載っていましたので、そちらを試してみました。
サンプルには、お客様に提供するchatUI・Amazon Connectのchatのサンプルコンタクトフローなどが記載されていました。
今回はこちらのサンプルの利用方法をまとめました。
# 構成
[こちら](https://github.com/amazon-connect/amazon-connect-chat-ui-examples/blob/master/cloudformationTemplates/asyncCustomerChatUX/images/asyncCustomerChatUX.png)を参考にしてください。
エンドユーザに対して提供するWebページを、CloudFrontにて提供しています。

そのため試す際には、CloudFrontへのアクセスができるようにしてください。

# 設定方法

## Amazon Connectの環境設定

・データストレージの設定
　AWSのコンソール＞Amazon Connect＞インスタンスクリック＞データストレージより、チャット記録の有効化をしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/9bd94722-196f-53b9-f551-853d2cad8a40.png)


・問合せフロー作成
　まず、githubから[「Basic Chat Disconnect Flow.json」](https://github.com/amazon-connect/amazon-connect-chat-ui-examples/blob/master/cloudformationTemplates/asyncCustomerChatUX/contactFlows/Basic%20Chat%20Disconnect%20Flow.json)、[「Basic Chat.json」](https://github.com/amazon-connect/amazon-connect-chat-ui-examples/blob/master/cloudformationTemplates/asyncCustomerChatUX/contactFlows/Basic%20Chat.json)をダウンロードしてください。これから作成するコンタクトフローのデータが入っています。
　次にAmazon Connectの設定画面に入り、問合せフローの新規作成をします。作成の際には、右上のフローのインポート（ベータ）をクリックし、そちらに先ほどダウンロードした「Basic Chat Disconnect Flow.json」ファイルを入れ、公開してください。(Basic Chatを先に選択すると、公開できません。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/5f4bfee4-8556-5abe-6087-208007a2ecb0.png)
　BasicChat.jsonも同様にコンタクトフローを作成・公開し、「Basic Chat Disconnect Flow」と「Basic Chat」の2つのフローが作成されていることを確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/0afd5bea-7251-0e81-c51e-bf9fa7f6cd52.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/9da47922-4692-1f2c-5e57-4e79a440b80c.png)

・ルーティングプロファイルの設定
chatを受け付けるAgentの持つルーティングプロファイルのchat部分にチェックを入れてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/019fc32b-6349-a8c0-12ab-b40c2508df80.png)
また、ページ下部のルーティングプロファイルのキューにてBasicQueueのChannelsのChatにチェックがつけてください。

・セキュリティプロファイルの設定
[Agent]のセキュリティプロファイルに対して、追加の設定を行います。
[数字とフロー] > [Chat test mode] > [すべて]にチェックを入れてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/ef4d8089-8ae6-40e7-144d-335b0a1ed194.png)

## Amazon Connect外の設定(CloudFormationの実行)
Amazon Connect以外の部分の設定のために、CloudFormationのテンプレートが用意されています。
こちらを実行することで設定が完了します。

### 事前パラメータの確認
下記のパラメータが必要となるので、事前に確認しておきます。
・**Amazon ConnectS3BucketName：connect-XXXXXXXXXXXX**
→AWSコンソール＞Amazon Connect＞データストレージから、確認してください。'connect-xxx'という形式です。
・**WebsiteS3BucketName：xxx-chat-demo**
→ 任意の文字列
・**cloudFrontPriceClass：PriceClass_100**
→ デフォルトのまま
・**contactFlowId：[問い合わせフローID]**
→ [Basic Chat] 問い合わせフローARN のcontact-flowの後ろの値]
・**instanceId：[Amazon ConnectのインスタンスID]**
→ [Basic Chat] 問い合わせフローARN のinstanceの後ろの値]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/58ede64d-a168-a59b-610a-1e97e76d1d69.png)
・**transcriptPath：connect/[Amazon Connectインスタンス名]/ChatTranscripts**
→ Amazon Connect > データストレージ > チャット記録で設定した値

### asyncCustomerChatUXのデプロイ
まず、Cloudformationをスムーズに行うため、AWSのコンソールへログインしてください。
次に、https://github.com/amazon-connect/amazon-connect-chat-ui-examples
のREADMEにある以下のURLを選択し、ap-notheast-1(Tokyo) の [Launch Stack] ボタンを押下して下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/d0e06d19-8efb-457b-5860-1bc4f3c39ae5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/764f3df0-320c-a150-0aef-cf0bcee2bafe.png)

CloudFormation のスタックの作成が開始します。
[ステップ1] では内容は変更せずそのまま[次へ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/03065ecf-a778-0bda-a92d-13ebe5e32092.png)

[ステップ2] では先ほど確認した内容を入れて[次へ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/4cbd2d83-9ee3-8419-c315-452ba454dc78.png)

[ステップ3] では内容は変更せずそのまま[次へ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/5084b2ff-efe4-27b4-3b58-269489fce703.png)

[ステップ4] では[AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。] にチェックをして[スタックの作成]を押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/f519a0a5-f3ac-b4d8-6312-b3139b6f9eec.png)

ステータスが[CREATE_COMPLETE]になれば作成完了です。

## 実際に動かしてみる
・エージェント側：
Amazon ConnectのCCP(ccp-v2)を起動し、chat対応のAgentにてログインしてください。
`https://[Amazon Connectインスタンス].awsapps.com/connect/ccp-v2/`

・クライアント側：
CloudFrontにて作成されたサイトのURLにアクセスしてください。
[CloudFormation] > [スタック] > asyncCustomerChatUX の[出力] から cloudFrontDistribution の値見ることでURLを知ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/3754c28e-d43c-33b6-33e7-a70c17c8fc20.png)

**First Name：顧客の名前**
**Username：Amazon ConnectのAgentログイン名**
を入力して[Start Chat]を押してください。これにてchatを開始することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339600/c72e4b21-6e42-c23e-f35f-fb3f3ee01be6.png)

## 終わりに
以上にてAmazon Connectのチャット機能のデモを実施することができます。
現在のデモでは、エージェント名を入力しないといけない仕様となっていて使いづらいですので、今後紐解いていこうと思っています。