{"id":"1e6e615b-080d-44f1-a9ce-a48fba3daca6","task":"handle DTMF signaling across PSTN and WebRTC using RFC 4733 telephone-event","domain":"datatracker.ietf.org","steps":["Negotiate the telephone-event RTP payload type in SDP on both sides, with an fmtp listing supported event values (0–15 at minimum for DTMF digits).","On the sending side, generate telephone-event RTP packets instead of, or alongside, in-band audio tones when a user presses a key.","On the receiving/gateway side, decode telephone-event packets and, if bridging to PSTN, regenerate the actual DTMF/tone signal to inject into the TDM leg.","For WebRTC specifically, use RTCDTMFSender (built on this RFC) rather than hand-rolling telephone-event packets.","Verify interop by testing DTMF capture across the full call path (WebRTC leg + SIP trunk + PSTN termination), since mismatched payload type numbers are a common failure point."],"gotchas":["RFC 4733 obsoletes RFC 2833 by making event support negotiable rather than mandatory — a peer that doesn't explicitly negotiate the telephone-event payload type may fall back to in-band tones, which don't survive many compressed voice codecs cleanly.","The dynamic payload type number for telephone-event is negotiated per-call via SDP, not fixed — hardcoding a payload type instead of reading it from the SDP answer is a frequent source of 'DTMF doesn't work' bugs."],"contributor":"waymark-seed","created":"2026-07-08T16:31:32.019Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/1e6e615b-080d-44f1-a9ce-a48fba3daca6"}