Amazon Web Services ブログ
Amazon Connectのスケジュールされた レポートを自動的に送信する
コンタクトセンターではデータが重要です。 スーパーバイザとマネージャは、レポートを使用して、チームのパフォーマンスを確認し、要員配置の計画を立てます。 必要なときに必要なデータを人々に提供することは不可欠です。 このブログ記事では、レポートの生成を有効にしてEメールで自動的にユーザーに送信する方法について説明します。 以下のサービスを使用します。
このブログでは、 AWS CloudFormationを使用してデプロイを簡素化する方法についても説明します。
このブログのソリューションでは、 Amazon Connectのネイティブレポート機能を使用してレポートを設定およびスケジュールします。 そのスケジュール設定されたレポートは、Amazon Connectの設定で指定したS3バケットに作成されます。 レポートがS3に作成されると、Lambda関数を起動するイベントが発生します。 Lambda関数はイベントを読み取り、S3からレポートを取得して、指定されたEメールアドレスに送信します。 すべてのアクティビティは追跡目的でCloudWatchに記録されます。
では始めましょう。
このセットアップを完了するには、次のものが必要です。
- アクティブなAWSアカウント
- us-east-1(バージニア北部)またはus-west-2(オレゴン)のいずれかにあるAmazon Connectインスタンス。 Amazon SESはこれらのAmazon Connectリージョンでのみ使用可能であるため、この設定ではこれら2つのリージョンのみがサポートされています。 インスタンスを作成したら、電話番号を取得します。 詳細については、Amazon Connect の使用開始を参照してください。
- あなたのアカウントに設定されたAmazon SES。 このソリューションでは、Amazon SESを使用してレポートを指定の受信者にEメールで送信します。 SESを使用してEメールを送信するには、送信元アドレスを確認して、自分が所有者であることを示します。 サンドボックスにいる場合は、 送信先アドレスも確認する必要があります。 あなたは、Eメールアドレスまたはドメイン全体を確認することができます。 検証プロセスについては、Amazon SES のIDの検証を参照してください。 アカウントをサンドボックスから削除する方法については、Amazon SES サンドボックスの外への移動を参照してください。
- このCloudFormationテンプレートを実行するための適切なIAM権限。 これには、IAMロールとLambda関数を作成する権限が含まれます。 さらに、CloudFormationテンプレートを実行し、S3バケットにイベントを追加する権限も必要です。 ご自分の権限が不明な場合は、あなたの会社のAWS管理者に連絡してください。
土台を構築する
この設定に含まれる手順を簡単にするために、AWS CloudFormationを使用します。 CloudFormationを使用すると、テンプレートを使用してすばやくリソースをデプロイできます。 このブログ用に作成されたテンプレートは、IAMロールとLambda関数を作成します。
テンプレートを実行する前に、Amazon Connectインスタンスからいくつかの情報を収集してください。 具体的には、エクスポートされたレポートが保存されているS3バケットの名前、およびレポートフォルダーへのパスです。 この情報はAmazon Connectコンソールのデータストレージセクションにあります。 場所は次のようになります。
mybucketname/connect/myinstancename/Reports
この例では、バケット名は最初のスラッシュの前のすべて、つまり”mybucketname”です。また、レポートパスは最初のスラッシュの後のすべて、つまり”connect/myinstancename/Reports”です。 これらの値を見つけるには
- Amazon Connectコンソールを開きます。
- 使用したいインスタンスエイリアスを選択してください。
- 左側のナビゲーションで、データストレージを選択します。
- データストレージセクションに、以下に示すような情報があります。
CloudFormationテンプレートを使用するには
- AWSマネジメントコンソールを開きます。
- CloudFormationテンプレートを開きます。 これでCloudFormationコンソールが開きます。
- テンプレートの選択ページで、 次へを選択します。
- 詳細の指定ページで、パラメーターのセクションの説明に従って、すべてのパラメーターの値を変更します。
- 次へを選択してから、オプションページではすべての値を変更せずに、次へを選択します。
- 確認ページで、IAMロールの作成に関する警告を確認し、チェックボックスをオンにしてAWS CloudFormationがIAMリソースを作成する可能性があることを確認します。
- 作成を選択します。
- 状況がCREATE_IN_PROGRESSからCREATE_COMPLETEに更新されるのを待ちます。 デプロイが完了したら、次のセクション、”デプロイを変更する”に進みます。
デプロイを変更する
土台が作成されました。この構成が動作するためには、いくつかの変更を加える必要があります。 作成したIAMロールを変更し、S3バケットにイベントトリガーを追加し、スケジュールされたレポートを実行するようにAmazon Connectを設定します。
IAMロールを変更するには
- CloudFormationコンソールを開きます。
- ConnectReportsDistributorという名前のスタックを選択します。
- スタックの詳細ページで、出力セクションを展開します。
- IAMの値をコピーします。
- ブラウザの新しいタブでIAMコンソールを開きます。
- 左側のナビゲーションペインで、ロールを選択します。
- 検索ボックスに、コピーしたIAMの値を貼り付けます。 ロールのリストを絞り込みます。
- ロール名をクリックします。
- ConnectReportsDistributor インラインポリシーを展開します。
- ポリシーの編集を選択します。
- JSONタブを選択します。
- 22行目の replacewithyourbucket をご自分のバケット名に置き換えます。次の図のようになります。
- ポリシーの確認を選択します。
- 変更の保存を選択します 。
S3イベントを設定する
これでロールに正しいS3バケットからファイルを取得する権限が付与されました。そのバケットでイベントを設定する必要があります。 このイベントは、新しいオブジェクトがバケットに保存されたときにトリガーされ、レポートを送信するLambda関数を実行します。
次に、そのイベントを作成しましょう。
- S3コンソールを開きます。
- S3コンソールで、自分のバケットを見つけて、 バケット名を選択します 。
- バケットの詳細ページで、プロパティタブを選択します 。
- 詳細設定セクションまでスクロールして、Events を選択します。
- Eventsウィンドウで、通知の追加を選択します。
- 通知にNewReportEventなどの名前を付けます。
- イベントセクションで、PUTボックスを選択します。
- 他のチェックボックスはすべてオフのままにします。
- 送信先セクションで、Lambda関数を選択します。
- Lambdaドロップダウンメニューで、 ConnectReportsDistributorで始まる関数を選択します。
- 保存を選択します 。
これですべての設定が完了しました。レポートが出力されると、レポートが処理されるようになりました。 最後にすべきことは、レポート作成のスケジュール設定です。
レポートをスケジュールする
レポートをスケジュールするには、まずレポートを作成して保存します。 Amazon Connectでレポートを作成して保存したことがない場合は、ユーザーガイドの履歴メトリクスレポートセクションに詳細な手順があります。 レポートをスケジュールするときは、必ずプレフィックスを設定することが重要です。 これにより、Lambda関数はレポートの送信先を識別できます。
レポートをスケジュールするには
- 管理者アカウント、またはレポートを作成およびスケジュールする権限を持つアカウントを使用して、インスタンスにログインします。
- 左側のナビゲーションペインで、メトリクスおよび品質、保存されたレポートに移動します。
- 履歴メトリクスを選択します 。
- スケジュールしたいレポートを含む行の上にカーソルを置きます。 レポート名の右側に表示される時計アイコンを選択します。
- このレポートに繰り返しを設定します。 以下の図に、一時間おきのレポートの例を示します。
- 配信オプションタブを選択します。
- プレフィックスボックスに、CloudFormationテンプレートを実行したときに指定したSearchKeyの値の1つ(SalesやServiceなど)を入力します。 レポートがS3バケットに保存されると、Lambda関数が起動されます。これは保存されたファイルの名前を調べて、それが検索キーのいずれかと一致するかどうかを確認します。 存在する場合、Lambda関数は正しいEメールの送信先を割り当てて、Eメールを送信します。 そうでない場合、Lambda関数は指定されたデフォルトのEメールアドレスにレポートを送信します。 ファイル名の例が、プレフィックスを含むように展開されていることがわかります。
- 作成を選択します 。
セットアップは完了です。 スケジュールされたレポートが生成されると、出力はS3バケットに保存されます。 これによりイベントが発生し、Lambda関数が呼び出され、最終的にレポートが添付されたEメールが適切な受信者に送信されます。
さらなる変更を加える
このソリューションは、拡張の際の土台になります。 Lambda関数は、2つの異なる送信先をフィルタし、3つ目をデフォルトの送信先にするように書かれています。 さらにグループまたはフィルタを追加する場合は、キー(検索条件)と受信者グループの環境変数を追加してから、送信先のアドレスを決定するifステートメントに、新しい受信者とフィルタを追加します。 たとえば、送信先アドレスが”contract@example.com”の”Contracts”グループを3番目のカテゴリとして追加するには、次の手順を実行します。
- AWS Lambdaコンソールを開きます。
- ConnectReportsDistributor-LambdaFunctionで始まるLambda関数を選択してください。
- 関数コードに、# Grab all of our environment variables and assign them to local vars のコメントを見つけてください。
- 次のtryセクションで、 group_2 = os.environ[‘key_2’]を見つけてください。
- その後の新しい行に、次のコードを追加します。group_3 = os.environ[‘key_3’]
- 次に、 recipient_2 = os.environ[‘recipient_2’]を見つけます。
- その後の新しい行に、次のコードを追加します。recipient_3 = os.environ[‘recipient_3’]
- # Then check it against our defined options で始まるコメントブロックを見つけます。
- コメントブロックの下で、 clean_group_2 = group_2.lower()を見つけます。
- その後の新しい行に、次のコードを追加します。clean_group_3 = group_3.lower()
- 次に、 elif clean_group_2 in sanitized_filename: を見つけます。
- recipient = recipient_2 の行の後に、新しい行 elif clean_group_3 in sanitized_filename: を追加します。
- その次に、新しいインデント行 recipient = recipient_3 を追加します。
- 環境変数セクションに移動します。
- 名前が key_3、値が Contracts の新しいキーを追加します。
- 名前が recipient_3、値が contract@example.com の別の新しいキーを追加します。
- 関数を保存します。
使用する新しいグループおよび送信先ごとに、適切に番号を増やしながら、このプロセスを繰り返します。 参考までに、この変更版のコードをダウンロードできます。
結論
このブログ記事では、スケジュールされたレポートをAmazon ConnectからEメールでユーザーに送信するように設定しました。 土台を作成するためにCloudFormationを、レポートを生成するためにAmazon Connectを、必要なセキュリティを提供するためにIAMロールを、実行をトリガーするためにS3イベントを、そしてEメールと添付ファイルを準備し送信するためのLambda関数を使いました。 この送信メカニズムは、優れたカスタマーサービスを提供するために、必要なデータを必要なときに、コンタクトセンターの管理者に提供します。
翻訳:プロフェッショナルサービス 川嶋俊貴 (kawatosh@)