Это мой персональный дневник. Пишу, по большей части, про историю, свою жизнь и немного про программирование.

«Алиса» молчит

Как я уже писал у меня возникла задача, в рамках которой хочется научиться управлять «Алисой» из локальной сети. В прошлый раз я остановился на том, что научился искать «Алисы» по имени сервиса, а вчера вечером решил попробовать подключиться и подать на одну из домашних «Алис» какую-нибудь команду.

Поковырял первую попавшуюся библиотеку, выглядит несложно — получаем любым способом OAuth-токен «Яндекса» (я взял от «Яндекс.Музыки»), с его помощью запрашиваем структуру для работы с колонками, формируем команду и шлём её на порт 1961 по протоколу WebSocket.

Бился-бился, получаю ошибку. К сожалению, я поленился качать себе библиотеку и формировать запрос через неё. Мне казалось, что тут приключение на пятнадцать минут, но ошибся. Надо было начинать с библиотеки. Учитывая, что сейчас даже самые простые библиотеки пишут, подражая Льву Толстому, иногда очень сложно сходу разобраться что там формируется в конце. Возможно упустил какое-то поле.

Никак не удаётся заставить «Алису» принять команду
2 комментария
Евгений Степанищев 25 дн

Вроде проще библиотеку поставить и вывести потом пакет, который получился.

Мимо Проходил 23 дн

cURL же не умеет WebSocket из командной строки — https://curl.se/docs/websocket.html#command-line-tool-websocket

Его конечно можно заставить отправить HTTP-запрос на Upgrade до WebSocket, и он даже получит ответ, но дальше ничего сделать нельзя будет, т. к. отправлять и получать нужно будет уже WS-фреймы.

Вот пример успешного апгрейда для веб-версии WhatsApp, после которого ничего не произойдёт:

curl -​-no-buffer -​-http1.1 -i -H "Connection: Upgrade" -H "Host: web.whatsapp.com" -H "Origin: https://web.whatsapp.com" -H "Sec-Websocket-Key: nzja97iN36/4denMGUoFLw==" -H "Sec-Websocket-Version: 13" -H "Upgrade: websocket" "https://web.whatsapp.com/ws/chat"

Евгений Степанищев 23 дн

Не умеет, но мне достаточно пока — 500-то не должно быть.