Alexa + Sonos: How it Works
Your Amazon Alexa devices are listening for you to say the wake word, “Alexa”. When they hear that word, the microphones record what you say and send the audio to the Amazon Alexa cloud to be translated.
That voice line turns into a string of text. The Amazon protocols determine if it’s meant for Amazon Alexa or for a Sonos player. If it’s for Sonos, that text is then sent directly, and securely, over to the Sonos cloud to be turned into a command using our own codes.
Finally, the Sonos intended command goes down to the system.
Want to try it out?
Here are some fun commands to try. I like starting with:
“Alexa, play some salsa in the kitchen.”
Ryan, after reading your opening post, I can only say that Alexa and Sonos do not always “just work.”
I have had numerous times where Alexa stops responding to my Sonos Ones/Sonos Beam setup. There is not always a Sonos app software update (software updates sometimes cause Alexa glitches; I am not sure why, but I now always check if Alexa is acting glitchy to see if an update is needed). Sometimes there is a Sonos software update, but it doesn’t always fix Alexa’s lack of response to my Sonos Ones and Sonos Beam.
The only sure-fire way I have found to get Alexa functioning again is the nuclear option: deregistering all devices via the alexa.amazon.com website, disabling the Sonos skill, removing Alexa from all rooms/Sonos speakers, signing out of all Sonos and Amazon products, restarting my phone … and painstakingly adding it all back again. But why is this necessary?
Again, why is this necessary? I have seen numerous complaints on here about these issues--Alexa and Sonos not communicating properly. Alexa was working fine, but now she doesn’t respond to Sonos.
The fix is for the Sonos developers to take these complaints seriously and work with the appropriate Amazon dev team to get to the bottom of why these glitches happen. In my case, sometimes they appear to affect one or two skills, but if left unchecked, it ends up affecting all skills; i.e., a nonresponsive Alexa that needs the nuclear option in order to once again function with Sonos.
Some interesting discussion in this podcast with Patrick Spence: https://www.recode.net/2018/2/2/16961978/sonos-patrick-spence-apple-homepod-alexa-virtual-assistants-too-embarrassed-swisher-goode-podcast
Right around :32 minute mark, he teases about Alexa controlling everything Sonos does, evens hints at Apple Music being controlled by Alexa. Possible? Maybe...
I highly doubt it given the Sonos One still seems incapable of playing audio for any added Alexa skills. She responds like she will play the request but then you get silence. A bit like the Sonos support team, it looks like they're going to respond to this issue (since October) but then silence...
It must be your pleasant attitude when dealing with people on the forum - Reap what you sow!
Interesting theory. So you're saying that my antagonistic posts are the cause of the Sonos One not working as advertised? Wouldn't that cause a temporal paradox? How would they know I would respond that way when they're not working, and how can I be sure my response was not triggered by the fact they're not working? Maybe Alexa can time travel?
Yes guilty m'laud for some snippy posts, but there are several threads asking about this, some have been going since October, and in at least one of those it is stated that this functionality indeed does not yet work on the Sonos One (see below).
https://en.community.sonos.com/amazon-alexa-and-sonos-229102/sonos-one-not-playing-alexa-output-6792472
Despite this, there are other threads that suggest if you get the silent treatment from Alexa, reset everything and delete everything, and disable and re-enable everything, clear your caches, browse in private mode and change your social security number and... it won't change a thing!
So that was the reason I was grumpy... honestly I am not a complete douche, but it's kind of like when you call tech support for your internet service provider and they make you clear your cache, reset your browser (and forget everything) and reinstall Windows/macOS and buy a new laptop and go on a diet for 3 weeks... and then after you've tried everything they ask, they finally say "there's an outage in your area"... If that doesn't frustrate you, I bow to your superior disposition, I really do.
-Peace
Hi Mike, try "Alexa, stop." If that doesn't work, "Alexa, stop in the ...."
You can also use "pause" instead of "stop".
So for example: I am running a connect amp, into a receiver which powers my in-ceiling speakers. I also have an echo/dot somewhere in the house. Can I say, Alexa, play "xxx" in the kitchen?
Because in theory, Alexa now communicates via wi-fi to the Sonos cloud. So does that work with the amp? Or only physical speakers? Hopefully this makes sense?
Makes total sense. The commands are sent to the Sonos cloud, then down to your players over the internet and network. Strictly speaking, Alexa doesn't even know the difference between your Kitchen CONNECT:AMP or a PLAY:1 called Kitchen. It's just looking for a Sonos player with that name.
Those commands will work great for you. The Alexa device in the Kitchen just needs to be online, same as your CONNECT:AMP.
Wow!
Yes, if you have an Alexa device that can hear you, you can control any of your associated sonos devices.
Awesome news! Thank you Airgetlam and Ryan S!
I can enable two rooms to play from Pandora if I ask Alexa separately, i.e., one at a time. Is there something I'm missing to play in each room with just one command?
Thanks.
Grouping functionality is not in this release, though it may be planned for the future. For now, you need to Group via the app, then you can use a voice command to either room and it will play in both. Or vice versa, voice to play in a room, then Group via the app.
Is there an Alexa command to have Sonos "TV" audio play?
Is it possible to tell Alexa to play the same music/song/playlist in multiple rooms or "all"?
Is it possible to tell Alexa to play a *Sonos* playlist?
Is there an Alexa command to have Sonos "TV" audio play?
Is it possible to tell Alexa to play the same music/song/playlist in multiple rooms or "all"?
Is it possible to tell Alexa to play a *Sonos* playlist?
1. No. Alexa doesn't understand that your player has a TV input right now.
2. Not yet, but we'd love to add that one day.
3. Nope. Again, something we'd like to see for the future. Alexa doesn't have direct access right now to your favorites or library.
#1 is really unfortunate. The main thing I do is swap between TV and Music/Live Radio audio on my Sonos speakers.
I hope that comes in a future update.
Glad to see my employer, iHeartRadio is there and that feature works really well. 🙂
In other words, if you say 'Alexa, play Tom Petty". Alexa will see that you Tom Petty Songs in your Amazon library, then tell Sonos to play Tom Petty songs from your Amazon library. On the other hand, if you want to don't have Amazon Prime, but have Tom Petty in your NAS library, Alexa doesn't know this, so can't tell Sonos what to do (even though Sonos would know what to do if you searched on the Sonos app)
That makes me think that there are, or will be, some more 'stated' features, that the interface isn't completely stateless.
It'll start playing in all the rooms that are grouped with that player. If you just want to play in that room, you'll need to separate the group out. We'd love to add some grouping features one day, so stay tuned. The skill will get better and have more features over time.
I get that grouping/ungrouping is not yet available through voice, but I have to say that this seems like the wrong default behavior. I'd much rather have it be that if I specifically tell Alexa to play music in a given room that it would play in that room and that room alone (breaking any existing groups if necessary) and then I could use the app or the new long-press feature on the speakers to add additional rooms to create a new group if I want.
I know that, at least in my household, if someone says "Alexa, play rock music in the kitchen" and music starts playing in the bedrooms upstairs, they are going to think that something is broken.
More importantly, we've got a lot of people in our house using Sonos throughout the day, so I'm not usually in a position to know or remember how the speakers are grouped at any given time. Even if I understand how the functionality works, I'm not going to feel comfortable saying "Alexa, play rock music in the kitchen" if there is a risk that it might start blaring music upstairs where a kid might be napping or my spouse might be working, etc. So it seems like with this default behavior, I'm going to need to launch the Sonos app to check the grouping before issuing any voice commands, which kind of defeats the purpose of voice control...
Note that the way I thought grouping would work is that the Sonos speakers would integrate with the Alexa's own multi-room playback grouping.
https://www.theverge.com/2017/8/29/16219978/amazon-echo-multi-room-music-playback-how-to
Those groups do look like they are intended to be static (e.g., a "Downstairs" group with multiple devices).
Personally, that would be ideal for me. I don't actually need to ability to create custom groups on-the-fly using the voice interface. But I would like the ability to issue commands to start playing music in only a single room (i.e., "play X in the kitchen") or among commonly grouped sets of rooms (i.e., "play X downstairs," "play X everywhere," ...).
To be honest, I don't stream much, but I play a lot from an NAS, which isn't yet fully supported by this release. But I'm pleased. I can do 90% of what I need to do via voice, and the rest works in the controller, the same as it did before. As has been pointed out, volume, next, previous, start, pause, all work via voice, if you've already started playing on the app.
Is it perfect right now? Nope, don't think so. But it's a huge step forward, and what they're going to learn based on the thousands/millions of users now using it will be very helpful in the long term.
I hope you can wait it out to bear the benefits.
How can you do 90% now from a NAS when a local
Library is not supported by Alexa, sort, amazon
I notice the with Dot, Sonos will only work in the few countries where Amazon has released Alexa.
Does this limitation apply to Sonos One as well?
And seeing how alike the One is to the play 1, are the heard of music sound quality improvements carried over to installed play 1 units?
And Bruce, many thanks for the PM heads up!
No, play cannot be initiated via voice control for unsupported services. However, once you initiate playback via the Sonos app, basic play/pause/skip/volume controls work via voice for any service and or source.
For example I should be able to have a stereo pair in my Living Room, a single speaker in my kitchen and another in my bedroom. I should be able to say Alexa play music in entire house (or something similar) and have all 4 speakers play.
If you want to group ungroup rooms etc, then you will need to follow the guides that have been published in the past by these two people:
https://github.com/rgraciano/echo-sonos
https://github.com/jishi/node-sonos-http-api
Requires some work to set up, but once done you will have all the functionality you want. Grouping, ungrouping, spotify etc.
I am quite astounded that the multi million dollar companies Amazon and Sonos spent a year in development and announced with much fanfare, a system that has only half the functionality of the one above which was put together by amateur programmers and released over a year ago.
This isnt some form of "entitlement" either, its just that with amateur programming able to deliver the functionality of grouping and ungrouping, accessing local music and spotify, I was obviously expecting the release from in house professionals to match the existing amateur functionality in a slicker more straight forward setup. How very wrong I was.
Ill be back to setting up the systems above again, because they offer MUCH more functionality than this official release.
Heck, Amazon and Sonos could have just bought this setup off the amateur programmer, wrapped it in their own systems to avoid the need for people to set it up themselves, delivered lots more functionality and released it six months ago. Did they even bother to look what people were currently doing?
From what I saw from my alexa app, the Sonos doesn't appear on the Alexa multiroom group, though the Sonos system(room name), appeers on the Alexa Devices.
So I assume initially, it cannot be group to an alexa multiroom group along side with the echo devices.
hope this helps
Did this amateur code also allow Alexa to work with users music libraries as well? Currently that is a pathetic deal breaker for me with the new Alexa feature
Yes it does.
Full current list of abilities from this github code is below.
(read and then wonder as I do why giants like Amazon and Sonos couldn't have this in their official release after working on it for a year - when anyone who follows this code can have it working in about an hour or so).
List of features below taken from here: https://github.com/rgraciano/echo-sonos
Music Services
echo-sonos supports Apple Music, Spotify, Deezer, Deezer Elite, Sonos playlists, Sonos favorites, SiriusXM, the local Sonos music library, and configurable node-sonos-http-api presets.
Sonos Playlists: "Alexa, ask sonos to start playlist MY PLAYLIST in the ROOM"
Sonos Favorites: "Alexa, ask sonos to play favorite MY FAVORITE in the ROOM"
Music services: "Alexa, ask sonos to change music to SERVICE" (SERVICE = Presets, Library, Apple, Spotify, Deezer, or Elite)
SiriusXM: "Alexa, play SiriusXM channel CHANNEL in the ROOM"
SiriusXM: "Alexa, play SiriusXM station STATION in the ROOM"
node-sonos-http-api Presets: "Alexa, ask sonos to play Rock" (queues a node-sonos-http-api macro that sets up speaker/volume/service configuration)
Sonos Rooms and Groups
echo-sonos can default to controlling a specific room, to save you some talking. It will also remember the last room that was used in a normal command, and use that room in future commands.
Change room: "Alexa, ask sonos to change room to ROOM"
Change room and service: "Alexa, ask sonos to change room to ROOM and music to SERVICE"
Add room to the group: "Alexa, ask sonos to join NEW_ROOM to the ROOM"
Remove room from the group: "Alexa, ask sonos to ungroup ROOM"
Playing Music
Play songs from an artist: "Alexa, ask sonos to play ARTIST NAME in the ROOM"
Play songs from an album: "Alexa, ask sonos to play album ALBUM NAME in the ROOM"
Play a song: "Alexa, ask sonos to play the song SONG NAME in the ROOM"
Play "radio" songs like this artist: "Alexa, ask sonos to play ARTIST NAME radio in the ROOM"
Play more "radio" songs like this song: "Alexa, play more songs by this artist in the ROOM"
Play more "radio" songs like this track: "Alexa, play more songs like this in the ROOM"
Next: "Alexa, ask sonos go to the next track in the ROOM"
Previous: "Alexa, ask sonos to go back in the ROOM"
Clear queue: "Alexa, ask sonos to clear the queue in the ROOM"
What's playing: "Alexa, ask sonos what's playing in the ROOM"
Controlling Music
Pause: "Alexa, ask sonos to pause in the ROOM"
Pause all: "Alexa, ask sonos to pause all"
Resume: "Alexa, ask sonos to resume in the ROOM"
Resume all: "Alexa, ask sonos to resume all"
Mute: "Alexa, ask sonos to mute in the ROOM"
Unmute: "Alexa, ask sonos to unmute in the ROOM"
Repeat: "Alexa, ask sonos to turn repeat [on,off] in the ROOM"
Shuffle: "Alexa, ask sonos to turn shuffle [on,off] in the ROOM"
Crossfade: "Alexa, ask sonos to turn crossfade [on,off] in the ROOM"
Volume up or down (single room): "Alexa, ask sonos to turn it [up,down] in the ROOM"
Volume up or down (all in group): "Alexa, ask sonos to turn it [up,down] in the ROOM group"
Set volume (single room): "Alexa, ask sonos to change the volume to 22 in the ROOM"
Set volume (all in group): "Alexa, ask sonos to change the volume to 22 in the ROOM group"
Enter your username or e-mail address. We'll send you an e-mail with instructions to reset your password.