Skip to main content
TwilioCustomer feedback

A developer building a voice AI agent on LiveKit encountered and solved several implementation challenges with Twilio's Elastic SIP Trunk, including unreliable in-band DTMF detection, SIP 403...

What happened

A developer building a voice AI agent on LiveKit encountered and solved several implementation challenges with Twilio's Elastic SIP Trunk, including unreliable in-band DTMF detection, SIP 403 errors due to geo-permissions, and firewall misconfigurations for Twilio's separate media gateway IP block.

Source

Post

Highlighted: the lines this signal was extracted from

Sharing a couple of concrete findings from building a voice AI agent on a Twilio Elastic SIP Trunk (origination + a credential-list trunk for outbound), in case they save someone else a debugging session. No product, no link, just what broke and how it got fixed. DTMF: in-band tone detection (a Goertzel filter over the audio) and speech-to-text transcription both failed to read real keypad input reliably. Tone-only calls produced zero transcript from the STT model, and feeding the same tone-decoder a spoken sentence instead of tones invented over a hundred phantom keypresses that were never pressed. RFC 4733 named RTP events, surfaced in LiveKit as room.on("sip_dtmf_received"), worked cleanly instead, real digits, no audio-domain guessing. Geo permissions: a real outbound call attempt to a number outside Twilio's default allowed set failed with a SIP 403 until enabling that country under Voice > Settings > Geo permissions. This is separate from the trial-account destination-verification restriction, worth checking both if a call fails silently with no obvious error in your own logs. Also worth checking explicitly: firewall/security-group rules that scope inbound RTP media to the same CIDR ranges as SIP signalling. Twilio's media gateways are a separate published block (168.86.128.0/18, ports 10000-60000 UDP) from where signalling originates. Calls can still succeed if...

Keep reading with a free account

The rest of this post, and every signal for Twilio, is in your free account.

Extracted by Autobound

From the Signal API record
Signal
Customer feedback

What this signalsUser posts often show product pain before it reaches reviews or churn.

Subreddit
r/twilio
Event date
Sep 2026

Companies

  • LiveKitAlso named

The full record

From the Signal API record

Numbers

Mentions
9

Details

Timing
Completed
Category
Implementation
Virality
Very low
Post kind
Text
Prominence
Core
Company's role
Vendor

Topics and mentions

Topics

  • sip trunking
  • voice ai
  • implementation
  • firewall
  • dtmf

Products named

  • Elastic SIP Trunk

Extraction

Sentiment
Neutral
Detected
Sep 27, 2026
signal_type
reddit-company
signal_subtype
customerFeedback

Use this data

Get every Reddit signal for Twilio and the companies you sell to, in the tools you already use.

  1. Ask Claude about it

    Connect Autobound to Claude, Claude Code or Cursor with MCP. Then ask: “What changed at Twilio this week?”

  2. Send it to your own tools

    The Signal API returns Reddit signals for any list of companies as JSON, for your CRM, warehouse or app.

  3. Try it free

    Sign up and spend your free credits on the companies you sell to.

    Start Free1,000 free credits

The API returns more than this page shows

This page shows a preview. The full reddit-company record in the Signal API and MCP can also have these 8 fields. Some fields are empty for some signals.

Company

  • linkedin_urlValue in the API
  • industriesValue in the API
  • employee_count_lowValue in the API
  • employee_count_highValue in the API
  • revenueValue in the API
  • descriptionValue in the API

Signal

  • signal_nameValue in the API
  • associationValue in the API
Show the full JSONThe record on this page and the API request

GET /v1/signals/49618fd3-b498-5502-ad65-bc5e521ff623 returns this record as JSON. POST /v1/companies/enrich returns every signal for twilio.com.

{
  "signal_id": "49618fd3-b498-5502-ad65-bc5e521ff623",
  "signal_type": "reddit-company",
  "signal_subtype": "customerFeedback",
  "detected_at": "2026-09-27T19:40:39+00:00",
  "company": {
    "name": "Twilio",
    "domain": "twilio.com"
  },
  "data": {
    "nsfw": false,
    "stage": "none",
    "awards": 0,
    "timing": "completed",
    "topics": [
      "sip trunking",
      "voice ai",
      "implementation",
      "dtmf",
      "firewall"
    ],
    "post_id": "1wrti16",
    "summary": "A developer building a voice AI agent on LiveKit encountered and solved several implementation challenges with Twilio's Elastic SIP Trunk, including unreliable in-band DTMF detection, SIP 403 errors due to geo-permissions, and firewall misconfigurations for Twilio's separate media gateway IP block.",
    "category": "implementation",
    "evidence": [
      "[post] Sharing a couple of concrete findings from building a voice AI agent on a Twilio Elastic SIP Trunk (origination + a credential-list trunk for outbound), in case they save someone else a debugging session.",
      "[post] DTMF: in-band tone detection (a Goertzel filter over the audio) and speech-to-text transcription both failed to read real keypad input reliably.",
      "[post] Geo permissions: a real outbound call attempt to a number outside Twilio's default allowed set failed with a SIP 403 until enabling that country under Voice > Settings > Geo permissions.",
      "[post] Twilio's media gateways are a separate published block (168.86.128.0/18, ports 10000-60000 UDP) from where signalling originates."
    ],
    "virality": "very_low",
    "post_date": "2026-09-27T19:40:39.000Z",
    "post_kind": "text",
    "post_text": "Sharing a couple of concrete findings from building a voice AI agent on a Twilio Elastic SIP Trunk (origination + a credential-list trunk for outbound), in case they save someone else a debugging session. No product, no link, just what broke and how it got fixed.\n\nDTMF: in-band tone detection (a Goertzel filter over the audio) and speech-to-text transcription both failed to read real keypad input reliably. Tone-only calls produced zero transcript from the STT model, and feeding the same tone-decoder a spoken sentence instead of tones invented over a hundred phantom keypresses that were never pressed. RFC 4733 named RTP events, surfaced in LiveKit as room.on(\"sip_dtmf_received\"), worked cleanly instead, real digits, no audio-domain guessing.\n\nGeo permissions: a real outbound call attempt to a number outside Twilio's default allowed set failed with a SIP 403 until enabling that country under Voice > Settings > Geo permissions. This is separate from the trial-account destination-verification restriction, worth checking both if a call fails silently with no obvious error in your own logs.\n\nAlso worth checking explicitly: firewall/security-group rules that scope inbound RTP media to the same CIDR ranges as SIP signalling. Twilio's media gateways are a separate published block (168.86.128.0/18, ports 10000-60000 UDP) from where signalling originates. Calls can still succeed if your...",
    "sentiment": "neutral",
    "subreddit": "twilio",
    "event_date": "2026-09",
    "post_title": "Two real gotchas from wiring DTMF and outbound calls through a Twilio Elastic SIP Trunk into LiveKit",
    "prominence": "core",
    "source_url": "https://www.reddit.com/r/twilio/comments/1wrti16/two_real_gotchas_from_wiring_dtmf_and_outbound/",
    "entity_role": "vendor",
    "post_author": "IAgentic",
    "upvote_ratio": 1,
    "mention_count": 9,
    "mention_surge": true,
    "subreddit_url": "https://www.reddit.com/r/twilio/",
    "total_upvotes": 1,
    "comments_total": 0,
    "total_comments": 0,
    "other_companies": [
      {
        "name": "LiveKit",
        "role": "partner",
        "domain": "livekit.com"
      }
    ],
    "post_author_url": "https://www.reddit.com/user/IAgentic/",
    "signal_category": "feedback",
    "comments_included": 0,
    "products_mentioned": [
      "Elastic SIP Trunk"
    ]
  }
}

Long text fields are shortened on this page.

Looking up one signal by its id is free. Enrich costs 2 credits per signal returned; a call with no results is free.