Общая модель
Навык Алисы не управляет устройствами напрямую. Он отправляет запрос на сервер 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_light | native.relay_set | native | device:corridor_light:action:set:value:1 |
turn_off, corridor_light | native.relay_set | native | device:corridor_light:action:set:value:0 |
dim, level=70 | standard.dimmer_set | standard | device:living_lamp:action:dim:value:70 |
Коды ошибок
400_INVALID_SLOT— невалидные параметры от Алисы404_DEVICE_NOT_FOUND— устройство не найдено в JSONB-дереве503_NO_NETWORK_AVAIL— транспорт UDP 9009 недоступен
Принципы
- Никаких облачных сценариев управления: вся логика локальна.
- Сервисный пин и сессии — на стороне 4DUK; Алиса только инициирует запрос.
- Обновление сценариев — только по запросу и под контролем заказчика.