I’ve built a voice-controlled Spotify automation using my new Home Assistant Voice PE and the Spotify Plus (SpotifyPlus Integration Big thanks to @thlucas ) integration. It lets you:
Play artists, songs, or playlists via natural commands (e.g., “Play the playlist ‘Workout’”, “Play party music”, “Play Coldplay”, “Start Apache radio”)
Control playback (pause, skip, shuffle, adjust volume).
Play curated content like Weekly or Favorite Songs or Podcasts
I have the following automations in place:
Voice: Play playlist
Voice: Change Volume
Voice: Play Radio from
Voice: Shuffle Playback
Voice: Play Podcast
Voice: Play Spotify
Voice: Pause Spotify
Voice: Play Music from
Voice: Next Song
Voice: Play Spotify Weekly
Voice: Play Song
Voice: Like Current Song
Voice: Play Spotify and Favorite Song
Example: Playlist v2
Command examples:
“Play the playlist ‘Chill Vibes’.”
“Start the playlist ‘Workout’.”
“Play ‘Party’ music on shuffle.”
“Play something else”
Here’s the concept for the “Voice: Play playlist” automation in German language:
alias: "Voice: Spiele Playlist - v2"
description: ""
triggers:
- trigger: conversation
command:
- >-
Spiel[e] [die] [eine] Playlist [mit] {playlist} [Musik] [in zufälliger
Reihenfolge] [zufällig]
- >-
Starte [die] [eine] Playlist [mit] {playlist} [Musik] [in zufälliger
Reihenfolge] [zufällig]
- >-
Leg [die] [eine] Playlist [mit] {playlist} [Musik] [in zufälliger
Reihenfolge] [zufällig] auf
- >-
Ich möchte [die] [eine] Playlist [mit] {playlist} [Musik] [in zufälliger
Reihenfolge] [zufällig] hören
- >-
Spiel [bitte] [die] [eine] Playlist [mit] {playlist} [Musik] [in
zufälliger Reihenfolge] [zufällig]
- >-
Lass [uns] [die] [eine] Playlist [mit] {playlist} [Musik] [in zufälliger
Reihenfolge] [zufällig] hören
- Spiel[e] [eine] andere Playlist
- Spiel[e] {playlist} [Musik]
- Spiel[e] andere Musik
- >-
Spiel[e] [die] Playlist {playlist} [in zufälliger Reihenfolge]
[zufällig]
- Spiel[e] {playlist} [in zufälliger Reihenfolge] [zufällig]
- Andere Playlist
- Andere Musik
conditions:
- condition: template
value_template: |
{{ not ('spotify' in trigger.sentence.lower() or
'weekly' in trigger.sentence.lower() or
'radio' in trigger.sentence.lower() or
'lieblingssongs' in trigger.sentence.lower() or
'lieblingsmusik' in trigger.sentence.lower() or
'podcast' in trigger.sentence.lower() or
'track' in trigger.sentence.lower() or
'lied' in trigger.sentence.lower() or
'musik von' in trigger.sentence.lower() or
'songs von' in trigger.sentence.lower() or
'Nachrichten' in trigger.sentence.lower() or
'radiosender' in trigger.sentence.lower() or
'track' in trigger.sentence.lower() or
'song' in trigger.sentence.lower()) }}
actions:
- action: script.play_spotify_on_lt12b_source
metadata: {}
data: {}
- choose:
- conditions:
- condition: template
value_template: >-
{{ 'zufällig' in trigger.sentence.lower() or 'zufälliger
reihenfolge' in trigger.sentence.lower() }}
sequence:
- data:
entity_id: media_player.spotifyplus_lt12b
shuffle: true
action: media_player.shuffle_set
- choose:
- conditions:
- condition: template
value_template: "{{ 'andere' in trigger.sentence.lower() }}"
sequence:
- data:
entity_id: input_number.voice_spotify_last_search_index
value: >-
{{ (states('input_number.voice_spotify_last_search_index') | int
+ 1) % 10 }}
action: input_number.set_value
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_lt12b
criteria: >-
{{ states('input_text.voice_spotify_last_search') |
regex_replace('zufällig|in zufälliger reihenfolge', '',
ignorecase=True) }}
limit: 10
response_variable: resultplaylist
default:
- action: input_number.set_value
metadata: {}
data:
value: 0
target:
entity_id: input_number.voice_spotify_last_search_index
- data:
entity_id: input_text.voice_spotify_last_search
value: >-
{{ (trigger.slots.playlist if trigger.slots and 'playlist' in
trigger.slots else 'Party') | regex_replace('zufällig|in zufälliger
reihenfolge', '', ignorecase=True) }}
action: input_text.set_value
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_lt12b
criteria: >-
{{ (trigger.slots.playlist if trigger.slots and 'playlist' in
trigger.slots else 'Party') | regex_replace('zufällig|in zufälliger
reihenfolge', '', ignorecase=True) }}
limit: 10
response_variable: resultplaylist
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_lt12b
data:
media_content_id: >-
spotify:playlist:{{
resultplaylist['result']['items'][states('input_number.voice_spotify_last_search_index')
| int]['id'] }}
media_content_type: playlist
mode: single
English translation, not tested:
alias: "Voice: Play Playlist - v2"
description: ""
triggers:
- trigger: conversation
command:
- >-
Play [the] [a] playlist [with] {playlist} [music] [in random order]
[randomly]
- >-
Start [the] [a] playlist [with] {playlist} [music] [in random order]
[randomly]
- >-
Put on [the] [a] playlist [with] {playlist} [music] [in random order]
[randomly]
- >-
I want to listen to [the] [a] playlist [with] {playlist} [music] [in
random order] [randomly]
- >-
Please play [the] [a] playlist [with] {playlist} [music] [in random
order] [randomly]
- >-
Let's listen to [the] [a] playlist [with] {playlist} [music] [in random
order] [randomly]
- Play [a] different playlist
- Play {playlist} [music]
- Play different music
- >-
Play [the] playlist {playlist} [in random order] [randomly]
- Play {playlist} [in random order] [randomly]
- Different playlist
- Different music
conditions:
- condition: template
value_template: |
{{ not ('spotify' in trigger.sentence.lower() or
'weekly' in trigger.sentence.lower() or
'radio' in trigger.sentence.lower() or
'favorite songs' in trigger.sentence.lower() or
'favorite music' in trigger.sentence.lower() or
'podcast' in trigger.sentence.lower() or
'track' in trigger.sentence.lower() or
'song' in trigger.sentence.lower() or
'music by' in trigger.sentence.lower() or
'songs by' in trigger.sentence.lower() or
'news' in trigger.sentence.lower() or
'radio station' in trigger.sentence.lower() or
'track' in trigger.sentence.lower() or
'song' in trigger.sentence.lower()) }}
actions:
- action: script.play_spotify_on_lt12b_source
metadata: {}
data: {}
- choose:
- conditions:
- condition: template
value_template: >-
{{ 'randomly' in trigger.sentence.lower() or 'in random order' in
trigger.sentence.lower() }}
sequence:
- data:
entity_id: media_player.spotifyplus_lt12b
shuffle: true
action: media_player.shuffle_set
- choose:
- conditions:
- condition: template
value_template: "{{ 'different' in trigger.sentence.lower() }}"
sequence:
- data:
entity_id: input_number.voice_spotify_last_search_index
value: >-
{{ (states('input_number.voice_spotify_last_search_index') | int
+ 1) % 10 }}
action: input_number.set_value
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_lt12b
criteria: >-
{{ states('input_text.voice_spotify_last_search') |
regex_replace('randomly|in random order', '',
ignorecase=True) }}
limit: 10
response_variable: resultplaylist
default:
- action: input_number.set_value
metadata: {}
data:
value: 0
target:
entity_id: input_number.voice_spotify_last_search_index
- data:
entity_id: input_text.voice_spotify_last_search
value: >-
{{ (trigger.slots.playlist if trigger.slots and 'playlist' in
trigger.slots else 'Party') | regex_replace('randomly|in random
order', '', ignorecase=True) }}
action: input_text.set_value
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_lt12b
criteria: >-
{{ (trigger.slots.playlist if trigger.slots and 'playlist' in
trigger.slots else 'Party') | regex_replace('randomly|in random
order', '', ignorecase=True) }}
limit: 10
response_variable: resultplaylist
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_lt12b
data:
media_content_id: >-
Thats some great work!
I’ve been looking for a smooth setup to control Spotify with Voice Assist and found Music Assistant to be a bit to slow for my taste.
Your solution with SpotifyPlus looks a lot more like what I’d like to end up with.
Thanks for your work, is it also possible to manually add it to my automations so no need to add second automations yaml. or are you working on a blueprint in parallel?
Great i will do so, what need’s to be changed.
i changed the media_player.spotifyplus_yourID but i get the following error:
Fehler: There is no active Spotify player device, and a default player device was not configured.
If i make one as a active player in the app it works.
Have you configured your Spotify Connect source in the automation?
It will be the Spotify device you would like to use.
You can even set a default source in the SpotifyPlus settings as a fallback.
I have many Spotify Connect sources (PC, FireTV, Smartphone). That’s why I use a script to select the right source first. (script.play_spotify_on_lt12b_source)
The fallback option is not working for me (default source in Spotify plus integration)
On which points in the automations do I need to add my default player?
Got the sequence also but it gives me follwing error:
Fehler: SAM0001E - An unhandled exception occured while processing method “PlayerSetShuffleMode”. UPnP Error 712 received: Play mode not supported from 192.168.17.124
And now this:
Ausgeführt: 22. Februar 2025 um 08:33:02
Fehler: required key not provided @ data[‘source’]
Thanks a lot for your effort! Ilike it a lot and its working fine for me.
Already posted in your github project, but maybe the disussion is the better spot for this
Did you think about adding source selection by voice?
I really like your project and was playing around a litte bit with source selection.
Maybe a little inspiration for you if you thought about that already.
I added a script “spotify_quelle_auf_geraet” (could replace yours):
sequence:
- variables:
Geraet_Such: "{{geraet}}"
Geraet_Ziel: >-
{{ state_attr('media_player.spotifyplus_ID', 'source_list') | list | select('search', Geraet_Such) | first }}
- if:
- condition: template
value_template: "{{Geraet_Ziel|count >0 and not Geraet_Ziel=='' }} "
then:
- data:
source: "{{Geraet_Ziel}}"
action: media_player.select_source
target: entity_id: media_player.spotifyplus_ID
else:
- data:
source: Enter your default
action: media_player.select_source
target: entity_id: media_player.spotifyplus_ID
alias: "Spotify: Gerät einstellen"
The automation triggers could be modified like: Spiele [mir] Musik von {artist} [(auf|im) {geraet}]
With the following action being like:
if:
- condition: template
value_template: >-
{{ "auf" in trigger.sentence.lower() or "im" in trigger.sentence.lower()}}
then:
- action: script.spotify_quelle_auf_geraet
data:
geraet: "{{ trigger.slots.geraet }}"
Hi guys,
I hope that you can help me
Just started with Home Assistant, so I’m really not good in all that.
I installed HACS and then SpotifyPlus.
It appears in my voice assistant area as well.
Now I tried to upload the script via Spotify Plus - create new script - edit in YAML.
I adjusted the entity IDs like mentioned in README.
As well, I added the two helpers mentioned in README in my configuration.yaml.
Though if I try to save, I get the following error:
Message malformed: extra keys not allowed @ data[‘0’]
(The script I tried to save is the exact same one as in GitHub just with entity_id media_player.spotifyplus_1133041XXX)
Does anyone know what I did wrong here?
Thanks a lot!
Sorry, that’s my code
(I x-ed the last 3 digits of my Spotify account number here).
It’s actually apart from the number otherwise 100% the code for the German version on the Git-page.
- id: '1739227579468'
alias: 'Voice: Spotify Music Control'
description: Unified automation for playing music, playlists, radio, podcasts, and
more.
triggers:
- trigger: conversation
command:
- Spiele [das] Radio von {artist}
- Starte [das] Radio von {artist}
- Lass [uns] [das] Radio von {artist} hören
- Ich möchte [das] Radio von {artist} hören
- Spiele [bitte] [das] Radio von {artist}
- Leg [das] Radio von {artist} auf
- Spiel [das] Künstler-Radio von {artist}
- Spiele [den] Song {song}
- Starte [den] Song {song}
- Leg [den Song] {song} auf
- Spiele {playlist} Musik
- Starte {playlist} Musik
- Spiele [das] Lied {song}
- Starte [das] Lied {song}
- Spiele [die] Playlist {playlist}
- Starte [die] Playlist {playlist}
- Spiele [den] Podcast {podcast}
- Starte [den] Podcast {podcast}
- Spiele [mir] Musik von {artist}
- '[Spiele] [etwas] anderes'
- Spiele Weekly
- Starte Weekly
conditions: []
actions:
- action: script.play_spotify_on_lt12b_source
metadata: {}
data: {}
continue_on_error: true
- choose:
- conditions:
- condition: template
value_template: '{{ "podcast" in trigger.sentence.lower() }}'
sequence:
- action: spotifyplus.player_set_shuffle_mode
metadata: {}
data:
state: false
entity_id: media_player.spotifyplus_1133041XXX
delay: 1
continue_on_error: true
- action: spotifyplus.search_shows
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ trigger.slots.podcast }}'
limit: 1
response_variable: resultpodcast
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:show:{{ resultpodcast["result"]["items"][0]["id"]
}}
media_content_type: podcast
alias: Podcast
- conditions:
- condition: template
value_template: '{{ "weekly" in trigger.sentence.lower() }}'
sequence:
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:playlist:37abcdefghijkl
media_content_type: playlist
alias: Weekly
- conditions:
- condition: template
value_template: '{{ "radio" in trigger.sentence.lower() }}'
sequence:
- action: spotifyplus.player_set_shuffle_mode
metadata: {}
data:
state: true
entity_id: media_player.spotifyplus_1133041XXX
delay: 1
continue_on_error: true
- action: spotifyplus.search_artists
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ trigger.slots.artist }}'
response_variable: resultartist
- action: spotifyplus.search_playlists
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ trigger.slots.artist }} Radio'
limit: 1
response_variable: resultplaylist
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:artist:{{ resultartist["result"]["items"][0]["id"]
}}
media_content_type: artist
alias: Radio
- conditions:
- condition: template
value_template: '{{ ''musik'' in trigger.sentence.lower() and ''musik von''
not in trigger.sentence.lower() }}'
sequence:
- action: spotifyplus.player_set_shuffle_mode
metadata: {}
data:
state: true
entity_id: media_player.spotifyplus_1133041XXX
delay: 1
continue_on_error: true
alias: Zufällige Wiedergabe
- choose:
- conditions:
- condition: template
value_template: '{{ ''zufällig'' in trigger.sentence.lower() or ''zufälliger
reihenfolge'' in trigger.sentence.lower() }}'
sequence:
- data:
entity_id: media_player.spotifyplus_1133041XXX
shuffle: true
action: media_player.shuffle_set
enabled: false
- action: input_number.set_value
metadata: {}
data:
value: 0
target:
entity_id: input_number.voice_spotify_last_search_index
- data:
entity_id: input_text.voice_spotify_last_search
value: '{{ (trigger.slots.playlist if trigger.slots and ''playlist'' in
trigger.slots else ''Party'') | regex_replace(''zufällig|in zufälliger
reihenfolge'', '''', ignorecase=True) }}'
action: input_text.set_value
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ (trigger.slots.playlist if trigger.slots and ''playlist''
in trigger.slots else ''Party'') | regex_replace(''zufällig|in zufälliger
reihenfolge'', '''', ignorecase=True) }}'
limit: 10
response_variable: resultplaylist
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:playlist:{{ resultplaylist['result']['items'][states('input_number.voice_spotify_last_search_index')
| int]['id'] }}
media_content_type: playlist
alias: Genre
- conditions:
- condition: template
value_template: '{{ "song" in trigger.sentence.lower() or "lied" in trigger.sentence.lower()
}}'
sequence:
- action: spotifyplus.search_tracks
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ trigger.slots.song }}'
limit: 1
response_variable: resultsong
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:track:{{ resultsong["result"]["items"][0]["id"]
}}
media_content_type: track
alias: Song
- conditions:
- condition: template
value_template: '{{ "playlist" in trigger.sentence.lower() or "anderes" in
trigger.sentence.lower() }}'
sequence:
- action: spotifyplus.player_set_shuffle_mode
metadata: {}
data:
state: true
entity_id: media_player.spotifyplus_1133041XXX
delay: 1
alias: Zufällige Wiedergabe
- choose:
- conditions:
- condition: template
value_template: '{{ ''zufällig'' in trigger.sentence.lower() or ''zufälliger
reihenfolge'' in trigger.sentence.lower() }}'
sequence:
- data:
entity_id: media_player.spotifyplus_1133041XXX
shuffle: true
action: media_player.shuffle_set
enabled: false
- choose:
- conditions:
- condition: template
value_template: '{{ ''andere'' in trigger.sentence.lower() }}'
sequence:
- data:
entity_id: input_number.voice_spotify_last_search_index
value: '{{ (states(''input_number.voice_spotify_last_search_index'')
| int + 1) % 10 }}'
action: input_number.set_value
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ states(''input_text.voice_spotify_last_search'') | regex_replace(''zufällig|in
zufälliger reihenfolge'', '''', ignorecase=True) }}'
limit: 10
response_variable: resultplaylist
default:
- action: input_number.set_value
metadata: {}
data:
value: 0
target:
entity_id: input_number.voice_spotify_last_search_index
- data:
entity_id: input_text.voice_spotify_last_search
value: '{{ (trigger.slots.playlist if trigger.slots and ''playlist'' in
trigger.slots else ''Party'') | regex_replace(''zufällig|in zufälliger
reihenfolge'', '''', ignorecase=True) }}'
action: input_text.set_value
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ (trigger.slots.playlist if trigger.slots and ''playlist''
in trigger.slots else ''Party'') | regex_replace(''zufällig|in zufälliger
reihenfolge'', '''', ignorecase=True) }}'
limit: 10
response_variable: resultplaylist
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:playlist:{{ resultplaylist['result']['items'][states('input_number.voice_spotify_last_search_index')
| int]['id'] }}
media_content_type: playlist
alias: Playlists oder anderes
- conditions: []
sequence:
- action: spotifyplus.search_artists
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ trigger.slots.artist }}'
response_variable: resultspotify
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:artist:{{ resultspotify["result"]["items"][0]["id"]
}}
media_content_type: artist
alias: Play only
mode: single
- id: '1730550572695'
alias: 'Voice: Spiele Spotify und Lieblingssongs'
description: ''
triggers:
- trigger: conversation
command:
- Starte meine Lieblingssongs
- Spiele meine Lieblingssongs
- Spiele meine Lieblingsmusik
conditions: []
actions:
- action: script.play_spotify_on_yourID_source
data: {}
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ trigger.slots.playlist }}'
limit: 1
response_variable: resultplaylist
enabled: false
- action: media_player.play_media
target:
entity_id: media_player.spotifyplus_1133041XXX
data:
media_content_id: spotify:user:1111111111:collection
media_content_type: playlist
mode: single
- id: '1730553443702'
alias: 'Voice: Lautstärke ändern'
description: Adjust the volume or set it to a specific percentage
triggers:
- trigger: conversation
command:
- Leiser
- Lauter
- Mach leiser
- Mach lauter
- Viel leiser
- Viel lauter
- Lautstärke auf {volume}%
- Volumen auf {volume}%
- Volle Lautstärke
- Maximale Lautstärke
- Mach auf volle Lautstärke
- Dreh voll auf
conditions: []
actions:
- choose:
- conditions:
- '{{ ''leiser'' in trigger.sentence.lower() }}'
sequence:
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.volume_down
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.volume_down
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.volume_down
- conditions:
- '{{ ''lauter'' in trigger.sentence.lower() }}'
sequence:
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.volume_up
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.volume_up
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.volume_up
- conditions:
- '{{ ''volle lautstärke'' in trigger.sentence.lower() or ''maximale lautstärke''
in trigger.sentence.lower() or ''dreh voll auf'' in trigger.sentence.lower()
}}'
sequence:
- target:
entity_id: media_player.spotifyplus_1133041XXX
data:
volume_level: 1
action: media_player.volume_set
- conditions:
- '{{ ''lautstärke auf'' in trigger.sentence.lower() }}'
sequence:
- target:
entity_id: media_player.spotifyplus_1133041XXX
data:
volume_level: '{{ trigger.slots.volume | int / 100 }}'
action: media_player.volume_set
mode: single
- id: '1730553837629'
alias: 'Voice: Nächstes Lied'
description: Skip to the next track on Spotify
triggers:
- trigger: conversation
command:
- Nächstes Lied
- Nächster Song
- Skip
- Mach weiter
- Weiter
- Next
conditions: []
actions:
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.media_next_track
mode: single
- id: '1730553973956'
alias: 'Voice: Zufällige Wiedergabe'
description: Toggle shuffle on or off for Spotify
triggers:
- trigger: conversation
command:
- Zufällige Wiedergabe an
- Shuffle an
- Zufällige Wiedergabe aus
- Shuffle aus
- Zufällige Wiedergabe
conditions: []
actions:
- choose:
- conditions:
- '{{ ''an'' in trigger.sentence.lower() }}'
sequence:
- target:
entity_id: media_player.spotifyplus_1133041XXX
data:
shuffle: true
action: media_player.shuffle_set
- conditions:
- condition: template
value_template: '{{ ''aus'' in trigger.sentence.lower() }}'
sequence:
- target:
entity_id: media_player.spotifyplus_1133041XXX
data:
shuffle: false
action: media_player.shuffle_set
mode: single
- id: '1730554056789'
alias: 'Voice: Spotify abspielen / Play'
description: ''
triggers:
- trigger: conversation
command:
- Spiele Musik
- Starte Spotify
- Spiele Spotify
- Starte Musik
conditions: []
actions:
- action: script.play_spotify_on_yourID_source
data: {}
- action: spotifyplus.search_playlists
metadata: {}
data:
entity_id: media_player.spotifyplus_1133041XXX
criteria: '{{ trigger.slots.playlist }}'
limit: 1
response_variable: resultplaylist
enabled: false
- action: media_player.media_play
target:
entity_id:
- media_player.spotifyplus_1133041XXX
data: {}
mode: single
- id: '1730625469560'
alias: 'Voice: Like Current Song'
description: Like the currently playing song on Spotify
triggers:
- trigger: conversation
command:
- Ich mag [dieses] [das] Lied
- Lied liken
- Gefällt mir [dieses] [das] Lied
- Song liken
- Ich mag [den] [diesen] Song
- Füge [den] [diesen] Song zu meinen Favoriten hinzu
- Speichere [den] [diesen] Song
- Song zu meinen Favoriten hinzufügen
- Speichere [dieses] [das] Lied
- Dieses Lied zu Favoriten hinzufügen
- Speichere [diesen] [den] Track
- Track liken
- Ich mag [diesen] [den] Track
- Track speichern
- Song speichern
- Lied speichern
- Song zu Favoriten hinzufügen
- Füge diesen Track zu meinen Favoriten hinzu
- Gefällt mir [dieser] [der] Song
- Dieses Lied speichern
- like [diesen] [den] Song
conditions: []
actions:
- data:
entity_id: media_player.spotifyplus_1133041XXX
action: spotifyplus.save_track_favorites
mode: single
- id: '1730637071634'
alias: 'Voice: Pause Spotify'
description: Pause or stop the Spotify playback
triggers:
- trigger: conversation
command:
- '[Musik] [Spotify] Pause'
- '[Musik] [Spotify] Stop'
- '[Mach] Spotify aus'
- '[Mach die] Musik aus'
conditions: []
actions:
- target:
entity_id: media_player.spotifyplus_1133041XXX
action: media_player.media_pause
mode: single