概要
- Amazon Connectには留守番電話機能は無いため個別に作成する。
- 基本の考え方等は『[Amazon Connect]営業時間外に着信したビジネスチャンスを失わないように留守番電話機能をつけてみた』をもとにしています。
使用ユーザー
- IAMユーザー
手順
kinesis Video Streamsデータ取得用情報を保存するS3の作成
-
AWSにサインインします。
- アカウント、ユーザー名、パスワードを入力してサインインします。
アカウント内(IAM)で作成したユーザーを使用してコンソールにサインインする
- アカウント、ユーザー名、パスワードを入力してサインインします。
-
『AWSマネジメントコンソール』画面にある「サービスを検索」にS3と入力し、検索結果から《S3》をクリックし、Amazon S3 コンソール(https://console.aws.amazon.com/s3/)を開きます。
-
S3のバケット一覧が表示されるので、営業時間の判断で作成したバケットをクリックします。
-
- フォルダ名:フォルダの名前
- 暗号化:適宜必要な暗号化設定を選択
-
- フォルダ名:フォルダの名前
- 暗号化:適宜必要な暗号化設定を選択
kinesis Video Streamsデータ取得用情報を作成するLambdaの作成
- 以下のコードで各自で変える部分
- region変数:バケットを作成したリージョン名
- bucketName変数:作成したバケット名
- key変数:作成したフォルダ名(終わりに『/』を入れる)
const AWS = require("aws-sdk");
const region = 'XXXXXXXXX';
const bucketName = 'my-baseXXXXXXXXX';
const key = 'my-voicemessageXXXXXXXXX/infomation/';
exports.handler = async (event) => {
console.log(JSON.stringify(event));
// リクエストから必要データを取得する
let streamInformation = {};
const contactData = event.Details.ContactData;
streamInformation.contactId = contactData.ContactId; // コンタクトID
streamInformation.customerEndpoint = contactData.CustomerEndpoint.Address; // 発信者番号
streamInformation.systemEndpoint = contactData.SystemEndpoint.Address; // 着信番号
const audio = contactData.MediaStreams.Customer.Audio;
streamInformation.startFragmentNumber = audio.StartFragmentNumber; // 録音データの開始フラグメント番号
streamInformation.startTimestamp = audio.StartTimestamp; // 録音データの開始時間
streamInformation.stopFragmentNumber = audio.StopFragmentNumber;// 録音データの終了フラグメント番号
streamInformation.stopTimestamp = audio.StopTimestamp;// 録音データの終了時間
streamInformation.streamARN = audio.StreamARN; // ストリームのARN
// S3に日付文字列をキーとして保存する
const s3 = new AWS.S3({region:region});
const createKey = key + createKeyName();
const body = JSON.stringify(streamInformation);
const params = {
Bucket: bucketName,
Key: createKey,
Body: body
};
await s3.putObject(params).promise();
return {};
};
function createKeyName() {
const date = new Date();
const year = date.getFullYear();
const mon = (date.getMonth() + 1);
const day = date.getDate();
const hour = date.getHours();
const min = date.getMinutes();
const sec = date.getSeconds();
const space = (n) => {
console.log(n);
return ('0' + (n)).slice(-2);
};
let result = year + '_';
result += space(mon) + '_';
result += space(day) + '_';
result += space(hour) + '_';
result += space(min) + '_';
result += space(sec);
return result;
};
-
AWSにサインインします。
- アカウント、ユーザー名、パスワードを入力してサインインします。
アカウント内(IAM)で作成したユーザーを使用してコンソールにサインインする
- アカウント、ユーザー名、パスワードを入力してサインインします。
-
『AWSマネジメントコンソール』画面にある「サービスを検索」にLambdaと入力し、検索結果から《Lambda》をクリックし、Amazon Lambda コンソール(https://console.aws.amazon.com/lambda/)を開きます。
-
- 関数名:voice-message-infomation
-
「関数コード」に初期で登録されているコードを削除して、上記voice-message-infomationをコピー&ペーストします。
-
日本時間に対応させるため、画面を下にスクロールして「環境変数」に以下の値を入力し《保存》ボタンをクリックします。
- キー:TZ、値:Asia/Tokyo
-
LambdaにS3へのアクセス権を設定するため下にスクロールして「実行ロール」を表示し、《XXXXXXXXロールを表示》をクリックします。
- Lambdaを作成する毎に自動的にLambda名の付いたロールが一つ作成されます。
- Lambdaで利用しているAPIのアクセス権を付与します。
- 今回は、kinesis Video Streamsデータ取得用情報をS3に保存するための権限を付与します。
-
ビジュアルエディタが表示されるので《さらにアクセス許可を追加する》をクリックします。
- Lambdaの実行ログを記録するため、デフォルトでCloudWatch Logsの権限が付与されます。
-
- Bucket name:kinesis Video Streamsデータ取得用情報を保存するS3のバケット名+フォルダ名(バケット名とフォルダ名やフォルダ名とフォルダ名の間は『/』で連結する)
- Bucket name:my-baseXXXXXXXXX/my-voicemessageXXXXXXX/infomation
- Object name:すべてにチェックを付ける(テキストボックスには*が入力される)
- Bucket name:kinesis Video Streamsデータ取得用情報を保存するS3のバケット名+フォルダ名(バケット名とフォルダ名やフォルダ名とフォルダ名の間は『/』で連結する)