0

我目前正在研究新的 SONOS 集成。我已经构建了此处概述的最低限度的功能,并且 python 测试套件通过了所有测试:

SUITE Summary: Passed. Passed: 60, Warnings: 0, Failed: 0.

我在新 SID 上添加了自定义服务描述,包括服务名称、两个端点、轮询间隔、匿名身份验证、正确的字符串 URL、音乐服务容器类型和未选择的功能。

我可以在我的 SONOS 客户端中添加我的服务,但收到消息“无法浏览音乐”。我知道可能有很多事情在起作用,但是这里有什么跳出来的吗?我的大脑疲惫不堪,我希望我错过了一些明显的东西!:)

谢谢你的帮助!

编辑:

这是一个示例“根”getMetadata 请求:

<?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>

及其结果:

<?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>

这些以及其他函数都通过了 python 自检。¯\_(ツ)_/¯

4

2 回答 2

1

我终于在 SONOS 中拥有了我们的播放列表和曲目!

首先,SOAP 对我来说是新的。以前没有使用过它,我正在用 PHP 构建我们的 SONOS 集成。我使用的是 NuSOAP 库,我通过它构建了自己的 WSDL 文件,然后在我的 SOAP 服务器下使用该文件。

相反,我现在使用 API 文档中提供的 WSDL 并使用标准 PHP SoapServer 类从头开始重建我的 SOAP 服务器。这导致了 WSDL 结构和服务器响应的一些细微变化。

如果有人在入门时遇到困难,我建议使用 SONOS 自己的 WSDL,如下所示:

$server = new SoapServer(
    'sonos.wsdl', 
    array('encoding'=>'ISO-8859-1')
    );

不要忘记更新文件底部的 wsdl:service 值:

  <soap:address location="{endpoint}"/>

我不知道的是,接近这样的解决方案有助于突出显示您错误命名或省略参数或响应值的任何地方,因为 SOAP 服务器已经知道数据的样子(而不是依赖于您自己的自定义 WSDL 文件)。

于 2015-07-03T04:45:54.747 回答
0

“无法浏览音乐”通常意味着 Sonos 无法连接到您的服务器。如果您从音乐服务中删除您的帐户并尝试再次登录,它也不会让您登录。如果您成功通过了测试,请尝试再次删除并添加您的服务并检查所有 URL。希望能帮助到你。

于 2015-06-30T15:41:11.507 回答