Я пытаюсь управлять своим динамиком Sonos One (Gen 1) через облачные API, но весь запрос POST возвращает 500 Internal Server Error без сообщения об ошибке.
Я сгенерировал access_token, как описано в документации, исмог получить информацию о «домохозяйствах» внутри моей сети, наконец, и идентификатор группы, и идентификатор игрока.
Я попытался получить информацию о статусе группы, выполнив GET для следующей конечной точки иэто сработало: https://api.ws.sonos.com/control/api/v1/groups/{{group_id}}/playback
То же самое с другими GET-запросами (например, groupVolume).Проблема возникает, когда я пытаюсь сделать POST (например, изменить громкость или воспроизвести аудиоклип), он возвращает 500 Internal Server Error без какого-либо тела.
Для всех запросов, которые я использую Postman, включая заголовки:
- Тип содержимого: application / json
- Авторизация: Носитель [токен]
- Длина содержимого: ???(автоматически вставляется почтальоном)
, а для тела запроса change volume я выбираю параметр raw и затем выбираю JSON (приложение/ json) опция.
Тело:
{
"volume": 80
}
Конечная точка следующая: https://api.ws.sonos.com/control/api/v1/groups/{{group_id}}/groupVolume
Я также пытался управлять игроком с помощью узла( Package ) и он работает.
Также пытался использовать Wireshark, чтобы увидеть, какие запросы выполняет пакет node-sonos, но, похоже, он не использует Cloud API.
Я ожидаю, что проигрыватель изменит громкость, но API ничего не делает и не возвращает никаких сообщений об ошибках.
РЕДАКТИРОВАТЬ: Запрос cURL от POSTMAN следующий:
curl -X POST \
https://api.ws.sonos.com/control/api/v1/players/<playerID>/audioClip \
-H 'authorization: Bearer XXX' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-H 'postman-token: XXX' \
-d '{
"appId": "edu.myInstitute.myName",
"clipType": "CUSTOM",
"name": "Test",
"streamUrl": "http://...mp3_file_url"
}'