- Shipped
- September 7, 2026 at 1:31 AM UTC
- Author
- Kamo
- Commit
- 1271c6b
Reported from a real setup: an organization added Telnyx as a text provider, opened the SMS window, and was told "This phone server is a FreePBX PBX, which carries calls but not text messages. An administrator can add a text provider…" — which sent them to add the provider they had just added. Both things were wrong at once and the wrong half was reported. /capability only mentioned the missing number when the provider was otherwise able to text: reason = availability.canSend() ? "no number yet" : availability.reason(); so whenever the phone server ALSO could not text — which is the entire case this routing layer exists for — the provider's limitation won and the actual blocker went unmentioned. That organization had no number anywhere: no row on the Numbers screen, no member from-number, and no main number on the phone server. No number now wins, and both messages point at Settings → Phone → Numbers rather than at Settings → Phone generally. That is the screen that fixes it, and it fixes BOTH: a number assigned there gives the member a from-number and carries its own text route, so one action clears the missing number and the missing route together. Also exposes numbersRouted on a text provider. Adding a provider does nothing on its own — a number has to point at it — and nothing on that screen said so, so an administrator could complete the form, see a healthy provider, and have every text refused with a message about a different provider entirely.