RTCDTMFSender:insertDTMF() 方法
insertDTMF()
方法是 RTCDTMFSender
接口的方法,它通过 RTCPeerConnection
向远程对等体发送 DTMF 音调。
音调是异步发送的。每次音调开始或结束时,都会向 RTCDTMFSender
发送一个 tonechange
事件。
连接处于活动状态时,您可以在任何时间调用 insertDTMF()
。每次调用 insertDTMF()
都会替换 toneBuffer
中任何挂起的音调。您可以通过指定一个空字符串 (""
) 作为要播放的音调集来中止发送排队的音调。由于 insertDTMF()
会替换音调缓冲区,因此为了添加正在播放的 DTMF 音调,需要使用包含剩余音调(存储在 toneBuffer
中)和新音调附加在一起的字符串调用 insertDTMF()
。
语法
insertDTMF(tones)
insertDTMF(tones, duration)
insertDTMF(tones, duration, interToneGap)
参数
tones
-
包含要传输给接收者的 DTMF 代码的字符串。将空字符串指定为
tones
参数会清除音调缓冲区,中止任何当前排队的音调。字符串中的逗号字符,
会插入两秒的延迟。例如"12,34"
会发送1
和2
的音调,暂停两秒,然后发送3
和4
。多个逗号会添加更长的延迟,因此,,
会添加四秒。 duration
可选-
每个 DTMF 音调持续的时间(以毫秒为单位)。此值必须介于 40 毫秒和 6000 毫秒(6 秒)之间(包含)。默认值为 100 毫秒。
interToneGap
可选-
音调之间等待的时间(以毫秒为单位)。浏览器将强制执行 30 毫秒的最小值(即,如果您指定的值更低,则将使用 30 毫秒)。默认值为 70 毫秒。
返回值
无(undefined
)。
异常
InvalidStateError
DOMException
-
如果由于音轨已停止或处于只读或非活动状态而无法发送 DTMF 音调,则会抛出此异常。
InvalidCharacterError
DOMException
-
如果
tones
中的一个或多个字符不是有效的 DTMF(0-9
、A-Z
、#
或,
),则会抛出此异常。
示例
使用 insertDTMF 发送 DTMF 音调
此示例演示如何使用 insertDTMF()
方法通过 WebRTC 连接发送音调。
代码首先检查 canInsertDTMF
属性是否已定义,如果已定义,则使用它来检查是否支持插入 DTMF 音调。如果支持该功能,则调用 insertDTMF()
来插入音调。
if (sender.dtmf.canInsertDTMF) {
const duration = 500;
sender.dtmf.insertDTMF("1234", duration);
} else {
console.log("DTMF function not available");
}
规范
规范 |
---|
WebRTC:浏览器中的实时通信 # dom-RTCDTMFSender-insertDTMF |
浏览器兼容性
BCD 表仅在启用了 JavaScript 的浏览器中加载。