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認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
DynamoDB Accelerator(DAX)のサンプルアプリケーション(Python)を実行
DynamoDBデベロッパーガイドのDynamoDB Accelerator(D …
-
-
[JapanTaxi] Athena 指向アナリティクス 〜真面目に手を抜き価値を得よ〜(AWS Summit Tokyo 2017)を聞いてきました
Athenaのユースケースとして聞きにいきましたが、最近触ってるRe:dashも …
-
-
Cloud9でCodeWhispererを使用する
アクセス権限 Cloud9のEC2に設定するIAMロールのIAMポリシーで co …
-
-
AD Connectorを作成してシームレスにドメイン参加する
VPN接続先のADで管理されているドメインにEC2 Windowsインスタンスか …
-
-
AWS Lambdaで Unable to import module エラーが発生したときは
そもそも、Pycharmのナビゲーションペインでディレクトリごとドラッグ& …
-
-
特定のIAMロールをLambda(Python)で削除する
やりたいこと 特定アカウントの特定の名前が含まれるIAMロールをまとめて削除した …
-
-
AWS DeepLens開封の儀
去年(2019年)7月にamazon.co.jpでDeepLens買えますやんっ …
-
-
CloudFrontのカスタムヘッダーがなければALBのルーティングで403レスポンスを返す
大阪リージョンにはWAFがまだないです(2021年4月現在) 今のこのブログの構 …
-
-
AWS認定試験の自宅受験で壁のポスターを注意されちゃいました
AWS認定オンライン受験をしてみましたに書きましたとおり、自宅受験デビューしまし …
-
-
AWS Service Catalogポートフォリオを他のアカウントと共有する
AWS Service Catalogチュートリアルで作成したポートフォリオの他 …





