前回からの続きです。
前回はAmazon Connectでのシンプルな電話受信フローを作りました。
今回はその受信フローをカスタマイズしてLambdaきっかけで発信できるようにしていきます。
目次
Lambda関数の作成
1から作成
関数名を適当なものを入力します。
ランタイムはNode.js 16xを選択します。
それ以外は一旦デフォルトでOKです。
右下の「関数の作成」押して関数作成を待ちます。
IAMロールの設定
このままではLambdaからAmazon Connectの発信許可がありませんので許可設定を行います。
先ほどできた関数を選び、
設定>アクセス権限から、デフォルトの実行ロールをクリックしIAM設定画面に移ります。
初期状態では、Cloudwatchlog系のポリシーしかありません。
インラインポリシーにAmazon Connectの音声電話発信許可ポリシーを追加します。
許可の追加よりインラインポリシーの作成を選択し、以下の設定を行います。
ポリシー名 AmazonConnectOutboudCall
1{
2 "Version": "2012-10-17",
3 "Statement": [
4 {
5 "Sid": "VisualEditor0",
6 "Effect": "Allow",
7 "Action": "connect:StartOutboundVoiceContact",
8 "Resource": "*"
9 }
10 ]
11 }
1{
2 "Version": "2012-10-17",
3 "Statement": [
4 {
5 "Sid": "VisualEditor0",
6 "Effect": "Allow",
7 "Action": "connect:StartOutboundVoiceContact",
8 "Resource": "arn:aws:connect:(リージョン):(AWSアカウントID):instance/(インスタンスID)/contact/*"
9 }
10 ]
11}
セキュリティーベストプラクティスに則り、最小限のポリシーとするためリソースまでしっかりと指定するのであればこのように許可範囲を制限します。
コード(node版)
変更するのは赤枠の4箇所です。
1 ContactFlowId: "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
2 DestinationPhoneNumber: "相手先電話",
3 InstanceId: "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
4 SourcePhoneNumber: "AmazonConnect発信元電話番号"
ContactFlowIdとInstanceIdは以下の手順にてAmazon Connect画面から取得します。
電話番号はE.164形式で指定します。
1080xxxxxxxx → +8180xxxxxxxx
ContactFlowIdとInstanceIdの確認方法
ContactFlowIdとInstanceIdの確認方法
1arn:aws:connect:ap-northeast-1:00000000000:instance/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx/contact-flow/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
1const AWS = require("aws-sdk");
2AWS.config.update({region: 'ap-northeast-1'});
3const connect = new AWS.Connect({apiVersion: '2017-08-08'});
4
5exports.handler = async (event, context) => {
6 let params = {
7 ContactFlowId: "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
8 DestinationPhoneNumber: "+81xxxxxxxxxxxx",
9 InstanceId: "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
10 SourcePhoneNumber: "+81xxxxxxxxxxxx"
11 };
12 //架電開始
13 await connect.startOutboundVoiceContact(params, function(err, data) {
14 if (err) {
15 console.log("connect error",err);
16 } else {
17 console.log("connect success",data);
18 }
19 }).promise();
20};
テスト
設定ができたらテストを行います。
「成功」とされ、電話がかかってくるか確認します。
エラーが改善されないときはこちらのログを確認しながらデバッグします。
APIリファレンス StartOutboundVoiceContact
https://docs.aws.amazon.com/connect/latest/APIReference/API_StartOutboundVoiceContact.html
以上で、発信処理の基本形ができました。
続いて、DynamoDBとの連携、API Gatewayからの処理を呼び出しなど、実運用に必要な処理を肉付けしていきます。
Amazon Connectの費用
最初の一年間は以下が無料です。
- 1 か月あたり 90 分の Amazon Connect サービス使用量
- AWS リージョンがある国からの直通ダイヤルイン (DID) 番号
- 1 か月あたり 30 分のインバウンド DID コール
- 1 か月あたり 30 分の AWS リージョンがある国の番号へのアウトバウンドコール
参考実費(1ドル140円)
電話番号(DID)1日あたり | 0.10 USD | 14円 |
受信通話1分あたり | 0.003 USD | 0.42 円 |
発信通話1分あたり(日本) | 0.0844 USD | 11.92 円 |
1日1回1分使うとして
電話番号 14円✕30=420円
受信通話 0.42円✕30=12.6円
発信通話 11.92円✕30= 358円
合計 約790円
初年度はほぼ無料枠内に収まります。
使わない期間があれば電話番号をリリースすれば無駄なコストもかかりません。
Amazon Connect の料金