この問題を回避するために追加のロジックを使用していますが、返さreportPlaySeconds
れる値に関係なく呼び出されることに気付きました。interval
結果のドキュメントには次のように記載されています。
interval string(128) - 次のレポートまでに経過する秒数。注: 値 0 は、そのトラックの再生開始後にレポートを発行しないことを示します。
これはリクエストリクエストの例です:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.sonos.com/Services/1.1">
<SOAP-ENV:Header>
<ns1:credentials>
<ns1:deviceId>00-01-02-0A-0B-0C</ns1:deviceId>
<ns1:deviceProvider>Sonos</ns1:deviceProvider>
<ns1:sessionId>303-TEMP</ns1:sessionId>
</ns1:credentials>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:reportPlaySeconds>
<ns1:id>track_id</ns1:id>
<ns1:seconds>0</ns1:seconds>
</ns1:reportPlaySeconds>
</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:ns1="http://www.sonos.com/Services/1.1">
<SOAP-ENV:Body>
<ns1:reportPlaySecondsResponse>
<ns1:reportPlaySecondsResult>
<ns1:interval>0</ns1:interval>
</ns1:reportPlaySecondsResult>
</ns1:reportPlaySecondsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
ドキュメントを正しく理解していれば、<ns1:interval>0</ns1:interval>
手段を返すことreportPlaySeconds
は再度呼び出されるべきではありません。setPlayedSeconds
より詳細なレポートを計算するためにも使用しているため、追加のreportPlaySeconds
呼び出しは不要です。
何か案は?