I am currently working on a new SONOS integration. I have built the bare minimum functions outlined here and have had the python test suite pass all tests:
SUITE Summary: Passed. Passed: 60, Warnings: 0, Failed: 0.
I have added a custom service description on a new SID, with a Service Name, both endpoints, a polling interval, anonymous authentication, the correct strings URL, a Music Service container type and no selected capabilities.
I can add my service in my SONOS client, but receive the message "Unable to browse music". I know there could be any number of things at play, but does anything jump out here? My brain is frazzled and I expect I'm missing something obvious! :)
Thanks for your help!
EDIT:
Here's an example "root" getMetadata request:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:SOAPServerWSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getMetadata>
<id xsi:type="xsd:string">root</id>
<index xsi:type="xsd:integer">0</index>
<count xsi:type="xsd:integer">10</count>
<recursive xsi:type="xsd:boolean">false</recursive>
</ns1:getMetadata>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
And its result:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://api-server.dev/index.php/sonos" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getMetadataResponse xmlns:ns1="urn:SOAPServerWSDL">
<getMetadataResult xsi:type="tns:metadata">
<index xsi:type="xsd:integer">0</index>
<count xsi:type="xsd:integer">2</count>
<total xsi:type="xsd:integer">2</total>
<mediaCollection xmlns="" xsi:type="tns:mediaCollection">
<id xsi:type="xsd:string">genres</id>
<title xsi:type="xsd:string">Playlists</title>
<itemType xsi:type="xsd:string">collection</itemType>
</mediaCollection>
<mediaCollection xmlns="" xsi:type="tns:mediaCollection">
<id xsi:type="xsd:string">my_playlists</id>
<title xsi:type="xsd:string">My Playlists</title>
<itemType xsi:type="xsd:string">collection</itemType>
</mediaCollection>
</getMetadataResult>
</ns1:getMetadataResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
These, and the other functions all pass the python self-test. ¯\_(ツ)_/¯