Проблемы с намерениями в Alexa

amazon alexa

1556 просмотра

3 ответа

10061 Репутация автора

Я играл с навыками Алексы и хотел сделать некоторую базовую домашнюю автоматизацию. Я определил следующую базовую схему намерений для запуска:

{
  "intents": [
    {
      "intent": "Lock",
      "slots": [
        {
          "name" : "Door",
          "type" : "AMAZON.LITERAL"
        }
      ]
    },
    {
      "intent": "Unlock",
      "slots": [
        {
          "name" : "Door",
          "type" : "AMAZON.LITERAL"
        }
      ]
    }
  ]
}

А затем примерные высказывания:

Lock lock {slot value|Door}
Lock lock door {slot value|Door}
Lock lock the door {slot value|Door}
Unlock unlock {slot value|Door}
Unlock unlock door {slot value|Door}
Unlock unlock the door {slot value|Door}

Идея состоит в том, что имена дверей должны быть произвольными, поскольку они не будут известны заранее. Тем не менее, когда я пробую фразу вроде:

lock door front

Он находит правильное намерение, но значение слота "Дверь" содержит дополнительные слова:

"intent": {
  "name": "Lock",
  "slots": {
    "Door": {
      "name": "Door",
      "value": "door front"
    }
  }
}

Это нормально, или это побочный продукт использования AMAZON.LITERAL? Я также попробовал пользовательский тип слота, но названия устройств с несколькими словами, кажется, не работают с ним, и он всегда использует последнее слово в этом случае.

Автор: Matt Источник Размещён: 18.07.2016 04:05

Ответы (3)


2 плюса

1245 Репутация автора

Решение

Я бы определил высказывания как заканчивающиеся словом «дверь»:

Lock lock {slot value|Door} door

Итак, пользователь должен будет сказать:

Alexa, ask Lock lock kitchen door

Таким образом, вы, скорее всего, получите только одно слово в качестве типа двери. Затем вы анализируете строку. Возможно, вы захотите проверить не на точное равенство, а на включение. Я должен признать, что я никогда не использую тип LITERAL, так как это не рекомендуется учебниками Amazon, поэтому я бы определил пользовательский тип и перечислил возможные значения для типа двери.

Включение / выключение ламп / термостатов это отдельная история. Вы должны использовать Alexa SmartHome API для этого. Затем «включить / выключить», «установить значение» и т. Д. Становятся зарезервированными ключевыми словами для Alexa. В API SmartHome не будет подобных намерений (в вашем вопросе), никаких высказываний и пользовательских типов слотов. Все, что вам нужно, это реализовать обработку Discoveryзапроса и Controlзапроса. Я думаю, что пользователь устанавливает имена устройств в официальных приложениях / учетных записях производителя устройств, и когда Alexa обнаруживает устройство (по Discoveryзапросу), навык просто выбирает описания устройств с сервера поставщиков и предоставляет его для Alexa. Именно так Alexa узнает названия доступных устройств.

Автор: rightaway717 Размещён: 19.07.2016 08:45

1 плюс

77 Репутация автора

Обновление: комментарий, который я сделал об уходе LITERAL, датирован. Спасибо за указание на это. Литерал останется. Но Alexa (и Lex) действительно возвращают значения слотов, которых нет в списке слотов. Я вижу это часто. Мило.

Для тех, кто может наткнуться на этот вопрос, знайте, что навыки, использующие AMAZON.LITERAL , больше не будут утверждаться, начиная с декабря 2016 года. Вместо этого вы должны использовать пользовательские слоты . Интересно, что в документации говорится, что даже при использовании пользовательских слотов вы можете получать слова, не определенные в пользовательском списке, как с литералом. Я не проверял это, но это может пригодиться.

Автор: ScottU Размещён: 02.11.2016 11:02

1 плюс

118 Репутация автора

Alexa останавливается с первым найденным совпадением. Поэтому вам нужно переместить более общие высказывания после более конкретных.

Блокировка двери {значение слота | Дверь} Блокировка блокировки {значение слота | Дверь}

Таким образом, «заблокировать дверь спереди» совпадает со слотом = «спереди».

Если у вас есть какие-либо высказывания без слотов, не забудьте поставить их в последний раз.

Автор: DavidCC Размещён: 01.02.2017 07:33
Вопросы из категории :
32x32