Я пытаюсь сохранить значения, собранные с помощью Amazon Lex, в DynamoDB.Я сделал (или скопировал и изменил) функцию Lambda, которая, очевидно, не работает, но я действительно не понимаю, почему.Это ошибка, которую я получаю от Amazon Lex: «Произошла ошибка: неверный лямбда-ответ: получен ответ об ошибке от лямбды: обработано»
Все остальное работает нормально, я решил проблему с разрешениями и другие ошибки, которые я получил.
Когда я получаю эту ошибку, диалог находится в состоянии:
{
"dialogState": "ElicitSlot",
"intentName": "MCQ_A",
"message": "What is a black and white horse",
"messageFormat": "PlainText",
"responseCard": null,
"sessionAttributes": {},
"slotToElicit": "QB",
"slots": {
"QA": "4",
"QB": null,
"Session": "444"
}
}
// Вот моя лямбда-функция.Он написан на javascript, который я только что обнаружил, и который мне совершенно не нравится ^^ '
console.log('Loading event');
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
var tableName = "MCQ";
// Close dialog with the customer, reporting fulfillmentState of Failed or Fulfilled
function close(session_attributes, m) {
let callback_obj = {
sessionAttributes: session_attributes,
dialogAction: {
type: 'Close',
fulfillmentState: "Fulfilled",
message: m,
}
}
return callback_obj;
}
function storeRegistration(intent, callback) {
let userInfo = {};
// store every slot we received as part of registration
Object.keys(intent.slots).forEach((item) => {
console.log(item)
userInfo[item] = {"S": intent.slots[item]};
});
dynamodb.putItem({
"TableName": tableName,
"Item" : userInfo
}, function(err, data) {
if (err) {
console.log('Failure storing user info');
console.log(err);
callback(close(intent.sessionAttributes, {contentType: 'PlainText', content: "I am sorry, but something went wrong. Please try again."}));
} else {
console.log("Successfully Stored UserInfo");
callback(close(intent.sessionAttributes, {contentType: 'PlainText', content: "Thank you for attending the MCQ."}));
}
});
}
// --------------- Main handler -----------------------
// Route the incoming request based on intent.
// The JSON body of the request is provided in the event slot.
exports.handler = (event, context, callback) => {
console.log(event);
try {
storeRegistration(event, (response) => {callback(null, response)});
} catch (err) {
callback(err);
}
};
У вас есть идеи, что происходит?:) Заранее большое спасибо !!