AWS Lambda(Python)からAmazon Connectで電話を発信する
自動で電話を発信する必要がありまして、電話発信APIを開発することになりましたので、とりあえずAmazon Connectでの電話発信設定を確認しました。
まずは電話が発信できるだけの必要最低限の設定とコードです。
Amazon Connectのインスタンス作成と電話番号取得は完了しています。
目次
Amazon Connectの設定
テレフォニーオプションの「Amazon Connectで発信する」を有効にしました。
問い合わせフローでは、「コンタクトフロー」を作成しました。
「コンタクトフロー(インバウンド)」となっていますが発信でも問題ありませんでした。
[プロンプトの再生]と[切断]を追加してフローをつなぎました。
[プロンプトの再生]では、とりあえず文字列を書いておきました。
Lambdaで実行するPythonのコード
ランタイムはPython3.9で作成しました。
start_outbound_voice_contactのリファレンスを参照しました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import json import boto3 def lambda_handler(event, context): connect_client = boto3.client('connect') response = connect_client.start_outbound_voice_contact( DestinationPhoneNumber='+818000000000', ContactFlowId='xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx', InstanceId='xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx', SourcePhoneNumber='+815000000000' ) return { 'statusCode': 200, 'body': json.dumps(response) } |
DestinationPhoneNumberは電話をかける先の電話番号です。
E.164フォーマットで国番号から設定します。
ハイフンやスペースがあるとエラーになります。
ContactFlowIdは、問い合わせフローを作成して、[追加のフロー情報の表示]でARNが表示されます。
ARNの一番最後がContactFlowIdです。
InstanceIdはAmazon ConnectインスタンスARNの最後の部分です。
SourcePhoneNumberはAmazon Connectで取得している電話番号です。
Lambda関数のIAMロール実行ポリシーはAWS管理ポリシーのAWSLambdaBasicExecutionRoleと次のインラインポリシーを設定しました。
ResourceやActionは最初インラインポリシーなしで実行してみてAccessDeniedExceptionエラーメッセージを確認して設定しました。
|
1 2 3 4 5 6 7 8 9 10 11 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "connect:StartOutboundVoiceContact", "Resource": "arn:aws:connect:ap-northeast-1:123456789012:instance/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx/contact/*" } ] } |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
RocketChatからOutgoing Webhookで呼び出されたAPI Gatewayでtokenをリクエスト検証する
本来はWAFでやったほうがよさそうですが、追加料金を発生させたくない場合にAPI …
-
-
Amazon SESでメール受信
Amazon SES(Simple Email Service)にメールドメイン …
-
-
東京リージョンでAWS Control Towerランディングゾーンをセットアップする
AWS Control Towerの最初の画面で[ランディングゾーンの設定]を押 …
-
-
S3オブジェクトロックを試しました
S3オブジェクトロックが必要になる要件に今のところ、出会ってないのでまだ設定した …
-
-
S3バケットのデフォルト暗号化はデフォルトだったことを確認しました
S3バケットのデフォルト暗号化は名前のとおりだとデフォルトなので、暗号化を指定し …
-
-
AWS Client VPNを設定しました
ユーザーガイドのクライアント VPN の開始方法に沿ってやりました。 AWSクラ …
-
-
S3バケットのリクエスタ支払い
S3バケットのリクエスタ支払いを試しました。 バケットの設定 検証用のS3バケッ …
-
-
CloudTrailイベントのコストしか発生していないリージョンのコスト発生源を調査しました
調査のきっかけ ふと検証用AWSアカウントのCostExplorerを見てました …
-
-
AWS Transit GatewayをResource Access Managerで他アカウントと共有
AWS Transit Gatewayを他アカウントに共有しました。 画面画像で …
-
-
AWS CLIからIAM Identity CenterへサインインしてCodeCommitのリポジトリを使用する
Macで操作しました。 AWS CLIバージョンアップ [crayon-69a8 …





