Я заметил кое-что странное при тестировании моей модели взаимодействия с набором навыков Alexa.
Я определил собственный тип слота, например:
CAR_MAKERS Mercedes | BMW | Volkswagen
Схема моего замысла была примерно такой:
{
"intents": [
{
"intent": "CountCarsIntent",
"slots": [
{
"name": "CarMaker",
"type": "CAR_MAKERS"
},
...
с примерами высказываний, таких как:
CountCarsIntent Add {Amount} cars to {CarMaker}
Теперь, при тестировании в консоли разработчика, я заметил, что могу писать такие вещи, как:
"Add three cars to Ford"
И он действительно правильно это проанализирует! Хотя «Форд» ни разу не упоминался в модели взаимодействия! Лямбда-запрос:
"request": {
"type": "IntentRequest",
...
"intent": {
"name": "CountCarsIntent",
"slots": {
"CarMaker": {
"name": "ExpenseCategory",
"value": "whatever"
},
...
Это меня действительно удивляет, потому что документация по типы пользовательских слотов довольно ясно говорит о том, что слот может принимать только значения, перечисленные в модели взаимодействия.
Теперь кажется, что значения также анализируются динамически! Это новая функция или мне что-то не хватает?