I have created a workaround.
It’s not a very elegant solution but it works fine.
A simple entities card with a footer button.
And using Node red to control it.
All you need to do is create three helpers.
input_text.google_say // the message (mdi:google-home)
input_select.google_say_dropdown // the devices/rooms it can be played in (mdi:google-home)
input_boolean.google_say_send // the footer button (mdi:send)
Card yaml:
type: entities
entities:
- entity: input_text.google_say
name: ' Meddelande'
- entity: input_select.google_say_dropdown
name: Skicka meddelande till
footer:
type: buttons
entities:
- entity: input_boolean.google_say_send
Node red flow:
[{"id":"d1f8c4d4.0fb728","type":"tab","label":"Google say","disabled":false,"info":""},{"id":"1d76ebe2.2818e4","type":"trigger-state","z":"d1f8c4d4.0fb728","name":"Trigger on button click","server":"4bbca37b.1700ec","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_boolean.google_say_send","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"id":"3blmfnlex52","targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"constraintsmustmatch":"all","outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":150,"y":240,"wires":[["f723e3ec.4320d"],[]]},{"id":"f723e3ec.4320d","type":"api-current-state","z":"d1f8c4d4.0fb728","name":"Get message","server":"4bbca37b.1700ec","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"input_text.google_say","state_type":"str","state_location":"message","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":350,"y":240,"wires":[["39ac6f3c.6171"]]},{"id":"39ac6f3c.6171","type":"api-current-state","z":"d1f8c4d4.0fb728","name":"Get device/room","server":"4bbca37b.1700ec","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"input_select.google_say_dropdown","state_type":"str","state_location":"room","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":640,"y":240,"wires":[["b16fb48d.45e978"]]},{"id":"b16fb48d.45e978","type":"function","z":"d1f8c4d4.0fb728","name":"\"Translate\" room to media_player","func":"if(msg.room == \"Vardagsrum\"){\n msg.device = \"media_player.vardagsrum_mini\";\n \n}else if(msg.room == \"Köket\"){\n msg.device = \"media_player.kok_mini\";\n \n}else if(msg.room == \"Davids rum\"){\n msg.device = \"media_player.david_mini\";\n \n}else if(msg.room == \"Sovrum\"){\n msg.device = \"media_player.sovrum_mini\";\n \n}else if(msg.room == \"Nedervåningen\"){\n msg.device = \"media_player.nedervaningen\";\n \n}else if(msg.room == \"Ovanvåningen\"){\n msg.device = \"media_player.ovanvaningen\";\n \n}else if(msg.room == \"Alla\"){\n msg.device = \"media_player.hela_huset\";\n \n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":900,"y":240,"wires":[["aacef671.3a3e38"]]},{"id":"aacef671.3a3e38","type":"function","z":"d1f8c4d4.0fb728","name":"Build message to speak json string","func":"\nmsg.payload = {\n data:{\n \"entity_id\": msg.device,\n \"message\": msg.message,\n \"language\": \"sv-SE\"\n }\n}\n\n\nmsg.topic = \"\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1220,"y":240,"wires":[["10226b7b.97b925","c96e8922.99be78"]]},{"id":"10226b7b.97b925","type":"api-call-service","z":"d1f8c4d4.0fb728","name":"Speak message","server":"4bbca37b.1700ec","version":1,"debugenabled":false,"service_domain":"tts","service":"cloud_say","entityId":"media_player.nedervaningen","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1500,"y":240,"wires":[[]]},{"id":"51e0b57.77c5a4c","type":"api-call-service","z":"d1f8c4d4.0fb728","name":"Turn off boolean","server":"4bbca37b.1700ec","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_off","entityId":"input_boolean.google_say_send","data":"{\"entity_id\":\"input_boolean.google_say_send\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1820,"y":140,"wires":[["bab91909.b967c8"]]},{"id":"bab91909.b967c8","type":"api-call-service","z":"d1f8c4d4.0fb728","name":"Reset text","server":"4bbca37b.1700ec","version":1,"debugenabled":false,"service_domain":"input_text","service":"set_value","entityId":"input_text.google_say","data":"{\"entity_id\":\"input_text.google_say\",\"value\":\"Skriv meddelande\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":2080,"y":140,"wires":[["736e9bee.f074b4"]]},{"id":"736e9bee.f074b4","type":"api-call-service","z":"d1f8c4d4.0fb728","name":"Reset select","server":"4bbca37b.1700ec","version":1,"debugenabled":false,"service_domain":"input_select","service":"select_option","entityId":"input_select.google_say_dropdown","data":"{\"entity_id\":\"input_select.google_say_dropdown\",\"option\":\"Vardagsrum\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":2370,"y":140,"wires":[[]]},{"id":"15ba1082.8b79ef","type":"function","z":"d1f8c4d4.0fb728","name":"Empty message","func":"\nmsg.payload = \"\";\nmsg.event_type = \"\";\nmsg.topic = \"\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1640,"y":140,"wires":[["51e0b57.77c5a4c"]]},{"id":"c96e8922.99be78","type":"delay","z":"d1f8c4d4.0fb728","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1480,"y":140,"wires":[["15ba1082.8b79ef"]]},{"id":"4bbca37b.1700ec","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
The flow needs some tinkering to be set up for your enviroment.