RTCDTMFSender:insertDTMF() 方法

insertDTMF() 方法是 RTCDTMFSender 接口的方法,它通过 RTCPeerConnection 向远程对等体发送 DTMF 音调。

音调是异步发送的。每次音调开始或结束时,都会向 RTCDTMFSender 发送一个 tonechange 事件。

连接处于活动状态时,您可以在任何时间调用 insertDTMF()。每次调用 insertDTMF() 都会替换 toneBuffer 中任何挂起的音调。您可以通过指定一个空字符串 ("") 作为要播放的音调集来中止发送排队的音调。由于 insertDTMF() 会替换音调缓冲区,因此为了添加正在播放的 DTMF 音调,需要使用包含剩余音调(存储在 toneBuffer 中)和新音调附加在一起的字符串调用 insertDTMF()

语法

js
insertDTMF(tones)
insertDTMF(tones, duration)
insertDTMF(tones, duration, interToneGap)

参数

tones

包含要传输给接收者的 DTMF 代码的字符串。将空字符串指定为 tones 参数会清除音调缓冲区,中止任何当前排队的音调。字符串中的逗号字符 , 会插入两秒的延迟。例如 "12,34" 会发送 12 的音调,暂停两秒,然后发送 34。多个逗号会添加更长的延迟,因此 ,, 会添加四秒。

duration 可选

每个 DTMF 音调持续的时间(以毫秒为单位)。此值必须介于 40 毫秒和 6000 毫秒(6 秒)之间(包含)。默认值为 100 毫秒。

interToneGap 可选

音调之间等待的时间(以毫秒为单位)。浏览器将强制执行 30 毫秒的最小值(即,如果您指定的值更低,则将使用 30 毫秒)。默认值为 70 毫秒。

返回值

无(undefined)。

异常

InvalidStateError DOMException

如果由于音轨已停止或处于只读或非活动状态而无法发送 DTMF 音调,则会抛出此异常。

InvalidCharacterError DOMException

如果 tones 中的一个或多个字符不是有效的 DTMF(0-9A-Z#,),则会抛出此异常。

示例

使用 insertDTMF 发送 DTMF 音调

此示例演示如何使用 insertDTMF() 方法通过 WebRTC 连接发送音调。

代码首先检查 canInsertDTMF 属性是否已定义,如果已定义,则使用它来检查是否支持插入 DTMF 音调。如果支持该功能,则调用 insertDTMF() 来插入音调。

js
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 的浏览器中加载。

另请参阅