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

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

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

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

Скриншот терминала: команда curl с WebSocket-запросом к localhost:1961, ответ HTTP 500, сервер WebSocket++/0.8.2; часть токена скрыта.
Никак не удаётся заставить «Алису» принять команду

Комментарии 6

Мимо Проходил № 3
cURL же не умеет WebSocket из командной строки — https://curl.se/docs/websocket.html#comman … -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"