Как динамически добавлять значения слотов к навыку alexa

Я новичок в разработке Alexa. Я успешно создал навык Alexa с лямбда-функцией AWS и кодом Node.js. Это моя намеренная схема.

{
  "intents": [
    {
      "slots": [
        {
          "name": "locationName",
          "type": "LOCATION_LIST"
        }
      ],
      "intent": "locationIntent"
    }
  ]
}

Также я использовал пользовательский тип слота «LOCATION_LIST» со следующими значениями.

kitchen
bedroom
bathroom
dining area

Работает нормально. Но мне нужно динамически добавлять дополнительные значения местоположения из моего собственного сервиса. Является ли это возможным?

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


person Abdul Manaf    schedule 19.10.2017    source источник


Ответы (3)


Да, возможно, удастся выполнить то, о чем вы просите.

Во-первых, давайте проясним кое-что о том, как работают слоты. Как описано в в этом Сообщение в блоге Alexa:

«Когда вы создаете пользовательский тип слота, ключевая концепция, которую необходимо понять, заключается в том, что это обучающие данные для НЛП Alexa (обработка естественного языка). Предоставляемые вами значения НЕ являются строгим перечислением или массивом, ограничивающим то, что пользователь может сказать. Это имеет два значения: 1) слова и фразы, не входящие в значения вашего слота, будут переданы вам; 2) ваш код должен выполнить любую требуемую проверку, если то, что сказано, неизвестно ".

Это означает, что вы МОЖЕТЕ получать слова в слоте, которые вы специально не указали в определении SLOT. Так что вам просто нужно предоставить достаточное количество примеров слов в списке SLOT, чтобы помочь движку Alexa NLP.

Я предлагаю вам поэкспериментировать с вашей текущей реализацией и попробовать заменить другое местоположение и посмотреть, сможет ли Alexa распознать и вернуть его. Попробуйте записать значение слота в журнал и посмотрите. Ты будешь приятно удивлен.

person Ron Lisle    schedule 21.10.2017

Нет, вы не можете добавлять слоты динамически. Может быть, очень короткий ответ, но это факт.

Amazon также не имеет слотов по умолчанию, чтобы соответствовать вашим требованиям. Если это другие места, такие как город, то есть встроенные слоты, такие как AMAZON.City. Единственный возможный способ - добавить как можно больше локаций в ваш пользовательский слот. В настраиваемом слоте может быть не более 50 000 значений слотов (в сумме по всем настраиваемым слотам, используемым в модели взаимодействия).

https://developer.amazon.com/docs/custom-skills/custom-interaction-model-reference.html#custom-slot-type-values.

person Vijayanath Viswanathan    schedule 19.10.2017
comment
Вы правы, что новые слоты нельзя добавлять динамически. Но Абдул, похоже, спрашивает о дополнительных значениях слотов, а не о добавлении новых слотов или типов слотов. Так что эта часть возможна, как описано в моем ответе. - person Ron Lisle; 21.10.2017
comment
Итак, я запутался, могу ли я получить значения слотов, сгенерированные из моего кода? - person Muky; 08.01.2019