У меня есть лямбда-функция, которую я написал для получения данных от Amazon Lex, которая при запуске перейдет в имеющуюся у меня DynamoDB и запросит в таблице информацию, предоставленную через Lex. Однако в настоящее время я не могу заставить запрос работать, так как он не показывает результаты, которые я ищу. Как я могу получить информацию, собранную через lex, и сопоставить то, что они сказали, с некоторой информацией в «Динамо»? (у Dynamodb есть список из более чем 400 возможных элементов, из которых они могут выбрать, ЛОТ из них похожи)
Я попытался отсканировать, и это не сработало для того, для чего он мне нужен. Это не даст правильные данные, которые были заданы в параметре теста.
'use strict';
const aws = require('aws-sdk');
const dynamo = new aws.DynamoDB();
module.exports.handler = function(intentRequest, context, callback) {
console.log(intentRequest);
dynamo.query({
TableName:'ServiceOfferings',
KeyConditionExpression: '#name = :searchName',
ExpressionAttributeNames: {
"#name": "name",
},
ExpressionAttributeValues: {
":searchName":{"S":"PCC"} //PCC is an example of what i need searched through lex. That value needs to be dynamic.
}
},(err, data)=>{
console.log(data);
callback(err, data);
});
};
Вот ответ, который я получаю от параметра теста:
Response:
{
"Items": [],
"Count": 0,
"ScannedCount": 0
}
Request ID:
"ca1d95ce-161e-487d-8ca5-db80d5799724"
Function Logs:
START RequestId: ca1d95ce-161e-487d-8ca5-db80d5799724 Version: $LATEST
2019-10-03T14:59:00.139Z ca1d95ce-161e-487d-8ca5-db80d5799724 INFO { 'dialog-state': 'ReadyForFulfillment',
'input-transcript': 'PCC',
slots: { list: 'PCC' },
'intent-name': 'getServiceOffering' }
2019-10-03T14:59:00.899Z ca1d95ce-161e-487d-8ca5-db80d5799724 INFO { Items: [], Count: 0, ScannedCount: 0 }
END RequestId: ca1d95ce-161e-487d-8ca5-db80d5799724
REPORT RequestId: ca1d95ce-161e-487d-8ca5-db80d5799724 Duration: 1034.16 ms Billed Duration: 1100 ms Memory Size: 128 MB Max Memory Used: 92 MB Init Duration: 414.90 ms