为什么Kendra查询返回未定义的“ ResultItems”?

问题描述

目标

将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
                    });
};