Wrong telephony-event from client broke dtmf

7 views
Skip to first unread message

Aleksandr Sechkarev

unread,
Dec 15, 2025, 8:08:31 AM (5 days ago) Dec 15
to Sipwise rtpengine
Hello,
The problem is that there are some SIP clients (Mac telephone, Zoiper, Microsip 3.20) that, if they are received 2 telephone-events in SDP for OPUS and for the 711 codec, select the wrong one in SDP and cannot use DTMF afterwards. The following flags are used when calling rtpengine_offer: rtcp-mux-demux DTLS=off SDES-off ICE=remove RTP/AVP replace-origin codec-transcode-opus codec-transcode-PCMA codec-transcode-telephone-event, so telephone-event/48000 is always added.

Question: is there any way to solve this with the correct rtpengine flags, or just get rid of buggy clients?

Examples:
SDP in INVITE to the client:
m=audio 11492 RTP/AVP 8 96 97 101
c=IN IP4 Y.Y.Y.Y
a=rtpmap:8 PCMA/8000
a=rtpmap:96 opus/48000/2
a=fmtp:96 useinbandfec=1
a=rtpmap:97 telephone-event/48000
a=fmtp:97 0-15
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=sendrecv
a=rtcp:11493
a=ptime:20
a=maxptime:140


Client's answer:
c=IN IP4 X.X.X.X
t=0 0
m=audio 58085 RTP/AVP 8 0 97
a=rtpmap:97 telephone-event/8000
a=fmtp:97 0-16
a=sendrecv
a=rtcp-mux


And result SDP after rtpengine process answer - it goes without telephone-event because SIP-client used wrong dtmf, 97 instead 101:
m=audio 11874 RTP/AVP 8
c=IN IP4 X.X.X.X
a=rtpmap:8 PCMA/8000
a=sendrecv
a=rtcp:11875
a=ptime:20
Reply all
Reply to author
Forward
0 new messages