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
関連記事
-
-
SendGridのイベントをAPI Gateway -> Lambda(Python) -> DynamoDBに格納する
SendGridのメールイベントログはコンソールで確認出来るのは直近7日分で一括 …
-
-
RDSスナップショットのS3エクスポート結果確認
RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもで …
-
-
Amazon SES, S3で受信したメールをAWS Lambda, SESで別のメールへ転送する
Amazon SESでメール受信で受信したメールを、毎回S3バケットに見に行って …
-
-
AWS CDK とにかくサンプルでやってみる
Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …
-
-
AWS Toolkit for EclipseからLambda関数を直接作成できずにMavenでパッケージ化して作成
AWS Toolkit for EclipseからLambda関数を直接作成 チ …
-
-
Amazon BedrockがGAしたので触りました(boto3からも)
Amazon Bedrock Is Now Generally Availabl …
-
-
Amazon S3アクセスポイント経由からアクション可能なポリシー
S3アクセスポイントを使うことで、複雑で長いバケットポリシーを避け、アクセスポイ …
-
-
S3オブジェクトへのリクエストをCloudTrail, Athenaで識別する(パーティショニング)
Amazon S3オブエジェクトへのリクエストをCloudTrail, Athe …
-
-
AWS Expert Online at JAWS-UG首都圏エリアに参加して「Amazon EC2 スポットインスタンス再入門」を聞いてきた
AWS Expert Onlineという勉強会がありまして、AWS ソリューショ …
-
-
Amazon Connectで電話を転送する
かかってきた電話を転送するようにしました。 問い合わせフローで[終了/転送]から …





