【前回】AmazonConnectによる自動電話通知(3.問い合わせフローの作成)
【次回】AmazonConnectによる自動電話通知(5.EC2との連携)
【簡易版】AmazonConnectによる自動電話通知(まとめ)
監視サーバーで障害を検知した際に、自動で電話通知できるようにしていきます。ネットワークエンジニアも利用することの多い監視サーバー(Zabbix)で障害検知し、AWS上のAmazonConnectを利用し自動電話を発信します。

Lambda関数の作成
関数の作成
AWSマネジメントコンソール上で、「lambda」を検索します。

「関数の作成」をクリックします。

下記の通り入力し、「関数の作成」をクリックします。
オプション:一から作成を選択
関数名:任意の名前を入力 ※ここでは、”AmazonConnectTest-001″としています。
ランタイム:Pythonを選択 ※ここでは、最新版の”Python 3.9″を選択しています。
オプション:一から作成を選択
関数名:任意の名前を入力 ※ここでは、"AmazonConnectTest-001"としています。
ランタイム:Pythonを選択 ※ここでは、最新版の"Python 3.9"を選択しています。

関数が作成されたことを確認します。

アクセス権の追加(ロールの設定)
作成された関数の設定タブに移動し、実行ロールをクリックします。

「ポリシーをアタッチします」をクリックします。

“connect”で検索し、「AmazonConnect_FullAccess」にチェックを入れ、「ポリシーのアタッチ」をクリックします。

ポリシーがアタッチされたことを確認します。

AmazonConnectのインスタンスIDと問い合わせフローIDを確認
AmazonConnectの問い合わせフロー画面で、「通知のフロー情報の表示」を展開します。

ARNが表示されます。instanceの後ろの文字列がインスタンスID、contact-flowの後ろの文字列が問い合わせフローIDとなりますので、メモしておきます。

コードの記述
Lambdaのコードを記述します。
import boto3
def lambda_handler(event, context):
connect = boto3.client('connect')
connect.start_outbound_voice_contact(
DestinationPhoneNumber='+81**********',
ContactFlowId='************************************',
InstanceId='************************************',
SourcePhoneNumber='+81**********',
)
DestinationPhoneNumber:発信先の電話番号
※国番号をつけて記述(日本の090の番号の場合、+8190********)
ContactFlowId:問い合わせフローID
InstanceId:インスタンスID
SourcePhoneNumber:発信元の電話番号
※国番号をつけて記述(日本の050の番号の場合、+8150********)

Lambda関数のテスト
テスト設定
「Test」をクリックします。

テストイベントの設定画面が表示されます。今回は引数は不要となりますが、”hello-world”のテンプレートのままで任意のイベント名を入力し、「作成」をクリックします。

テスト実施
再度、「Test」をクリックします。

テスト成功
Statusが”Succeeded”となれば、テスト成功です。発信先の番号に着信があり、問い合わせフローで設定した音声が再生されることを確認します。

テスト失敗ケース1
Statusが”Failed”となり以下のメッセージが表示される場合は、アクセス権の設定を確認してください。
“errorMessage”: “An error occurred (AccessDeniedException) when calling the StartOutboundVoiceContact operation”
“errorType”: “ClientError”

テスト失敗ケース2
Statusが”Failed”となり以下のメッセージが表示される場合は、AmazonConnectのサービスクォータにより発信通話が制限されています。
“errorMessage”: “An error occurred (DestinationNotAllowedException) when calling the StartOutboundVoiceContact operation”
“errorType”: “DestinationNotAllowedException”



この場合、AWSサポートに問い合わせを行い、サービス制限を解除する必要があります。サービス制限解除の方法を下記を参照してください。
以上で、AmazonConnectによる自動電話通知(4.Lambdaによる起動)の説明は完了です!
【前回】AmazonConnectによる自動電話通知(3.問い合わせフローの作成)
【次回】AmazonConnectによる自動電話通知(5.EC2との連携)
【簡易版】AmazonConnectによる自動電話通知(まとめ)