The RTCDTMFSender interface provides a mechanism for transmitting DTMF codes on a WebRTC RTCPeerConnection. You gain access to the connection's RTCDTMFSender through the RTCRtpSender.dtmf property on the audio track you wish to send DTMF with.
The primary purpose for WebRTC's DTMF support is to allow WebRTC-based communication clients to be connected to a public-switched telephone network (PSTN) or other legacy telephone service, including extant voice over IP (VoIP) services. For that reason, DTMF can't be used between two WebRTC-based devices, because there is no mechanism provided by WebRTC for receiving DTMF codes.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender" target="_top"><rect x="151" y="1" width="130" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="216" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">RTCDTMFSender</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Properties
RTCDTMFSender.toneBufferRead only- A
DOMStringwhich contains the list of DTMF tones currently in the queue to be transmitted (tones which have already been played are no longer included in the string). SeetoneBufferfor details on the format of the tone buffer.
Methods
RTCDTMFSender.insertDTMF()- Given a string describing a set of DTMF codes and, optionally, the duration of and inter-tone gap between the tones,
insertDTMF()starts sending the specified tones. CallinginsertDTMF()replaces any already-pending tones from thetoneBuffer. You can abort sending queued tones by specifying an empty string ("") as the set of tones to play.
Events
Listen to these events using addEventListener() or by assigning an event listener to the oneventname property of this interface.
tonechange- The
tonechangeevent is sent to theRTCDTMFSenderinstance's event handler to indicate that a tone has either started or stopped playing. Also available using theontonechangeevent handler property.
Example
See the article Using DTMF with WebRTC for a full example.
Specifications
| Specification | Status | Comment |
| WebRTC 1.0: Real-time Communication Between BrowsersThe definition of 'RTCDTMFSender' in that specification. | Candidate Recommendation |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
RTCDTMFSender
|
Chrome
Full support 27 |
Edge
Full support ≤79 |
Firefox
Full support 52 |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support 4.4 |
Chrome Android
Full support 27 |
Firefox Android
Full support 52 |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support 1.5 |
canInsertDTMF
|
Chrome
Full support 27 |
Edge
Full support ≤79 |
Firefox
? |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support Yes |
Chrome Android
Full support 27 |
Firefox Android
? |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support 1.5 |
insertDTMF
|
Chrome
Full support 27 |
Edge
Full support ≤79 |
Firefox
Full support 52 |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support 4.4 |
Chrome Android
Full support 27 |
Firefox Android
Full support 52 |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support 1.5 |
ontonechange
|
Chrome
Full support 27 |
Edge
Full support ≤79 |
Firefox
Full support 52 |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support Yes |
Chrome Android
Full support 27 |
Firefox Android
Full support 52 |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support 1.5 |
toneBuffer
|
Chrome
Full support 27 |
Edge
Full support ≤79 |
Firefox
Full support 52 |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support 4.4 |
Chrome Android
Full support 27 |
Firefox Android
Full support 52 |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support 1.5 |
tonechange event
|
Chrome
Full support 27 |
Edge
Full support ≤79 |
Firefox
Full support 52 |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support Yes |
Chrome Android
Full support 27 |
Firefox Android
Full support 52 |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support 1.5 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
See also
RTCDTMFSender by Mozilla Contributors is licensed under CC-BY-SA 2.5.