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/*" } ] } |
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
【PR】 「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS CloudFormationでAmazon DynamoDBテーブルを作ってアイテムを追加する
デモ用にDynamoDBテーブルを作って消して、ということをたまにするので、Cl …
-
-
Amazon SNSサブスクリプションフィルターで優先度別のSQSキューにサブスクライブする
EC2のコンシューマーアプリケーションは優先度の高いキューのメッセージを先に処理 …
-
-
Route 53で不要なドメインを削除
勢いで作ったけど結局使うのをやめたドメインがあります。 要らないので削除しました …
-
-
Amazon API Gatewayでモックを作る
超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …
-
-
AWS Control TowerにOUを追加する
AWS Control TowerにOUを追加する 管理アカウントでAWS Co …
-
-
Kinesis Data AnalyticsをKinesis Data Streamsに接続してSQL検索する
Amazon Kinesis Data StreamsにTwitter検索データ …
-
-
EFSのマウントターゲットがデフォルトで作成されるようになってました
ひさしぶりにAmazon EFSファイルシステムを作成しました。 作成手順がすご …
-
-
VyOSにSSMエージェントをインストールしました
VyOSにSSHでログインするのも面倒なので、SSMエージェントをインストールし …
-
-
ENAが有効なEC2インスタンスの帯域幅をiperf3で確認してみた
同じ Amazon VPC 内で Amazon EC2 Linux インスタンス …
-
-
AWS LambdaでS3 Select
RDSスナップショットをS3にエクスポートした、Parquetフォーマットのデー …