Есть ли способ получить входной транскрипт из LEX в лямбду, который затем позволяет подключиться, чтобы захватить этот транскрипт и установить его в качестве атрибута контакта? - PullRequest
1 голос
/ 28 октября 2019

У меня есть эта лямбда ниже, которая получает элементы из DynamoDB и возвращает его для подключения просто отлично ... однако, я не могу перевести inputTranscript. Есть ли способ, которым я мог бы реализовать это в моей текущей лямбда, чтобы 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"));
        }
    }
  });
};

Экземпляр теста, который я использую для проверки правильности работы лямбды, выглядит следующим образом:

{
  "dialog-state": "ReadyForFulfillment",
  "input-transcript": "my printer is not working",
  "slots": {
    "list": "Re-IP Project - Printers"
  },
  "intent-name": "getServiceOffering"
}

Ответ после тестирования такой:

{
  "ServiceOffering": "Re-IP Project - Printers"
}

1 Ответ

0 голосов
/ 07 ноября 2019

Когда вы регистрируете событие, вы должны видеть, что inputTranscript передается на вашу лямбду. Поэтому вам просто нужно извлечь его из события и сделать с ним то, что вы хотите.

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

Это включает в себя inputTranscript в вашем обратном вызове Connect (я полагаю), и вы можете использовать блок Set Attributeсохранить и обработать ввод в Connect.

...