Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

ASSкона динамические сценарии

Материал из Лаборатория Девелики
Это утверждённая версия страницы. Она же — наиболее свежая версия.

Файл:Eva ae57081e image-20240424-164036.png Файл:Eva 060bbc67 image-20240424-165353.png Файл:Eva a914eda3 image-20240424-165446.png

Делаем динамический сценарий на базе Алисы и Яндекс диалогов. и https://app.aimylogic.com/

Регистрируемся в амилоджик

жмем создать бота.

в конструкторе.

бот ФАК.

задаем имя.

на вкладке мой бот жмем подключить канал.

Выбираем голосовой ассистент АЛИСА.

жмем Получить OAuth-токен

входим в наш аккаунт яндекса и получаем ключ типа

y0_AgAAAAB1qlUNAAT7owAAAAEC8a2xAAAlb1CJIxdFKao6zfW06hhBXo3Vpg

вставляем это в строчку токена.

жмем получить вебхук

https://bot.jaicp.com/chatapi/webhook/yandex/xjRgpeuE:5b07a5610b9bbcad4808e9c5d2a4c3f83827fc60

получаем ссылку

идем в диалоги яндекса

https://dialogs.yandex.ru/developer

жмем создать диалог. создать навык алисы.

выбираем имя навыка по которому будем включать его на колонке.

вставляем ссылку вебхука в строку

Backend

Webhook URL

выбираем тип доступа приватный.

заполняем остальные поля.

все говорилка готова.

для управления устройствами надо сделать еще несколько шагов.

скачиваем программу постман для анализа ответов апи и вынимания айди сценариев яндекса.

https://www.postman.com/downloads/

ставим ее.

вбиваем настройки урл для подключения метод запроса GET https://api.iot.yandex.net/v1.0/user/info

переходим на вкладку авторизации. выбираем тип авторизации BEARER TOKEN и вводим туда наш токен.

чтобы получить токен переходим по ссылке https://oauth.yandex.ru/client/new/

и регистрируем наше приложение выбираем галочку веб сервисы

https://oauth.yandex.ru/verification_code вставляем ссылку в поле для редиректа.

в поле доступ к данным надо вбить iot:view и iot:control !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

переходим на следующую страницу и находим поле

ClientID

копируем значение этого поля и вставляем в ссылку вместо <идентификатор_приложения>

https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор_приложения>

жмем авторизоваться.

и насм перекидывает на страницу с апи ключем

y0_AgAAAAB1qlUNAAuuLgAAAAEC9HhRAADxKIQfh8tKZqF43kFGhq9q2zAtGA к примеру.

именно это надо вписывать в программе постман в поле токен.

если все прошло хорошо и мы нажали в по постман кнопку сенд мы получим ответ в виде json

json

{

"status": "ok",

"request_id": "992554ed-ac4e-4a3d-b83b-db37423567d3",

"rooms": [

{

"id": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"name": "Новая комната",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"devices": [

"062fae49-5bbb-474e-a0d4-31ccc5d5f370",

"1a3a8b2a-50f6-4f73-9aa2-6094ee6b114e",

"1fa57928-61ad-488d-bce8-885630f07f64",

"3f500525-59ae-42af-9e20-809937bc6da6",

"4a83a6bb-09e2-40dc-9ad1-b9f6b6a4fed7",

"73fd46de-6f0b-4fb6-9f07-3e0df74b7d3d",

"86730238-9779-4caf-ba7e-499b15bba924",

"936242b0-391e-4891-b96f-50a9002588ed"

]

}

],

"groups": [],

"devices": [

{

"id": "062fae49-5bbb-474e-a0d4-31ccc5d5f370",

"name": "Контакт 1",

"aliases": [],

"type": "devices.types.sensor.open",

"external_id": "6",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [],

"properties": [

{

"type": "devices.properties.event",

"reportable": true,

"retrievable": true,

"parameters": {

"instance": "open",

"events": [

{

"value": "opened"

},

{

"value": "closed"

}

]

},

"state": {

"instance": "open",

"value": "closed"

},

"last_updated": 1713962105.2822993

}

]

},

{

"id": "1a3a8b2a-50f6-4f73-9aa2-6094ee6b114e",

"name": "Контакт 4",

"aliases": [],

"type": "devices.types.sensor.open",

"external_id": "9",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [],

"properties": [

{

"type": "devices.properties.event",

"reportable": true,

"retrievable": true,

"parameters": {

"instance": "open",

"events": [

{

"value": "opened"

},

{

"value": "closed"

}

]

},

"state": {

"instance": "open",

"value": "closed"

},

"last_updated": 0.0

}

]

},

{

"id": "1fa57928-61ad-488d-bce8-885630f07f64",

"name": "Контакт 2",

"aliases": [],

"type": "devices.types.sensor.open",

"external_id": "7",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [],

"properties": [

{

"type": "devices.properties.event",

"reportable": true,

"retrievable": true,

"parameters": {

"instance": "open",

"events": [

{

"value": "opened"

},

{

"value": "closed"

}

]

},

"state": {

"instance": "open",

"value": "closed"

},

"last_updated": 0.0

}

]

},

{

"id": "3053ae8d-9b78-46e3-8204-a813a054a358",

"name": "Станция Мини new",

"aliases": [],

"type": "devices.types.smart_speaker.yandex.station.mini_2_no_clock",

"external_id": "M10F31600HYSGG.yandexmini_2",

"skill_id": "Q",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": null,

"groups": [],

"capabilities": [],

"properties": [

{

"type": "devices.properties.event",

"reportable": true,

"retrievable": false,

"parameters": {

"instance": "voice_activity",

"events": [

{

"value": "speech_finished"

}

]

},

"state": null,

"last_updated": 0.0

}

],

"quasar_info": {

"device_id": "M10F31600HYSGG",

"platform": "yandexmini_2"

}

},

{

"id": "3f500525-59ae-42af-9e20-809937bc6da6",

"name": "Контакт 3",

"aliases": [],

"type": "devices.types.sensor.open",

"external_id": "8",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [],

"properties": [

{

"type": "devices.properties.event",

"reportable": true,

"retrievable": true,

"parameters": {

"instance": "open",

"events": [

{

"value": "opened"

},

{

"value": "closed"

}

]

},

"state": {

"instance": "open",

"value": "closed"

},

"last_updated": 0.0

}

]

},

{

"id": "4a83a6bb-09e2-40dc-9ad1-b9f6b6a4fed7",

"name": "Кнопка",

"aliases": [],

"type": "devices.types.sensor.open",

"external_id": "10",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [],

"properties": [

{

"type": "devices.properties.event",

"reportable": true,

"retrievable": true,

"parameters": {

"instance": "open",

"events": [

{

"value": "opened"

},

{

"value": "closed"

}

]

},

"state": {

"instance": "open",

"value": "closed"

},

"last_updated": 0.0

}

]

},

{

"id": "73fd46de-6f0b-4fb6-9f07-3e0df74b7d3d",

"name": "Реле 2",

"aliases": [],

"type": "devices.types.switch",

"external_id": "4",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [

{

"reportable": true,

"retrievable": true,

"type": "devices.capabilities.on_off",

"parameters": {

"split": false

},

"state": {

"instance": "on",

"value": false

},

"last_updated": 1713962111.255464

}

],

"properties": []

},

{

"id": "86730238-9779-4caf-ba7e-499b15bba924",

"name": "Реле 3",

"aliases": [],

"type": "devices.types.switch",

"external_id": "5",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [

{

"reportable": true,

"retrievable": true,

"type": "devices.capabilities.on_off",

"parameters": {

"split": false

},

"state": {

"instance": "on",

"value": false

},

"last_updated": 0.0

}

],

"properties": []

},

{

"id": "936242b0-391e-4891-b96f-50a9002588ed",

"name": "Реле 1",

"aliases": [],

"type": "devices.types.switch",

"external_id": "3",

"skill_id": "357e40f9-640d-462e-8c39-8ecdade9b611",

"household_id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"room": "9b0d06f2-3636-448d-b83a-8af6381cca44",

"groups": [],

"capabilities": [

{

"reportable": true,

"retrievable": true,

"type": "devices.capabilities.on_off",

"parameters": {

"split": false

},

"state": {

"instance": "on",

"value": false

},

"last_updated": 1713962410.168

}

],

"properties": []

}

],

"scenarios": [

{

"id": "2cc097e1-35f3-4869-ab50-c90bdb01ac46",

"name": "Реле",

"is_active": true

}

],

"households": [

{

"id": "5f771635-96b7-4634-aaf3-42d7991ca1f5",

"name": "Мой дом",

"type": "households.types.personal"

}

]

}

находим слово scenarios и видим сценарий созданный в алисе. нам нужно его id . копируем 2cc097e1-35f3-4869-ab50-c90bdb01ac46

это значение понадобится для управления устройствами через платформу амилоджик

https://app.aimylogic.com/

в сценарии амилоджика создаем http запрос.

с методом post в URL надо записать https://api.iot.yandex.net/v1.0/scenarios/cc097e1-35f3-4869-ab50-c90bdb01ac46/actions где cc097e1-35f3-4869-ab50-c90bdb01ac46 айди сценария в апи алисы

перейти на вкладку headers добавить заголовок Authorization с значением Bearer пробел наш ключ

где наш ключ в этом примере y0_AgAAAAB1qlUNAAuuLgAAAAEC9HhRAADxKIQfh8tKZqF43kFGhq9q2zAtGA

так мы сможем управлять СЦЕНАРИЯМИ АЛИСЫ из амилоджика

чтобы получить данные с датчика надо в сценарии амилоджика создаем http запрос.

Метод GET ссылка здесь после devices/ айди устройства которое достается в ПО постман.

https://api.iot.yandex.net/v1.0/devices/e62c7167-bcaf-466d-af99-67997a1bf3e2

записываем значение в переменную

не забываем в вкладке headers заполнить заголовок Authorization в значении Bearer пробел наш токен.

мы получили в переменной tvoc кусок json. теперь его надо распарсить.

этот код в блоке код вынимает значение датчика из json

$string=String($tvoc)
$word=$string.split("value")
$tv=$word[1].split(/:|}/)[1]

и записывает их в переменную TV

в блоке текста используем ее чтобы произносить показание датчика

"В девелике душно, концентрация твёрдой летучей органики $tv , давайте я открою окно"