Amazon Connectで簡単なヘルプデスクを作ってみる

# この記事を書いた背景

[Amazon Connect](https://aws.amazon.com/jp/connect/)が東京リージョンに展開されていることは、
知っていたのですが、なかなか触る機会がなく、先日ひょんなことから触ることがありました。

# Amazon Connect とは

All-in-Oneのコンタクトセンターサービス。

All-in-Oneというのは次がポイント

* コンタクトセンターに利用するアプリケーションおよびサブスクリプション費用
* サーバ設置箇所（大抵、DCなど）
* 電話回線費用（PBXも含む）

![2019-08-20_230214.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/0b8a3adc-4322-ffa3-4b9c-aedf0d98249d.png)

## Amazon Connectの無料枠

https://aws.amazon.com/jp/connect/pricing/

> Amazon Connect を 12 か月間無料で開始していただけます。
> 最初の Amazon Connect コンタクトセンターをデプロイすると、
> 毎月 90 分間の Amazon Connect サービスの使用、
> AWS リージョンの所在する国からの直通ダイヤル (DID) 番号、
> 毎月 30 分間の受信 DID 通話、毎月 30 分間の AWS リージョンが所在する国への発信通話が得られます。

ただ、Direct Dial（050,03）とToll Free(0800,0120)と2パターンあるので、
間違えて後者のToll Freeを選択すると、無料枠の恩恵が受けられないので注意です。

個人的に最近 **コンタクトセンター** という言葉が、
従来のコールセンターで、インバウンドのクレーム処理やアウトバウンドの営業といったことから、
顧客の体験価値（所謂、UX）を高める目的で言葉を使い分けることを知った初心者です。
というところで、一般にコンタクトセンターはどういったサービス提供されているか、
5分程度検索結果を見てみました。

## 従来のコンタクトセンター

https://www.heartful.cc/service/
> 1,000円/1回 ※1フロー

https://www.central-eye.co.jp/price/ 
> 1,500円 月額/30回まで

http://www.zerostart-callctsys.com/developer_seller/avaya.html
> 1,781,600円（参考価格）～

コンタクトセンターは一度構築すると色々と変更が（コスト的に）難しそうですね。

# 実際に作ってみた

## Amazon Connect立ち上げ

画面の入力で必要な管理者情報、インバウンド/アウトバウンドの有無などを設定（5分程度）

<img width="1368" alt="2019-08-07_115812.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/9b512300-266f-4338-3069-d8b2e15f146d.png">

エンジニアの手順に見かけるビルド作業中、コピー中なのでコーヒータイムを、というのも不要でした。

<img width="1368" alt="2019-08-07_115910.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/d38bdcdb-1cc2-ffac-f370-890ecadeef8d.png">

## さくっとフロー作成

<img width="1368" alt="2019-08-07_161505.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/f0d91241-82ab-6891-ebc0-20632b7e2e4a.png">

ユーザ側の気持ちで、社内の問い合わせで機器（パソコン）関連で問い合わせるんだったらこんな感じかなと、
いったところで、オブジェクトを置いて、発話して欲しいことを書いたりしました。

発話に関して、[Amazon Polly](https://aws.amazon.com/jp/polly/)を利用しているため、
日本語の場合、 Mizuki（女性の声）/ Takumi（男性の声）の2択ですが、
今回はMizukiに全て発話させました。

他にも、 DTMF（Dual-Tone Multi-Frequency）、所謂電話のダイヤルキーで"ピッ、ポッ、パッ"と押して、
条件分岐を設定するところです。

# 作成してみての感想

こんなに簡単に作成できるのか、と驚きました。
システム保守運用業務のエンジニアでもあるので、
やはりこういったものを活用するとしたら、
システムアラートの通知ですね。

[Lambda](https://aws.amazon.com/jp/lambda/)とも組み合わせられるので、
他のサービス連携であったりすることは十分できるのですが、
注意点が２つほどあるので、今後の自身の見返すように含めて記載します。

* Connect-Lambda連携許可設定はAWS CLIからのみ ※2019年8月上旬時点

Lambda関数作成時にトリガーとなるイベント（S3 PUT、CloudWatch Eventなど）を選択するかと思いますが、
2019年8月上旬時点ではConnectは存在しないため、選択できません。
AWS CLIからのみ権限付与が必要です。

```
>aws lambda add-permission --function-name function:<Lambda_function_name> ^
More?  --statement-id 1 --principal connect.amazonaws.com  ^
More?  --action lambda:InvokeFunction ^
More?  --source-account <AWS Account ID> ^
More?  --source-arn arn:aws:connect:ap-northeast-1:<AWS Account ID> :instance/<Instance ID>
{"Sid":"1","Effect":"Allow","Principal":{"Service":"connect.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:ap-northeast-1:<AWS Account ID>:function:<Lambda_function_name>","Condition":{"StringEquals":{"AWS:SourceAccount":"<AWS Account ID>"},"ArnLike":{"AWS:SourceArn":"arn:aws:connect:ap-northeast-1:<AWS Account ID>:instance/<Instance ID>"}}}

```

* Connect内で呼び出すLambda関数は8秒以内 ※2019年8月上旬時点

レスポンスがあまり遅いLambda関数は組み込めません。
組み込んだとしても、エラーとなりフローが終わってしまいます。
そのため、重たい処理（特定のEC2を検索して、処理を行わせる）を組み込みたい場合は、
SQSなどに一旦突っ込んで、本処理用Lambdaを呼び出すといったことの設計にする必要があります。
元々が電話のインバウンドなので、通話中のユーザが増えれば、
AWS内部の回線トラフィックも混雑して他のサービスに影響が出る可能性もあるので仕方がないと思います。

コールセンター初心者の自分でも簡単に書けるということは、
以前からコールセンターの業務で運用設計を行っていた人が作成すると、
ものすごいフローが、今までの投資コストと比較すると低コストで実現できると思います。