1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民こと、
新藏(にいくら)と申します♪
(/・ω・)/
以前、AmazonConnectでNGワードが検知された際にアラートメールを送信する方法
について記事にしました。
デフォルトだと以下の様なメールが届き、内容が少々分かりにくいです。
AmazonConnect → EvetBridge → SNS
という順番で連携していましたが、SNS送信用のLambdaを作成し
AmazonConnect → EvetBridge → Lambda → SNS
という順番で連携させることでメールの本文をカスタマイズできました。
そこで今回はEvetBridgeとSNSを連携する際にメール本文をカスタマイズする方法
について記事にしたいと思います!
AWS、AmazonConnectについて勉強中の方の参考になれば幸いです。
(*^^)v
ちなみに、12月はARIのアドベントカレンダもやっていますので、
もしよろしければ、こちらも応援お願いします♪
2.前提条件
まず初めに、前提条件を記載します。
- EventBridgeとSNSを連携し、EvetBridgeをトリガーとしてメールが送信される設定が完了していること
3.Lambda関数の作成
まずは、SNS送信用のLambdaを作成します。
3.1.事前準備として、SNSのトピックのARN、AmazonConnectのインスタンス名をメモ帳などに貼り付けます。
3.2.以下の内容で、Pythonで書かれたLambda関数を作成します。
subjectに送信したいメールの件名、messageに送信したいメールの本文を入力します。
今回はメール本文にAmazonConnectの録音を聞く画面へのリンクが表示されるようにしています。
例として、AmazonConnectとEvetBridgeが連携された場合の内容が記載されていますが、
本質的な内容を考えると、AmazonConnectを使うことは必須ではないため、メールの内容等はアレンジが可能です。
import json
import boto3
import logging
import os
#ロガーの生成
logger = logging.getLogger('log')
#出力レベルの設定
logger.setLevel(os.environ['LOGGINGLEVEL'])
def lambda_handler(event, context):
try:
logger.info("メールを送信します")
sns = boto3.client("sns")
topicArn = "★SNSトピックのARN★"
contactId = event["detail"]["contactArn"][-36:]
subject = "アラートメール_コンプライアンス違反の通話_"+contactId
message = "コンプライアンス違反の通話が検知されました。\n以下のURLから確認してください。\n\nhttps://★AmazonConnectのインスタンス名★.my.connect.aws/contact-trace-records/details/"+contactId+"?tz=Asia/Tokyo"
result = sns.publish(
TopicArn = topicArn,
Subject = subject,
Message = message
)
logger.info("メールを送信しました")
return {
"Result":"OK"
}
except Exception as e:
logger.info("エラー:%s",e)
messageは「\n」で改行ができます。
また、ContactID=event["detail"]["contactArn"][-36:]
の部分は以下のURLを参考に、
イベントからContactIDを抜き出しています。
4.EventBridgeの設定
Lambda関数を作成したので、EvetBridgeの設定を変更します。
4.1.EventBridgeの管理画面にて、「ルール」を選択し、設定変更するルール名を選択します。
4.2.「編集」を選択します。
4.3.「次へ」を選択します。
4.4.「次へ」を選択します。
4.5.ターゲットの選択にて、3章で作成したLambda関数を選択し、「次へ」を選択します。
4.6.「次へ」を選択します。
4.7.以上で設定は完了です。
5.動作確認
以下が実際に送信されたメールとなります。
件名、本文が分かりやすくなり、1クリックでAmazonConnectの録音を聞く画面にアクセスできます。
6.おわりに
ここまで読んで下さり、ありがとうございます!!!
(^^)
以前の内容ではメールの内容が少々分かりにくかったですが、
今回の様にLambda関数をはさむことで、何が原因でメールが送信されたのか等が分かりやすくなりました!
次回も何かしら記事を書いていきたいと思います♪
(:3_ヽ)_