是否有办法将LEX的输入笔录转换为lambda,然后允许connect抓取该笔录并将其设置为contact属性?

问题描述 投票:1回答:1

我下面有一个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"
}
amazon-web-services aws-lambda amazon-dynamodb amazon-lex amazon-connect
1个回答
0
投票

[记录事件时,您应该能够看到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中保存和处理输入。

© www.soinside.com 2019 - 2024. All rights reserved.