I’ve been using media_source
to play tts messages from my elevenlabs integration. I had a script that would play the tts message then return the sonos speaker back to its previous state.
Up until recently, play_media
didn’t used to repeat automatically, so I was able to check when the speaker went idle and then return back to the previous snapshot. Now my tts just keeps repeating even when I set it to no repeat before the play_media
is called. Even if I change to no repeat during the tts, it still keeps repeating until I manually pause the speaker.
Here is my tts script that used to work a few builds ago:
alias: GPT-3 Script
sequence:
- service: input_text.set_value
data:
value: "{{ message }}"
target:
entity_id: input_text.gpt_input
- wait_for_trigger:
- platform: state
entity_id:
- sensor.hassio_openai_response
- service: sonos.snapshot
data:
with_group: true
entity_id: media_player.adam_s_room_one
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- service: media_player.volume_set
data:
volume_level: 0.47
target:
entity_id: media_player.adam_s_room_one
- service: media_player.repeat_set
data:
repeat: "off"
target:
entity_id: media_player.adam_s_room_one
- service: media_player.play_media
data_template:
media_content_id: >-
media-source://tts/tts.elevenlabs_tts?message={{
state_attr('sensor.hassio_openai_response', 'response_text') | urlencode
}}
media_content_type: music
announce: false
target:
entity_id: media_player.adam_s_room_one
enabled: true
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- wait_template: "{{ is_state('media_player.adam_s_room_one','playing') }}"
continue_on_timeout: true
timeout: "00:00:30"
- wait_template: >-
{{ is_state('media_player.adam_s_room_one', 'paused') or
is_state('media_player.adam_s_room_one', 'idle') }}
continue_on_timeout: true
- service: sonos.restore
data:
with_group: true
entity_id: media_player.adam_s_room_one
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
mode: single
icon: mdi:robot
If anyone knows how I would fix it so that my play_media
does not repeat and just plays it once that would be awesome!