この記事はハンズラボ Advent Calendar 2018 15日目の記事です。
こんにちは、クリスマスまであと10日ですね。
クリスマスを200%楽しむべく、Amazon Connectで遊んでみたいと思います。
Amazon Connectが最近、東京リージョンに来たので早速試してみましたが
シドニーリージョンと比べて遅延が全然気にならず、快適でした。
普通の電話として使えますね。最高です。
やりたいこと: サンタさんから電話をかけてもらいたい
子供がクリスマスの朝にプレゼントを見つけたら、
サンタさんから電話がかかってきた!
ということをやりたいと思います。
手順1 サンタさんにメッセージを書いてもらう
サンタさんからメッセージをもらいましょう。
SNSでサンタさんを探して、メッセージを送りましょう。
サンタさんはSNSやってるのかな?
ちなみにフィンランド語でありがとうは「キートス!」です。
手順2 サンタさんにもらったメッセージを翻訳する
サンタさんに書いてもらったメッセージを翻訳すると
「メリークリスマス!
いい子にしてたからプレゼント置いておいたよ。
来年も楽しみにしててね。」
のような感じになると思います。
手順3 Amazon Connectのコンタクトセンターを立てる。
AWSのコンソール画面からAmazon Connectのインスタンスを立ち上げます。
東京リージョンから使うことができます。

画面に従って順番に進めていけばOKです。
そのまま電話番号を取得して進めます。
手順4 音声を録音する
4番のプロンプトの作成をクリック

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

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

名前はsantaにしました。
手順5 問い合わせフローを作成する
次に問い合わせフローを作成します。
問い合わせフローの作成をクリック

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

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

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

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

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

この状態で、Amazon Connectの電話番号に電話をかけると、録音が再生されます。
手順7 lambdaでOutbound Callingの設定
lambdaファイル
python3.6です
ContactFlowIdなどの各種設定情報は
管理画面でお問い合わせフローを開いた時のurlから取得することができます。
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を許可します。
{
"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を叩きましょう!
クリスマス楽しみですね!
楽しいクリスマスをお過ごしくださいー
クリスマスの夜に愛の言葉を届けようってタイトルにしたけど、
めちゃくちゃ朝っぽい話でしたね
以上です。