Amazon Connectを利用してコールセンターを構築してみた

## 概要
ちょっと事情があってコールセンターについて理解を深めてみようと思い、手軽に構築を試せるAmazonConnectを利用して構築してみました。
随分と前に記事の投稿を試して以来久々の投稿なので緊張しています。
何番煎じかわかりませんが、良かったら読んでいってください。

## コールセンターの仕組み
そもそもコールセンターの仕組みってどんなものでしょうか。
改めて何か調べてみました。

### コールセンターとは
コールセンターは企業における電話応対を担う部門や事業所・またそのための設備を指すようです。ここで言う電話応対は顧客からの電話受付[^1]や、セールスなどで顧客への電話を掛ける対応[^2]も行うことができます。

ところで、よくよく考えてみるとこのコールセンターシステム構築にかかる要件定義はかなり大変そうです。

コールセンターは通常、顧客を待たせてしまうことのないように大人数のオペレータ[^3]で構成されています。
ということは、顧客から来た電話を効率よく割り振るような仕組みが必要になるはずです。[^4]
また、逆に架電する際も、誰がどこにかけたか、どこにかけていないかをシステムで統制できないと混迷を極める状況になります。

そこで、多くのコールセンターシステムは**PBX**と呼ばれる機能を有しています。

### PBX
PBXは、"*Private Virtual eXchange*"の略で、電話交換機のような役割を持つらしいです。
ようは、複数の外線電話と内線電話を接続するための機能（機器）で、複数の顧客から来た着信は、一度このPBXで受け付けて、そこから内線に回すという仕組みです。
わーお。[^5]

さて、これだけでもコールセンターは成り立ちそうなものですが、技術の進歩というのは人類の可能性を広げるもので、コールセンターに関わる業務をよりシステム化できるようになっています。
そう、コンピュータと電話の統合による、業務のシステム化です。

### CTI
CTIは、"*Computer Telephony Integration*"の略で、要は、電話機にコンピュータをドッキングして、コールセンターにかかる業務をシステム化しようという考えです。

実は上で紹介したPBXも、今ではシステム制御しているはずなので、CTIの一部という言い方が出来るのかもしれません。[^6]

具体的にどんなことが出来るようになったでしょうか。

### IVR
IVRとは、"*Interactive Voice Response*"の略で、顧客から電話を受けたとき自動応答する機能になります。サポートセンターに問い合わせした時に、「〇〇に関する問い合わせは1を、××に関する問い合わせは2を押してください。」といったように顧客の要望に応じて割り振りを行うように実装することが出来ます。

### ACD
ACDは、"*Automatic Call Distributor*"の略で、顧客からのコールを、事前に定めたルール通りに割り振る機能になります。
サーバーで言うところの、ロードバランシング的な機能ですね。

例えば、オペレーターになるべく均等に割り振ったり、キュー[^7]に入っている時間が長い=待機時間が長い顧客からのコールを優先に割り振ったりといったことが出来ます。

### CRM連携
CRMは、"*Customer Relationship Management*"の略で、顧客情報管理システムを指します。コールセンターシステムとCRMを連携することで、電話をかけてきた顧客のそれまでの購入履歴や過去の問い合わせ履歴を参照することが出来るようになり、より適切な対応を行うことが出来るようになります。

### その他
最近では、これに加えて顧客との電話を録音→分析したり、チャットボットを導入したり、自動応答の幅を広げたりといったようにコールセンターシステムも進化しています。

## Amazon Connectの構築
お待たせしました。
ようやく本題です。
Amazon Connectを構築してみたので、ダイジェストで紹介していきたいと思います。
すみません、数枚スクショ撮り忘れました。~~見てのお楽しみということで。~~

### インスタンスを立ち上げる
Connectを始める際はまずインスタンスを立ち上げる必要があります。
ここで、コールセンターシステムを構築する土台を作るイメージです。

1. 以下Topページから"今すぐ始める"をクリックして始めることが出来ます。
![top-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/65f67d99-e669-c48d-1281-1b3310d82ca8.jpeg)

2. 初めに、ユーザーを管理するディレクトリの設定を行います。
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/b86017a7-516c-0d21-4e63-2065929de015.jpeg)
Connect内にユーザーが保存できるのはイメージ通りでしたが、SAML認証も対応してるんですね。既存のADがある場合は組み合わせて使うと便利かもしれません。

3. 管理者の作成
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/98b8804b-e6d2-c02d-9612-b7968995172c.jpeg)
次に管理者の作成を行います。好きなように設定すると良いと思います。

4. 次にテレフォニーオプションを設定します。
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/1c889e08-dca1-e243-5bf5-94ca63179bf6.jpeg)
立ち上げる予定のコールセンターシステムで、着信を行うのか、発信を行うのか、あるいはどちらも行うのかを設定します。
要件に応じて設定していただければよいと思います。

5. データストレージの設定
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/f9f40eea-38dc-7797-199d-3de683953e2e.jpeg)
コールセンターシステムで記録されるログなどをどこに保存するかの確認を行います。
特に問題がなければそのまま次のステップに進めばよいですが、もし何か設定を行いたい場合は”設定のカスタマイズ”から詳細に設定できるようです。
↓設定のカスタマイズ
![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/65b43dfb-d62b-9f7c-7786-4e31daf9874c.jpeg)

6. 設定項目の確認
最後に設定した内容を確認して、”インスタンスの作成”をクリックすればインスタンスで作成できます！
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/e03b8104-76c8-3dd8-6b81-4d2fc0e73c7b.jpeg)


![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/bd790692-3efd-63a7-1f2c-ef41055a5455.jpeg)

### コールセンターシステムの構築
さて、インスタンスを立ち上げたところで、実際にコールセンターシステムの構築を行いましょう。

1. 設定開始
立ち上げたConnectを開くと以下のような画面が立ち上がるので”今すぐ開始”をクリックして設定を開始してみます。
![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/d970da19-69fc-6601-fe89-4fe6143ad26f.jpeg)

2. 電話番号の取得
最初のステップは電話番号の取得です。
以下の設定画面から電話番号の取得を行います。
![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/3bee6bb1-0b3c-52b3-e4ef-4205fc9c1a61.jpeg)
**※日本の番号を取得するには、サポートに連絡の上一週間程度待つ必要があるようです。今回はテストで利用するだけなので、すぐに取得可能な国の番号を取得しました。
ご自身で試される際はそのあたり自己責任でお願いします。**

3. 設定ガイド
電話番号の取得が完了すると、Connectの画面上に設定ガイドが現れました。
今回はこのガイドに沿って、設定を行ってみます。
![11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/f3d56787-c68b-5962-3c8e-6d6416936cc2.jpeg)

4. 電話番号の確認とチャットのテスト
最初のステップでは電話番号の確認とチャットのテストが指示されますのでそれぞれ確認しましょう。
なお、チャットのテストは以下のような画面で行うことが出来ます。
とても便利。
![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/48267d72-98bb-522e-7821-4aa97789f6a1.jpeg)

5. オペレーション時間の設定
次にオペレーション時間を設定することが出来ます。
これは、例えば平日は17時までの受付といったように、受付可能な時間を設定するものです。[^8]
![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/9d88012c-50e2-85d8-e6c0-d1c0c6679898.jpeg)

6. キューの作成
続いて、キューの作成を行います。
キューとは、顧客からの問い合わせの待機場所を意味しており、どんどんたまっていく問い合わせをどのように捌くかのルールを、キュー毎に変えることが出来ます。[^9]
![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/7df3d79c-1734-b0ec-e3a6-434a81aceb3a.jpeg)
また、キューは以下のように設定できるようです。
![25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/383e3bd0-f875-7954-5163-a78484ec0ea4.jpeg)

7. プロンプトの作成
プロンプトとは、オーディオを再生するためのメディアです。
サポートセンターに電話をかけたときに流れるボイスメッセージのあれです。
デフォルトでいくつか登録されていますが、必要なものがあれば自分で用意することもできます。
![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/a7aef6da-05a8-f5a2-a5d7-c942b87820b9.jpeg)

8. 問い合わせフローの作成
![16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/82091635-194c-c3b3-4afb-1168db23c5db.jpeg)
問い合わせフローに関しては以下の図を見ていただくとわかりやすいかと思います。
※図はサンプルとしてとりあえず繋げただけなので実際には動かせません。
![19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/28318f78-299f-9fd7-b88d-0f5f1046fc17.jpeg)
この図で示されているように、受信した問い合わせをどのようなフローで処理するかをGUIベースで定義したものです。
何が良いってここでLambdaを噛ませられるのがいいですよね。

9. ルーティングプロファイルの作成
ルーティングプロファイルを設定することで、そのエージェントが受信できる問い合わせのタイプとルーティングの優先度が決められるみたいです。
例えば、ルーティングAにキューA,Bを割り当て、それをユーザーに割り当てることで、そのユーザーはキューA,Bの問い合わせに対応する、といった仕組みです。
ルーティングプロファイルは複数のユーザーに割り当てることができ、ユーザーはただ１つのルーティングプロファイルを持ちます。
![17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/1616ff7b-a099-884b-2484-ebb21d16a86b.jpeg)


10. ユーザーの設定
設定ガイドの最後のステップとして、ユーザーの作成と設定を行います。
![18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/766fa936-3258-e991-b4ca-a3825f8abbce.jpeg)
ユーザーの追加は以下の画面から行うことが出来ます。
1ユーザーずつ作成することもできますが、CSVでまとめて作成もできそうです。
![21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/9d0a5e1e-125f-a7dd-e806-b9711edc45ec.jpeg)
1ユーザーずつ作成する場合は以下のように各項目を埋めて作成すればOKです。
![22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/afa45283-4df3-69ed-b698-7fd7ff784fe4.jpeg)
作成されたユーザーはそれぞれ、最初に決めたURLからログイン画面に入り、ユーザー作成時に設定したメールアドレスとパスワードでログインして利用を開始します。
![32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/29bf0026-5f33-ad7d-350d-757557a02bcf.jpeg)

利用イメージは以下の通りです。
※チャットを利用したイメージ
![31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223198/527fedf4-a9aa-58cb-f07d-3fcc85340edb.jpeg)

## 料金
詳細はこちら[^10]を参照してください。
ざっくりいうと、料金は以下の要素で構成されているようです。
①取得した電話番号につき1日当たりの料金
②取得した電話番号につき、1分当たりの受信通話料金
③音声・チャット・etcのAmazon Connect利用料金

## 良いなと思ったところ
* 構築が簡単でシンプル
* LambdaやLens、S3など他のAWSサービスと接続しやすい。
* SDKで開発ができるっぽい（未検証）

## 良くないなと思ったところ
* 個々に合わせたきめ細やかなカスタマイズが難しい。
* 電話番号取得が面倒くさい

## まとめ
ということで、コールセンターについてまとめた上でAmazon Connectを利用してみました。
コールセンターシステムって個人では用意できないだろうと思っていましたが、３０分程度でできてしまったのでお手軽に試す分には良いですね。
実際に現場で開発した方に使い勝手を聞いてみたいです。

これだけお手軽にできるなら、固定電話代わりに自前のConnect構築しちゃうのもありだなあと思いました。
次はその辺挑戦してみます!

[^1]: サポセンに電話した時につながるあれ
[^2]: ちなみに、電話をかけることを**架電**というそうな
[^3]: 電話を受ける人
[^4]: 職場で電話を取るみたいに、電話かかってきたから誰か取って！とかしていると効率が悪すぎる
[^5]: ちなみに、昔は**手動で**電話の交換を行っていたらしい。
[^6]: 歴史的な話をすると、90年代にデジタル制御するPBXとコンピュータを統合した新技術が生まれ、それがCTIの始まりとのこと。
[^7]: キューイングって言葉はコールセンターシステムでも使うんですね。ちなみにキューとは、応答待ちになっている顧客からのコールが順番に格納されている状態を指します。
[^8]: 後述しますが、日本の祝日の設定ができません。必要な場合はLambdaを噛ませる必要があるっぽいです。
[^9]: 詳細→https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/concepts-queues-standard-and-agent.html
[^10]: https://aws.amazon.com/jp/connect/pricing/