AWS Lex + Lambda - перехватывает весь следующий ответ пользователя независимо от контекста - без определения примеров высказываний? - PullRequest
0 голосов
/ 29 июня 2018

Рассмотрим следующий сценарий (U = Пользователь, L = Lex):

U1: Привет

L1: Здравствуйте, пожалуйста, дайте мне ваше имя, чтобы начать.

U2: Боб

L2: Боб, подумай над вопросом: какого цвета небо?

U3: небо обычно голубое, но иногда небо красное.

Система считывает базу данных вопросов и случайным образом выбирает один из них для представления пользователю. Это делается через AWS Lambda, и вопрос представляется пользователю в сообщении L2.

Можно ли сказать, что «следующий ответ пользователя должен рассматриваться как ответ на вопрос без определения высказываний и т. Д.?» Это потому, что вопросы, которые задает бот, могут сильно отличаться.

Мне нужен способ передать весь блок U3 обратно в Lambda для обработки. Как бы я достиг этого независимо от контекста? (Я использую python для лямбды)

Спасибо

1 Ответ

0 голосов
/ 30 июня 2018

Лекс всегда передает весь ввод пользователя в Request под полем inputTranscript.

Формат событий Lex-Lambda :

inputTranscript - Текст, используемый для обработки запроса.

Если ввод был текстом, поле inputTranscript содержит текст, который был введен пользователем.

Если вход был аудиопотоком, поле inputTranscript содержит текст, извлеченный из аудиопотока. Это текст, который фактически обрабатывается для распознавания намерений и значений слотов.

Это формат запроса Lex, полученного Lambda как event:

{
  "currentIntent": {
    "name": "intent-name",
    "slots": {...},
    "slotDetails": {...},
    "confirmationStatus": "(None, Confirmed, or Denied)"
  },
  "bot": {...},
  "userId": "XXXX",
  "invocationSource": "(FulfillmentCodeHook or DialogCodeHook)",
  "outputDialogMode": "(Text or Voice)",
  "messageVersion": "1.0",
  "sessionAttributes": {...},
  "requestAttributes": {...}
  "inputTranscript": "Text of full user's input utterance",
}

Таким образом, в Lambda вы можете получить доступ к inputTranscipt с помощью:

userInput = event.inputTranscript
...