RTCDTMFSender: insertDTMF() 方法

Baseline 已广泛支持

此功能已经成熟,并可在许多设备和浏览器版本上使用。自 ⁨2020 年 3 月⁩起,它已在各浏览器中推出。

RTCDTMFSender 接口的 insertDTMF() 方法通过 RTCPeerConnection 向远程端点发送 DTMF 信号音。

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

您可以在连接处于活动状态的任何时候调用 insertDTMF()。每次调用 insertDTMF() 都会替换 toneBuffer 中任何待发送的信号音。您可以通过将空字符串 ("") 指定为要播放的信号音集来中止发送排队的信号音。由于 insertDTMF() 会替换信号音缓冲区,因此要添加到正在播放的 DTMF 信号音中,必须调用 insertDTMF() 并传入一个字符串,其中包含剩余信号音(存储在 toneBuffer 中)和新添加的信号音。

语法

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 毫秒,则使用 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

浏览器兼容性

另见