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

瀏覽器相容性

另見