Вы захотите использовать Custom SlotType, если хотите перехватить ввод чего-либо.
Когда вы «тренируете» этот SlotType, задавая ему значения, вы должны включать большое разнообразие, например числа, отдельные буквы, отдельные слова, фразы и целые предложения.
Но даже это не всегда улавливает то, что вы хотите. Так что еще лучше использовать лямбда-функцию для самостоятельного анализа и проверки всего ввода. И, скорее всего, просто установите значение вашего слота как всю строку ввода.
Например:
Пользователь: «Добавить в мои заметки»
Бот: «Хорошо, что вы хотите, чтобы я сохранил в ваших заметках? »
Пользователь:« Купите больше туалетной бумаги ».
Теперь пользователь ожидает, что вся фраза будет в заметке. Вам нужно будет использовать высказывания в своем Custom SlotType следующим образом:
Я хочу {note}
Go {note}
Buy {note}
{note}
В этих высказываниях иногда пропадают некоторые слова, а в примере в качестве значения слота указывается только «больше туалетной бумаги» без «покупки». Вот почему вы захотите самостоятельно проанализировать весь ввод. Таким образом, в Lambda вы можете получить весь ввод из inputTranscript
.
userInput = event.inputTranscript // "Buy more toilet paper"
slotNote = event.currentIntent.slots.note // "more toilet paper"
Затем вы можете сравнить эти два и выполнить причудливую проверку самостоятельно или просто сохранить введенные пользователем данные непосредственно в слот для заметок.
userInput = event.inputTranscript // "Buy more toilet paper"
event.currentIntent.slots.note = userInput // overwrites note slot value with correct full user input.