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

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

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

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

Amazon Connect

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

Amazon S3

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

895閲覧

S3のテキストに入力されている電話番号のLambdaの判定について

akira777

総合スコア8

AWS Lambda

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

Amazon Connect

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

Amazon S3

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

2クリップ

投稿2022/11/22 01:06

編集2022/11/22 04:46

イメージ説明お世話になっております

電話番号(+81377775555)から発信した場合でも、下記のS3のリストにないにもかかわらず、
AmazonConnect側で一致する判定をしてしまいます。
エラーとかも表示されず、通常通り着信もしますので、Lambdaのコードが間違っているのでしょうか?

S3
+81312345678
+81355557777
+81387654321

Lambdaコード

const aws = require('aws-sdk');
const s3 = new aws.S3();
const bucket = 'phonenumber-tset';

exports.handler = async function(event,context) {

console.log(JSON.stringify(event));

// 電話番号の取得
// フロー制御
const key1 = event.Details.Parameters.objectName1
const PhoneNumber1 = await s3.getObject({Bucket: bucket,Key: key1}).promise();
const phone1 = PhoneNumber1.Body.toString();

return {phone1};

};

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

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

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

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

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

yu_1985

2022/11/22 03:24

この関数ではS3バケット上のファイルと番号を突き合わせているところが見当たらないように思えるのですが、処理内容を具体的に説明してもらえますか? 「S3」とだけ書いてありますけど、S3の何と突き合わせているのでしょうか。 vent.Details.Parameters.objectName1と書かれていますが、objectName1という項目はAmazon Connect のイベント内に存在しないのではないでしょうか
akira777

2022/11/22 04:49

ご返答、ありがとうございます。 objectName1は、「AWS Lambda 関数を呼び出す」で設定しており、S3の「test」フォルダの配下に電話番号というテキストを3番号記載しております。 よろしくお願いいたします。
guest

回答1

0

一致も何も、処理の中身で電話番号の比較を行っていません。
発信者の番号をどこからも取得していませんし、単にS3バケットに配置されているファイルを呼び出してその中身を表示しているだけではないですか?
Lambda Functionの処理内容を再確認してください。

ちなみに、発信者番号で処理を分岐するということは以下の記事で具体的にどうやっているか書いています。
ここではS3バケットではなくDynamodbに番号のリストのテーブルを作ってそこと比較しています。
[Amazon Connect] 発信者番号でフローの処理を分岐する
処理自体はさほど難しいものではないので参考にしてみてください。

投稿2022/11/22 05:15

yu_1985

総合スコア7447

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

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

akira777

2022/11/22 05:50

ご返信、ありがとうございます。 参考のURLを見て、コードを追加いたしましたが。 コンタクト属性を確認するの個所で「phone1」の値を設定しておりますが、下記のエラーとなります。 何が原因でエラーとなるのでしょうか? よろしくお願いいたします。 { "errorType": "TypeError", "errorMessage": "Cannot read properties of undefined (reading 'phone1')", "stack": [ "TypeError: Cannot read properties of undefined (reading 'phone1')", " at Runtime.exports.handler (/var/task/index.js:17:27)", " at processTicksAndRejections (node:internal/process/task_queues:96:5)" ] } --------------Lambdaコード------------------------------- const aws = require('aws-sdk'); const s3 = new aws.S3(); const bucket = 'phonenumber-tset'; exports.handler = async function(event,context) { console.log(JSON.stringify(event)); // 電話番号の取得 // フロー制御 const key1 = event.Details.Parameters.objectName1 const PhoneNumber1 = await s3.getObject({Bucket: bucket,Key: key1}).promise(); const phone1 = PhoneNumber1.Body.toString(); // 発信者番号が一覧に存在するかどうかの確認 const result = s3.Items.phone1( item => { return (item.PhoneNumber1 == phone1); }); return {phone1}; };
yu_1985

2022/11/22 05:55

デバッグを一つ一つこちらに投げるのではなく、エラーメッセージを読みながら適宜ご自分でデバッグしてください。 少なくとも見てすぐわかる問題としては、mapを返そうとしているのにvalueを何も設定していないことです。 これは言語の文法の問題なのでここで詳細には説明しません。
akira777

2022/11/24 05:08

ありがとうございます。 下記のエラーですが何かの設定が不足していると思われるのですが、何が不足しているのか調べても分かりません。 よろしくお願いいたします。 "errorType": "ReferenceError", "errorMessage": "require is not defined in ES module scope, you can use import instead",
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問