A Telnyx phone server could send texts and never receive one

FixVOIPService
Shipped
September 6, 2026 at 10:28 PM UTC
Author
Kamo
Commit
9e9e814

Telnyx is both a phone server and a carrier, and a Telnyx messaging profile has exactly one webhook URL. So an organization that added Telnyx as a PHONE SERVER and no text provider still had its inbound delivered to /api/bulktext/inbound/telnyx — where the only thing that endpoint could resolve was a BulkTextProviderInstance. There is none, so every reply was dropped at the "matches no active provider instance" warning. That org could text customers and never see an answer, which is the exact failure this whole area exists to end. The endpoint now recognises a number whose texts ride on a phone server, verifies it through **************** — the seam that interface already had, so this is not Telnyx-specific — and hands it to the shared ingest. The rail had to grow a constant, and that is the interesting part. InboundRail says which factory may reply, and these two rails share a URL while disagreeing about it: filing this as BULK_TEXT would hand a VoipProviderInstance id to BulkTextProviderFactory, which fails as "no such instance", so the HELP reply would never be sent and nothing would say why. CARRIER_TO_PHONE_SERVER names the difference. SmsKeywordService's reply switch has no default arm precisely so a new constant cannot be forgotten there — it was a compile error until it was handled, which is the design working. Once a number is known to be routed at a phone server, a bad signature 403s rather than falling through to the scan below, which could otherwise match a different instance entirely.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing