Пользовательский навык Alexa

Что такое пользовательский навык ioBroker Alexa?

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

Используя имя вызова i o Broker, вы можете поручить Alexa выполнить определенные задачи или получить информацию из вашей системы ioBroker.

Функции и возможности

Функция ioBroker Custom Alexa Skill позволяет использовать индивидуальные голосовые команды для умного дома, запрашивать данные о состоянии датчиков, например, о температуре или состоянии окон, управлять сложными сценами и процедурами, а также интегрировать их с внешними службами с помощью скриптов ioBroker. Его можно использовать параллельно с навыком ioBroker.iot.

Настройка пользовательского навыка Alexa ioBroker

Установите адаптер ioBroker.iot: Пользовательский навык работает только с адаптером ioBroker.iot. Если он еще не установлен, его можно установить через административную область ioBroker в разделе Адаптер → Адаптер ioBroker.iot.

Включить пользовательские навыки Alexa

Откройте приложение Amazon Alexa или перейдите на страницу Alexa Skills.

Поиск навыка ioBroker Custom.

Активируйте навык и привяжите свою учетную запись Amazon Alexa к ioBroker.

Пользовательский навык — используйте собственные голосовые команды

Ответы по пользовательскому навыку можно обрабатывать двумя способами:

  • с помощью команды text2
  • с JavaScript

Текст2команда

Если в интерфейсе конфигурации определен экземпляр text2command, запрос отправляется этому экземпляру.

text2command необходимо настроить для распознавания ожидаемой фразы и генерации соответствующего ответа.

JavaScript

Обработать запрос можно напрямую с помощью скрипта. Это параметр по умолчанию, если не выбран ни один экземпляр text2command.

Если экземпляр text2command определен, этот экземпляр должен предоставить ответ, а ответ от скрипта игнорируется.

Адаптер предоставляет сведения в двух состояниях с разным уровнем детализации:

  • smart.lastCommand содержит полученный текст, включая информацию о типе запроса (намерение). Пример: askDevice Status Газонокосилка
  • smart.lastCommandObj содержит строку JSON, которую можно преобразовать в объект, содержащий следующую информацию:
    • words: Содержит полученные слова в виде массива
    • intent: Содержит тип запроса. Возможные значения:
      • v1 Навык: askDevice, controlDevice, actionStart, actionEnd, askWhen, askWhere, askWho
      • v2 Skill: queryIntent (если весь произнесенный текст был захвачен), controlDevice (для резервного варианта с частичным текстом)
    • deviceId: содержит идентификатор устройства, с которого был отправлен запрос (если предоставлен Amazon, в противном случае пусто)
    • deviceRoom: содержит связанный идентификатор комнаты, который можно настроить в пользовательском интерфейсе администратора IoT ioBroker для собранных идентификаторов устройств.
    • sessionId: Содержит идентификатор сеанса навыка, должен быть одинаковым, если несколько команд произносятся подряд (если предоставлено Amazon, в противном случае пусто)
    • userId: содержит идентификатор пользователя владельца устройства или взаимодействующего пользователя (если предоставлен Amazon, в противном случае пусто)
    • userName: содержит связанное имя пользователя, которое можно настроить в пользовательском интерфейсе администратора IoT для собранных идентификаторов пользователей.

Более подробную информацию о распознавании слов и различных типах запросов Alexa Custom Skill можно найти по следующей ссылке: Форум ioBroker

Возврат ответа через состояние smart.lastResponse

Ответ должен быть записан в состояние smart.lastResponse в течение 200 мс. Это может быть как простая текстовая строка, так и объект JSON.

  • Если это текстовая строка, она будет отправлена обратно навыку в качестве ответа.
  • Если ответ представляет собой объект JSON, можно использовать следующие ключи:
    • responseText: Содержит текст, который возвращается в Amazon
    • shouldEndSession: логическое значение, которое определяет, завершается ли сеанс после ответа или остается открытым для дальнейшего ввода.
    • sessionId: Содержит идентификатор сеанса, для которого предназначен ответ. Если не указано иное, используется первый ожидаемый сеанс.

Отправьте ответ через сообщение экземпляру IoT

Экземпляр iot ioBroker также принимает сообщение с именем alexaCustomResponse, содержащее ключевой ответ. Этот объект может содержать ключи responseText, shouldEndSession и sessionId.

Экземпляр IoT не отправляет ответ на сообщение.

Пример скрипта для обработки текстов

// Wichtig: ack=true setzen
on({ id: 'iot.0.smart.lastCommand', ack: true, change: 'any' }, obj => {
    // Die Antwort muss innerhalb von 200ms vorbereitet und in iot.X.smart.lastResponse geschrieben werden
    setState('iot.0.smart.lastResponse', 'Received phrase is: ' + obj.state.val); // Wichtig: ack=false (Standard)
});

Пример скрипта для обработки JSON-объектов

// Wichtig: ack=true setzen
on({ id: 'iot.0.smart.lastCommandObj', ack: true, change: 'any' }, obj => {
    // Die Antwort muss innerhalb von 200ms vorbereitet und in iot.X.smart.lastResponse geschrieben werden
    const request = JSON.parse(obj.state.val);
    const response = {
        responseText: 'Received phrase is: ' + request.words.join(' ') + '. Bye',
        shouldEndSession: true,
        sessionId: request.sessionId,
    };

    // Antwort über State zurückgeben
    setState('iot.0.smart.lastResponse', JSON.stringify(response)); // Wichtig: ack=false (Standard)

    // Oder alternativ als Nachricht zurückgeben
    sendTo('iot.0', 'alexaCustomResponse', response);
});

Примеры голосовых команд

Запросы статуса:

  • «Алекса, спроси ioBroker о температуре в гостиной».
  • «Алекса, спроси ioBroker, открыты ли ворота гаража».

Команды управления:

  • «Алекса, скажи ioBroker, что я возвращаюсь домой».
  • «Алекса, попроси ioBroker включить мою кофемашину».

Сцены и рутины:

  • «Алекса, скажи ioBroker, что я иду спать».

Преимущества ioBroker Alexa Custom Skills

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