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などからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
AWS CodePipeline クロスアカウントアクセスパイプライン
AWS CodePipelineでクロスアカウントアクセスのパイプライン作成手順 …
-
-
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト – プロフェッショナル」を執筆しました
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテク …
-
-
AWS OrganizatonsのRCP(リソースコントロールポリシー)を設定しました
2024/11月に発表されましたリソースコントロールポリシーを管理している組織に …
-
-
AWSアカウント内のLambda関数を削除するLambda(Python)
やりたいこと 特定のAWSアカウントの特定リージョンのAWS Lambda関数を …
-
-
AWS Application Discovery Serviceのエージェントを実行
本来はオンプレミスのサーバーにエージェントをインストールして、自動でアプリケーシ …
-
-
S3署名付きURL(GetObject)生成後にオブジェクトを上書きアップロードしたら
ダウンロードリクエストを実行したタイミングのオブジェクトがダウンロードされるので …
-
-
API Gatewayから直接 DynamoDBに書き込む
やりたいこと WebページでOやXを押したときに、どっちを押したかをDynamo …
-
-
Amazon S3オブエジェクトへのリクエストをCloudTrail, Athenaで識別
こちらCloudTrail を使用した Amazon S3 リクエストの識別に書 …
-
-
CloudWatch インテリジェントオペレーションでこのブログのログを調査してみました
CloudWatch インテリジェントオペレーションを設定しました。 設定 マネ …
-
-
CloudFormation StackSetsでOrganizations組織のアカウントに一気にIAMロールを作成した
Organizationsで管理している各アカウントにIAMロールを作成したい場 …





