问题描述
目标
将Amazon Lex与Kendra连接
问题
.query()
应该返回ResultItems
,但它返回的ResultItems
未定义。
进度
lambda:
var kendra = require("aws-sdk/clients/kendra");
var kendraClient = new kendra({apiVersion: "2019-02-03",region: "us-west-2"});
// var AWS = require("aws-sdk");
// var kendraClient = new AWS.Kendra();
exports.handler = async (event) => {
// Todo implement
try{
const kendraResponse = await kendraClient.query(
{
IndexId: process.env.KENDRA_INDEX,QueryText: event.inputTranscript,QueryResultTypeFilter: "QUESTION_ANSWER",PageNumber: 1
})
console.log("this is kendraResponse",kendraResponse);
console.log("This is event",event);
const response = {
"dialogAction":
{
"fulfillmentState":"Fulfilled","type":"Close","message":
{
"contentType":"PlainText","content": kendraResponse.ResultItems ? "Got the response": "Sorry,unable to find the results"
}
}
}
return response;
} catch (error) {
console.log(error)
}
};
Kendra响应:
带有配置字段的超长JSON对象
TIA
解决方法
请进行以下更改以使其正常工作。
var kendra = require("aws-sdk/clients/kendra");
var kendraClient = new kendra({apiVersion: "2019-02-03",region: "us-west-2"});
exports.handler = function (event) { // use function here..
try {
var params = {
IndexId: process.env.KENDRA_INDEX,QueryText: event.inputTranscript,QueryResultTypeFilter: "QUESTION_ANSWER",// make sure you have QA indexed
PageNumber: 1
};
kendraClient.query(params,function(err,data) {
if (err) console.log(err,err.stack); // an error
else console.log("Kendra result is",data); // successful response
});
};