Adding a source selector (Telegram, SMS Free, WhatsApp…) in the « Send a message » action.
Today, in a scene, you can perform a « Send a message » action but without being able to choose the sending technology/source, especially if several messaging integrations have been installed. For example, Telegram and Free Mobile.
Can you create a feature request?
I would run Claude on it
@pierre-gilles here’s a PR
master ← William-De71:feat/message-send-channel-selector
ouvert 05:24PM - 07 Aug 26 UTC
### Description
Today the "send message" scene action broadcasts to every mes… saging channel the
user has configured: a scene meant to send an SMS also sends a Telegram message
and a Nextcloud Talk message. There was no way to pick a destination.
This PR adds a channel selector to both `message.send` and
`message.send-camera`. The dropdown lists every messaging channel able to
deliver to a user — Telegram, Nextcloud Talk, CallMeBot (which covers WhatsApp
and Signal), and external integrations of type `communication` such as Free
Mobile SMS.
The first option, "All configured services", is the default and maps to an
action without a `service` property, so **existing scenes keep the historical
broadcast behaviour and are not rewritten**.
Notable points:
- An unknown or non-messaging service name is logged and dropped rather than
silently falling back to a broadcast the user did not ask for.
- `service.load` only flagged `has_message_feature` on services exposing
`message.send`. Send-only channels expose `sendToUser` without the reply path,
so they were never listed as messaging services — Free Mobile SMS did not
appear in the selector at all. Both interfaces are now accepted.
- The new `GET /api/v1/message_service` route lists channels flagged in database
**and** actually loaded in the state manager, since a flagged but unloaded
service could not deliver anything. It is mounted outside `/api/v1/service`,
whose `:service_name` route would otherwise have captured it.
- A channel whose service is not `RUNNING` is shown as unavailable instead of
failing silently at send time. It stays selectable: a scene can legitimately
target a service that is temporarily down.
### Checklist
- [X] Tests pass: `cd server && npm run coverage` (Codecov requires 100% coverage on changed lines) and Cypress (`npm run cypress:run`) if the UI changed
- [X] Linter and prettier pass on both front and server (`npm run eslint`, `npm run prettier`)
- [X] No undocumented breaking change
<img width="550" height="305" alt="image" src="https://github.com/user-attachments/assets/198f0fd3-2e77-4173-bc0d-6362a524eca5" />
<img width="576" height="463" alt="image" src="https://github.com/user-attachments/assets/c82e38a2-9227-4cb7-b3ca-6089b387c00b" />
## Summary by CodeRabbit
* **New Features**
* Scene message and camera-message actions can now target a specific messaging service or send through all configured services.
* Available services are listed with localized names, availability status, and helpful guidance.
* Unavailable or removed services are handled gracefully.
* **Localization**
* Added English, French, and German translations for service selection and related messaging.
* **Bug Fixes**
* Improved handling when selected services or message targets are unavailable.
* **Tests**
* Added coverage for service discovery, targeted delivery, broadcast behavior, and unavailable services.
@Will_71 I did a PR review for you, I left a comment Thanks for the PR!
I’m closing this post as the feature is available in Gladys Assistant 4.86:
Hi everyone!
Super excited to release Gladys Assistant 4.86.
It’s simple, it’s the biggest version since the start of the project, with 68 PRs merged in one week
It’s just incredible, and it shows the new pace we can keep with AI.
The goal is now clear: catch up with and surpass Home Assistant
I’ll talk about these 68 new features here:
Thanks to all the contributors!!