【AmazonConnect】Lambdaを利用して受付時間外の電話着信をSlackに通知させてみた（後編）

<h1>前編はこちら</h1>
まだ前編を読めていない人はこちらからご覧ください！
[https://qiita.com/hagiohagi/items/cef993105f653eab9603](https://qiita.com/hagiohagi/items/cef993105f653eab9603)

<p>後編ではLambdaの設定・Slack Appの設定・Amazon Connectの問い合わせフローの設定をしていきます！</p>

<h1>LambdaとSlack Appの設定</h1>
<h3>・Lambda関数の作成</h3>
1. AWSコンソールにログインし、サービスから「Lambda」を選択
2. ポリシーのフィルターの設定で「AWSLambda_FullAccess」を選択
3. 任意の名前と説明を記入
4. 関数の作成は「一から作成」を選択し、任意の名前を記入
5. ランタイムはPython3.8を選択し、ロールは先ほど作成したロールを選択
6. 公開コードを利用するため以下のリンクを開く
<p>https://github.com/hackjapan/amazonconnect_slack</p>
7. 緑の「Code」ボタンをクリックし、Download ZIPをクリック
8. Lambdaの画面に戻り、「アップロード元」をクリックし.zipファイルを選択
9. 先ほどダウンロードしたzipファイルをアップロードする
10. ドラッグ＆ドロップで以下のファイルの位置を関数名の直下に移動させる

　・certifi
　・chardet
　・inda
　・requests
　・urllib3
　・lambda_function.py
![accd24855a45722be250f617aa3058cf.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/c62fab2e-0f75-b9de-20ce-40c291d5b0f3.png)

<h3>・Slackに表示される文言を変更する</h3>
1. AWSコンソールのLambdaのページで関数を選択し、コードの表示画面を開く
2. Lambda_function.pyを開き、34行目の”通話の着信中”の文面を"営業時間外の時間帯に着信がありました"に変更する
![6758b67720a56d232359b8706b134dc9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/19607a17-e7fc-3e90-072e-26cc168b9d7d.png)

<h3>・Slack Appの作成</h3>
1. 以下のリンクからSlack apiを開く
<p> https://api.slack.com/?_fsi=yHiAp51t</p>
![10e702b5c08a02b7c6870e8302227799.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/bd16527c-60ca-e751-fffd-0be3e423f8c3.png)
2. 中央の「start building」をクリックし、アプリの名前とWorkspace（slackのチャンネルの場所）を入力しcreate appをクリック

<h3>・環境変数の設定</h3>
1. Amazon Connectのホーム画面を開き、右上の電話のアイコンをクリック
2. 表示されたウインドウのリンクをコピー
3. AWS Lambdaの先ほど作成した関数を開き、「設定」→「環境変数」を選択
4. キーの名前を「AMAZON_URL」、値にコピーしたリンクの名前を貼り付けて登録
5. Slack apiで「Incoming Webhook」をクリックし 、「Webhook URL」の文字列をコピー
6. （Webhook URLがない場合は「Add New Webhook to Workspace」を押してWorkspaceを登録）
7. AWS Lambdaの先ほど作成した関数を開き、「設定」→「環境変数」を選択
8. キーの名前を「SLACK_WEBHOOK」、値にWebhook URLの文字列を貼り付けて登録
9. Slack（アプリ本体）を開き、botを通知させたいチャンネルを選び、右クリック
10. リンクのコピーを選択して、コピーしたアドレスの後ろ11文字の文字列をコピー
11. AWS Lambdaの先ほど作成した関数を開き、「設定」→「環境変数」を選択
12. キーの名前を「SLACK_CHANNEL」、値にリンク名からコピーした文字列を貼り付けて登録
![307520909a6b83731afb15d8a430c0d6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/47ecb32e-9442-8397-ef7a-7d48280885c8.png)

<h3>・Amazon ConnectにLambda関数を登録</h3>
1. AWSコンソールでAmazon Connectを開く
2. インスタンスエイリアス名をクリックして、概要の欄から「問い合わせフロー」をクリック
3. AWS Lambdaの項目で作成したLambda関数を選択して「Add Lambda Function」をクリック
![080c89b4eb67e42374adcd852d579f7d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/58657047-b7bf-20f9-541b-355fd9b2e026.png)

<h1>問い合わせフローの設定</h1>
<h3>・問い合わせフローの作成</h3>
1. 左側アイコンの３つ矢印から問い合わせフローを選択、「コンタクトフローの作成」をクリック
![6bcd5409f5891a8e8e6fe7648ee9f501.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/ed8bb566-c092-8e44-6742-349c6800a844.png)
2. 「操作」から「プロンプトの再生」をフローにドラッグ＆ドロップ
3. 「設定」から「音声の設定」をフローにドラッグ＆ドロップし、音声を「mizuki」に設定し、「save」をクリック
4. 「ブランチ」から「オペレーション時間を確認する」をフローにドラッグ＆ドロップし、パラメータに先ほど作成したオペレーション時間を設定し、「save」をクリック
5. フロー上の「プロンプトの再生」をクリックテキスト読み上げ機能をチェックし、テキストの入力をチェックの上任意の文言（例：ただいま電話を繋いでおります／ただいまお電話に出ることができません）を設定し、「save」をクリック
6. 「終了・転送」から「電話番号のへの転送」をフローにドラッグ＆ドロップし、転送先の電話番号の記入、タイムアウトの秒数の記入、切断後に問い合わせフローを再開の所で「はい」を選択肢、「save」をクリック
7. 「統合」から「AWS Lambda関数を呼び出す」をフローにドラッグ＆ドロップし、関数を選択するにチェックを入れ、作成したLambda関数を選択し、「save」をクリック
8. 以下の図の通りになるように矢印を結ぶ
（※プロンプトは営業時間内の場合と営業時間外の場合の２つを用意する）
![7182f9f83631756e236c0fe48409d8e2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/b8f839aa-4d0b-ac12-f87f-8abd6c09917a.png)
9. 「保存」の隣の▼をクリックし「保存して発行」をクリック

<h3>・フローと電話番号を結びつける</h3>
1. 左の矢印３つのアイコンから電話番号をクリックし、表示された画面から該当の電話番号をクリック
2. 問い合わせフローに先程作成したフローの名前を選択する

<h1>完成したので試してみる</h1>
設定した営業時間の外のタイミングで、Amazon Connectで登録した電話番号に電話してみる。
設定の通りの音声プロンプトが流れた後、このような通知がSlackのチャンネルに届けば成功です！
![ce1756601f78ac323918fa4dc90c799a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678858/fb9e1c5e-ed01-26cd-1f71-70008615b8d9.png)

<h1>最後に</h1>
本当に最後までオープンソースの情報だけでなんとかやりくり抜いた感じなので、
これからLambda関数についてより学習し、もっと柔軟に要件に応えられるようにしていきたいです！