API диалогового навыка Алисы — 4DUK

Только то, что реально нужно для интеграции

Общая модель

Навык Алисы не управляет устройствами напрямую. Он отправляет запрос на сервер 4DUK, который маппит команду на native/standard-функции из JSONB-дерева и формирует UDP-команду на порт 9009.

Степаныч, давай охолаживай: Алиса — это голос. А транспорт и логика — у нас.

Запрос от Алисы к серверу 4DUK

POST /api/v1/alice/intent

{
  "request": {
    "original_utterance": "включи свет в коридоре",
    "type": "SimpleUtterance",
    "nlu": {
      "intents": {
        "turn_on": {
          "slots": {
            "device_name": { "value": "corridor_light" },
            "action": { "value": "on" }
          }
        }
      }
    }
  },
  "session": {
    "session_id": "sess_abc123",
    "user_id": "user_xyz",
    "application_id": "4duk_alice_skill"
  },
  "version": "1.0"
}

Ответ сервера 4DUK

{
  "response": {
    "text": "Свет в коридоре включён.",
    "tts": "Свет в коридоре включён.",
    "end_session": false
  },
  "session": {
    "session_id": "sess_abc123",
    "user_id": "user_xyz",
    "application_id": "4duk_alice_skill"
  },
  "version": "1.0"
}

Маппинг команд на JSONB-дерево

Алиса (слот)JSONB-функцияТипUDP-пакет
turn_on, corridor_lightnative.relay_setnativedevice:corridor_light:action:set:value:1
turn_off, corridor_lightnative.relay_setnativedevice:corridor_light:action:set:value:0
dim, level=70standard.dimmer_setstandarddevice:living_lamp:action:dim:value:70

Коды ошибок

Принципы