クリスマスの夜に愛の言葉を届けよう

この記事はハンズラボ [Advent Calendar 2018 15日目](https://qiita.com/advent-calendar/2018/handslab)の記事です。

こんにちは、クリスマスまであと10日ですね。
クリスマスを200%楽しむべく、Amazon Connectで遊んでみたいと思います。

Amazon Connectが最近、東京リージョンに来たので早速試してみましたが
シドニーリージョンと比べて遅延が全然気にならず、快適でした。
普通の電話として使えますね。最高です。

# やりたいこと：　サンタさんから電話をかけてもらいたい

子供がクリスマスの朝にプレゼントを見つけたら、
サンタさんから電話がかかってきた！

ということをやりたいと思います。


# 手順1 サンタさんにメッセージを書いてもらう

サンタさんからメッセージをもらいましょう。
SNSでサンタさんを探して、メッセージを送りましょう。
サンタさんはSNSやってるのかな？
ちなみにフィンランド語でありがとうは「キートス！」です。


# 手順2 サンタさんにもらったメッセージを翻訳する

サンタさんに書いてもらったメッセージを翻訳すると

「メリークリスマス！
いい子にしてたからプレゼント置いておいたよ。
来年も楽しみにしててね。」

のような感じになると思います。


# 手順3 Amazon Connectのコンタクトセンターを立てる。
AWSのコンソール画面からAmazon Connectのインスタンスを立ち上げます。
東京リージョンから使うことができます。

<img width="1271" alt="スクリーンショット 2018-12-13 18.23.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/7b1f3f1d-fcdb-8f27-07b2-e1b1cdd8285f.png">

画面に従って順番に進めていけばOKです。

そのまま電話番号を取得して進めます。


# 手順4　音声を録音する

4番のプロンプトの作成をクリック

<img width="1209" alt="スクリーンショット 2018-12-13 18.35.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/9f4a0bd1-7122-e7d9-2a9b-135cce760bb8.png">


プロンプトの新規作成をクリック


<img width="632" alt="スクリーンショット 2018-12-13 18.35.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/2324b450-87a1-236a-220d-54cda8028ef1.png">


サンタさんの声を録音します。
wav形式のファイルを作ってアップロードすることもできます。

<img width="1240" alt="スクリーンショット 2018-12-13 18.38.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/72d7550a-5ee6-5ba2-84f2-7ff70a69b9f1.png">

名前はsantaにしました。


# 手順5 問い合わせフローを作成する

次に問い合わせフローを作成します。
問い合わせフローの作成をクリック

<img width="1261" alt="スクリーンショット 2018-12-13 18.41.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/97dd65c9-ef59-c70b-ee25-d712d7e86f3c.png">

左メニューの「操作」から「プロンプトの再生」ドラッグアンドドロップし、
「エントリポイント」と繋ぎます（「開始」の横のまるいところからドラッグして繋ぎます）

<img width="924" alt="スクリーンショット 2018-12-13 18.43.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/8514cedd-04db-8037-e8f0-8f9275dd52f4.png">

プロンプトの再生をクリックし、
santaを選択します。

<img width="715" alt="スクリーンショット 2018-12-13 18.45.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/ebecb0e5-f74e-9cd1-7b4d-9f3a0ad671e7.png">


左メニューの「終了　/ 転送」から「切断/ハングアップ」をドラッグアンドドロップし、
「プロンプトの再生」と繋ぎます。

flowに名前をつけます「santaflow」

<img width="508" alt="スクリーンショット 2018-12-13 18.49.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/587c451d-4847-52fe-01c0-04c51f07ad0a.png">

「保存して発行」を押して、フロー作成は終了です。

<img width="333" alt="スクリーンショット 2018-12-13 18.49.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/fd1670e5-35c5-2d84-11a9-b6c939295f0e.png">


# 手順6 電話番号とフローを紐づける
ダッシュボードに戻り、電話番号を表示をクリック

<img width="1170" alt="スクリーンショット 2018-12-13 18.51.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/41569b38-17e2-7f17-d697-988484d16791.png">


取得した電話番号を選択し、フローを紐づけます。
<img width="791" alt="スクリーンショット 2018-12-13 18.52.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/210767/e8fbdfac-70ea-a04e-2e1e-12d1aa97345d.png">


この状態で、Amazon Connectの電話番号に電話をかけると、録音が再生されます。


# 手順7 lambdaでOutbound Callingの設定

lambdaファイル
python3.6です

ContactFlowIdなどの各種設定情報は
管理画面でお問い合わせフローを開いた時のurlから取得することができます。

```python

import json
import boto3


client = boto3.client('connect')


def respond(code, res):
    return {
        'statusCode': code,
        'body': json.dumps(res),
        'headers': {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Origin': '*'
        }
    }
    

def lambda_handler(event, context):
    
    response = client.start_outbound_voice_contact(
        DestinationPhoneNumber='電話番号 +81をつけて頭の0をとる',
        ContactFlowId='問い合わせフローのID',
        InstanceId='Amazon ConnectのインスタンスのID',
        SourcePhoneNumber='取得した電話番号　+8150xxxxxx',
    )
    
    return respond(200, response)

```


lambdaに紐づける Roleでは OutboundCallingを許可します。

```json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "connect:StartOutboundVoiceContact",
            "Resource": "*"
        }
    ]
}
```


# 手順8 ApiGatewayでlambdaをたたけるように設定

API Gatewayを作成し、
メソッド： Get
統合タイプ： Lambda関数
Lambdaプロキシ統合の使用にチェック
先ほど作ったLambda関数を紐付けましょう

アクションからAPIをデプロイしたら準備は完了です。



# クリスマス当日！！ タイミング頃合いを見計らって、APIGatewayのurlを叩く

いい感じのタイミングで手順8で作ったURLを叩きましょう！
クリスマス楽しみですね！
楽しいクリスマスをお過ごしくださいー

クリスマスの夜に愛の言葉を届けようってタイトルにしたけど、
めちゃくちゃ朝っぽい話でしたね
以上です。


[ハンズラボ Advent Calendar 2018 明日16日目](https://qiita.com/advent-calendar/2018/handslab)は、@watarukuraです