質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon Connect

Amazon Connectとは、AWSが提供するオムニチャネルのクラウド型コンタクトセンターを簡単に構築できるサービスです。コンタクトセンターの運営に必要なPBX/IVR/CTIなどの機能を備えており、低コストでスピーディに構築することができます。

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

1回答

2447閲覧

AWS SDKでAmazonConnectの通話の連絡先属性が取得できない

hagiohagi

総合スコア2

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon Connect

Amazon Connectとは、AWSが提供するオムニチャネルのクラウド型コンタクトセンターを簡単に構築できるサービスです。コンタクトセンターの運営に必要なPBX/IVR/CTIなどの機能を備えており、低コストでスピーディに構築することができます。

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2021/09/02 07:08

編集2021/09/07 03:38

AWS LambdaでAWS-SDK forJavaScriptを利用して関数を作成しています。

AmazonConnectの通話が記録されたS3の.wavファイルのメタデータ値を使用して、.wavファイルの元となった通話の連絡先属性を取得しようとしています。

Lambda関数は以下の通りです。

Object.defineProperty(exports, "__esModule", { value: true }); const AWS = require("aws-sdk"); const connect = new AWS.Connect(); const s3 = new AWS.S3(); exports.handler = async (event, context) => { await Promise.all(event.Records.map(async (record) => { const bucket = event.Records[0].s3.bucket.name; const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/+/g, ' ')); var params = { Bucket: bucket, Key: key, }; const metadata = await s3.headObject(params).promise(); console.log(metadata); const contactid = metadata.Metadata['contact-id']; const instanceid = metadata.Metadata['organization-id']; var params = { InitialContactId: contactid, InstanceId: instanceid, }; console.log(params); const connectdata = await connect.getContactAttributes(params).promise(); console.log(connectdata); })); };

ConnectクラスのGetContactAttributesメソッドを使用して連絡先属性を取得しようとしましたが、内容が取得できていないように思えます。

console.log(connectdata) { Attributes: {} }

wavファイルのJSON値は以下の通りです(特定できてしまう情報はXで隠してます)。

{ AcceptRanges: 'bytes', LastModified: 2021-09-01TXX:XX:XX.000Z, ContentLength: 809644, ETag: '"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"', ContentType: 'audio/wav', ServerSideEncryption: 'aws:kms', Metadata: { 'contact-id': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', 'aws-account-id': 'XXXXXXXXXXXX', 'organization-id': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' }, SSEKMSKeyId: 'arn:aws:kms:ap-northeast-1:XXXXXXXXXXXX:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' }

AWSのドキュメントを見る限り、パラメータにInitialContactIdとInstanceIdの値があれば取得できるように思えたのですが、原因が何か知りたいです。
https://docs.aws.amazon.com/ja_jp/connect/latest/APIReference/API_GetContactAttributes.html#connect-GetContactAttributes-response-Attributes

また、AmazonConnectの問い合わせの検索履歴をみたところ、.wavファイルのメタデータであるcontact-idと該当する通話情報のコンタクトidは一致していることも確認できました。

{ Attributes: {} }が表示されてしまう原因が分からない状態ですので、何かアドバイスいただけると幸いです。

---追記(2021.9.7)---

連絡先情報取得のgetContactAttributesメソッドはこちらのドキュメントを参考にしております。
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Connect.html#getContactAttributes-property

また、関係ないかもしれませんが、AmazonConnectのインスタンス側で当該のLambda関数を登録しております。

現時点でも問題解決に至っていないので、何かアドバイスいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

こちらの問題ですが、自己解決いたしました。

以下の記事を参考にしたところで気がついたのですが、
https://dev.classmethod.jp/articles/amazon-connect-lambda/
ConnectクラスのGetContactAttributesメソッドはJSONのAttributesの値のみを取得するようです。ドキュメントの読み込み不足で問い合わせフローから送られてくるJSONそのものを取得するものだと誤認しておりました。

Attributesの値は、AmazonConnectの問い合わせフローの「コンタクト属性の設定」のブロックでkey-valueペアを定義して保存することで設定できることが分かりました。

投稿2021/09/14 09:02

hagiohagi

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問