如何从smapi服务器触发云队列?

时间:2019-05-04 17:58:23

标签: sonos

尝试在Sonos上配置音乐服务。我一直在遵循Sonos编程收音机指南。

https://developer.sonos.com/build/content-service-add-features/add-programmed-radio/

但不确定要使播放器使用清单中声明的​​端点,smapi服务器应该返回什么。

这将是此图中的第三步。

https://developer-assets.ws.sonos.com/doc-assets/prog_radio_seq10_review.png

我尝试将radio添加为itemType并使用某些现有类型,但到目前为止,我还没有让播放器向云队列服务器发出任何请求。

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ns2:getMetadataResponse
            xmlns:ns2="http://www.sonos.com/Services/1.1">
            <ns2:getMetadataResult>
                <ns2:index>0</ns2:index>
                <ns2:count>2</ns2:count>
                <ns2:total>2</ns2:total>
                <ns2:mediaCollection>
                    <ns2:id>smapicontainer:31</ns2:id>
                    <ns2:itemType>radio</ns2:itemType>
                    <ns2:title>radio collection</ns2:title>
                </ns2:mediaCollection>
                <ns2:mediaMetadata>
                    <ns2:id>smapicontainer:32</ns2:id>
                    <ns2:itemType>radio</ns2:itemType>
                    <ns2:title>radio metadata</ns2:title>
                </ns2:mediaMetadata>
            </ns2:getMetadataResult>
        </ns2:getMetadataResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

期望看到一些针对无线电类型的端点呼叫。在清单中声明。清单似乎配置正确,因为在播放示例音轨时确实会调用/ radio / timePlayed。

{
  "schemaVersion": "1.0",
  "endpoints": [
    {
      "type": "radio",
      "uri": "https://13467fb8.ngrok.io/flight/radio"
    },{
      "type": "reporting",
      "uri": "https://13467fb8.ngrok.io/flight/radio"
    }
  ],
  "presentationMap": {
    "uri": "https://13467fb8.ngrok.io/flight/assets/presentationmap.xml",
    "version": 2
  },
  "strings": {
    "uri": "https://13467fb8.ngrok.io/flight/assets/strings.xml",
    "version": 2
  }
}

使用具有itemType程序的mediaMetaData更新了smapi响应。似乎仍然缺少某些东西,因为清单“ radio”端点确实阻止了对smapi服务器的调用。但是它仍然不会向与无线电关联的端点发出任何请求。选择项目时,我收到“无法播放所选项目”的警报。

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ns2:getMetadataResponse
            xmlns:ns2="http://www.sonos.com/Services/1.1">
            <ns2:getMetadataResult>
                <ns2:index>0</ns2:index>
                <ns2:count>3</ns2:count>
                <ns2:total>3</ns2:total>
                <ns2:mediaMetadata>
                    <ns2:id>prad:32</ns2:id>
                    <ns2:itemType>program</ns2:itemType>
                    <ns2:title>radio channel a</ns2:title>
                </ns2:mediaMetadata>
                <ns2:mediaMetadata>
                    <ns2:id>smapicontainer:33</ns2:id>
                    <ns2:itemType>program</ns2:itemType>
                    <ns2:title>radio channel b</ns2:title>
                </ns2:mediaMetadata>
                <ns2:mediaMetadata>
                    <ns2:id>radio:34</ns2:id>
                    <ns2:itemType>program</ns2:itemType>
                    <ns2:title>radio channel c</ns2:title>
                </ns2:mediaMetadata>
            </ns2:getMetadataResult>
        </ns2:getMetadataResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

以下是我可以生成到清单文件中端点的唯一流量。 没有无线电类型,但是如果我播放smapi示例服务器中包含的示例轨道之一,则确实可以获得一些报告。 image of traffic to the endpoint

2 个答案:

答案 0 :(得分:0)

您应该为mediaMetadata返回getMetadataResponse对象的数组,其中itemType的{​​{1}}。参见https://musicpartners.sonos.com/node/286

答案 1 :(得分:0)

您需要在无线电和报告端点的某处添加版本号。有关详细信息,请参见Sonos Music API service reporting and manifest file