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 に答える