Alexa - значения захвата, не определенные в пользовательском типе

У моего приложения Alexa есть намерение купить с пользовательским типом данных, который имеет некоторые значения, скажем

транспортные средства: [автомобиль, автобус]

Если пользователь говорит

Я хочу купить велосипед

Alexa по умолчанию использует резервное намерение без информации о том, что сказал пользователь.

Как я могу зафиксировать значение «велосипед», чтобы я мог ответить

в настоящее время мы не поддерживаем "велосипеды".


person zacurry    schedule 01.06.2018    source источник


Ответы (2)


Вы должны быть в состоянии захватить его уже при условии, что ваше намерение правильно настроено в интерфейсе навыка.

Я не знаю точно, как настроен ваш навык или какой язык вы используете для разработки, поэтому я не могу сказать вам код для доступа к нему, но запрос JSON будет выглядеть примерно так:

"request": {
  "type": "IntentRequest",
  "intent": {
    "name": "BuyIntent",
    "confirmationStatus": "NONE",
    "slots": {
      "vehicleType": {
        "name": "vehicleType",
        "value": "bike",
        "resolutions": {
          "resolutionsPerAuthority": [
            {
              "authority": "amzn1.er-authority.echo-sdk.[skill-id].vehicleType",
              "status": {
                "code": "ER_SUCCESS_NO_MATCH"
              },
            }
          ]
        }
      }
    }
  }
}

Если вы сможете понять, как получить доступ к свойству «значение» в вашем слоте для типов транспортных средств, вы получите значение, указанное пользователем! Вам просто нужно записать его в переменную и интерполировать в строку, которую вы отправляете обратно в Alexa, чтобы говорить.

Причина, по которой это работает даже без определенного типа слота, заключается в том, что Alexa фактически хранит два разных типа значения для слота. Одно из значений, о котором я упоминал ранее, хранит то, что на самом деле сказал пользователь. Второй находится в разделе «разрешения» слота и содержит значение типа слота, которое Alexa сопоставила с речью пользователя. Когда совпадений не найдено, Alexa по-прежнему возвращает слот со значением того, что сказал пользователь, и устанавливает код состояния разрешения на «ER_SUCCESS_NO_MATCH», что означает, что соответствующий тип слота не найден.

Что касается того, почему ваш навык получает резервный запрос вместо одного для вашего намерения, я не могу сказать вам с информацией, которую вы предоставили, но отсутствие определенного типа транспортного средства для «байка» не является причиной. Есть ли у вас настроенное высказывание для намерения купить, которое соответствует фразе, которую вы используете для взаимодействия с навыком? Что-то вроде: "Я хочу купить {vehicleType}"

person Josh Hadik    schedule 01.06.2018

Пользовательские типы слотов будут работать со значениями, которые не определены явно. Таким образом, вы должны иметь возможность сказать I want to buy a bike, даже если bike не относится к типу слота vehicles.

Насколько мне известно, единственными альтернативами являются типы слотов AMAZON.LITERAL и AMAZON.SearchQuery.

person SimpleJ    schedule 01.06.2018