我下面有一个lambda,它可以从DynamoDB获取项目,并将其返回以进行连接……不过,我似乎无法克服inputTranscript。有什么方法可以在当前的lambda中实现它,以便Connect可以访问它?我对此深感沮丧,因为我在文档中尝试过的所有内容都不适合我。
const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB();
exports.handler = function(event, context, callback) {
console.log(`DEBUG:\t Event`, JSON.stringify(event, null, 4));
var params = {
Key: {
"name": {
"S": '"' + event.slots.list + '"'
}
},
TableName: 'ServiceOfferings'
};
dynamodb.getItem(params, function(err, data) {
if (err) {
console.log("ERROR:\t", err);
callback(err);
} else {
console.log(data);
if (data.Item) {
console.log('data returned from DynamoDB ', JSON.stringify(data));
callback(null, {
ServiceOffering: data.Item.name.S.slice(1, -1)
});
}
else {
console.log("no callback number found for intent");
callback(new Error("no callback number found for intent"));
}
}
});
};
我用来确保lambda正常运行的测试实例如下:
{
"dialog-state": "ReadyForFulfillment",
"input-transcript": "my printer is not working",
"slots": {
"list": "Re-IP Project - Printers"
},
"intent-name": "getServiceOffering"
}
测试后的响应显示为:
{
"ServiceOffering": "Re-IP Project - Printers"
}
[记录事件时,您应该能够看到inputTranscript
被传递到Lambda。因此,您只需要从事件中删除它,然后按照需要进行操作即可。
const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB();
exports.handler = function(event, context, callback) {
console.log(`DEBUG:\t Event`, JSON.stringify(event, null, 4));
var inputTranscript = event.inputTranscript
...
callback(null, {
ServiceOffering: data.Item.name.S.slice(1, -1),
inputTranscript: inputTranscript
});
[这包括您的Connect回调中的inputTranscript(我假设),您可以使用Set Attribute块在Connect中保存和处理输入。