Is playTrackAndRestore() not supported by the built-in Sonos driver?
I'm porting BigTalker from ST and a beta tester is reporting the following error: errorjava.lang.IllegalArgumentException: Command 'playTrackAndRestore' is not support by device. on line 3593 (pageTalkNow)
Line 3593 (pageTalkNow) is related to BigTalker calling the expected playTrackAndRestore function for a musicPlayer device.
The actual called code in BigTalker is device.playTrackAndRestore("uri" :uri, "duration" :duration, volume)
Everything listed as a command in that handler is a custom command, ie not part of the capability.
There's another reason I chose not to impement it in the sonos handler that being the json_object parameter is not suficiently defined, as such I have no control over what gets sent to it.
I can look at adding this in the future, but it's not been a high priority item so far.
I'm just trying to port BigTalker. I have testers with Samsung M3s and M6s that work but they also have Sonos which isn't working and if included breaks it from functioning. I also have VLCThing (also ported) which also includes this function and I can use it to play TTS mp3's as well.
Do you have suggestions for working around this for the Sonos driver? I really hate to code the app for specific devices. I'd like to continue coding for capabilities (musicPlayer or speechSynthesis) and send the required commands to make TTS happen for those. It's never been an issue before so I suspected that these functions were standard for musicPlayer devices across the board.
@mike.maxwell Any update to @rayzurbock question surrounding the Sonos driver not working correctly? I have both a Samsung M3 and many Sonos Play 1's and the playTrackAndRestore is not working correctly. The M3 works flawlessly.
Are the same parameters supported for other built-in musicPlayer devices? Are there specific parameters supported by all in this call (for example, perhaps they do not all support duration, but do (url,volume) or perhaps (url) only?
Insert a log.debug("URL=${state.url1Data}") and see what is being cast to playTrackAndRestore. Perhaps it's not formatted correctly or is not the url that you think it should be.