RTCDTMFSender: insertDTMF() 方法
RTCDTMFSender
接口的 insertDTMF()
方法通过 RTCPeerConnection
向远程端点发送 DTMF 信号音。
信号音是异步发送的。每次信号音开始或结束时,都会向 RTCDTMFSender
发送一个 tonechange
事件。
您可以在连接处于活动状态的任何时候调用 insertDTMF()
。每次调用 insertDTMF()
都会替换 toneBuffer
中任何待发送的信号音。您可以通过将空字符串 (""
) 指定为要播放的信号音集来中止发送排队的信号音。由于 insertDTMF()
会替换信号音缓冲区,因此要添加到正在播放的 DTMF 信号音中,必须调用 insertDTMF()
并传入一个字符串,其中包含剩余信号音(存储在 toneBuffer
中)和新添加的信号音。
语法
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 毫秒,则使用 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 |
浏览器兼容性
加载中…