Вот описание того, как это сделать в Lex.
Из вашего примера:
Пользователь: «Пожалуйста, не забудьте напомнить мне о завершении проекта»
Это пользовательский ввод, также называемый Utterance .
Сначала вы создаете Намерение . Вы можете назвать это, как вы сделали: remind_me
Затем вы предоставляете Лексу намерение-высказывания , или фразы, которые пользователь скажет, чтобы вызвать это намерение. Возможно, что-то вроде:
"remember this for me"
"make a reminder"
"can you remind me about something"
"please remind me"
Это просто вызовет намерение, и затем вы можете попросить пользователя запомнить информацию.
Любое значение, которое вы хотите сохранить в Lex, называется Slot Value , потому что оно хранится в Slot , которое в основном является только термином Алекса и Лекса для «переменной».
Вы можете назвать слот: reminder
Если ваше намерение срабатывает, то вы получаете явный слот и спрашиваете пользователя:
«Хорошо, что бы вы хотели, чтобы я вам напомнил?»
Вы «учите» Лекса, что слушать, предоставляя все варианты высказываний, которые, как вы думаете, может сказать пользователь, и просто помещаете SlotName в фигурные скобки {} внутри высказывание в том месте, где они могут произнести слово или фразу, которую вы хотите сохранить в слоте .
"remind me about {reminder}"
"please remember {reminder}"
"make sure to remind me {reminder}"
Это могут быть даже намеренные высказывания, поэтому вы фиксируете значение reminder
без необходимости вызывать его с вопросом.
Затем Lex предоставит вам именно то, что вы ищете, и больше, я упросту JSON, который Lex создает для вас:
}
"currentIntent": {
"name": "remind-me",
"slots": {
"reminder": "about getting the project done"
}
},
"inputTranscript": "please make sure to remind me about getting the project done"
}
Для просмотра полного формата см. Функция ввода-вывода Lex Lambda и формат ответа
Обратите внимание, что Lex даже предоставляет полное пользовательское высказывание в inputTranscript
. Это отлично подходит для выполнения вашего собственного анализа и проверки.