diff --git a/.changeset/hungry-peas-bow.md b/.changeset/hungry-peas-bow.md new file mode 100644 index 000000000..74208f8dd --- /dev/null +++ b/.changeset/hungry-peas-bow.md @@ -0,0 +1,5 @@ +--- +"client-sdk-android": patch +--- + +Add publishDTMF method for Sending DTMF signals to SIP Participant diff --git a/livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt b/livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt index d82dcfe62..43b5c9dad 100644 --- a/livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt +++ b/livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt @@ -735,6 +735,34 @@ internal constructor( engine.sendData(dataPacket) } + /** + * This suspend function allows you to publish DTMF (Dual-Tone Multi-Frequency) + * signals within a LiveKit room. The `publishDtmf` function constructs a + * SipDTMF message using the provided code and digit, then encapsulates it + * in a DataPacket before sending it via the engine. + * + * Parameters: + * - code: an integer representing the DTMF signal code + * - digit: the string representing the DTMF digit (e.g., "1", "#", "*") + */ + + @Suppress("unused") + suspend fun publishDtmf( + code: Int, + digit: String, + ) { + val sipDTMF = LivekitModels.SipDTMF.newBuilder().setCode(code) + .setDigit(digit) + .build() + + val dataPacket = LivekitModels.DataPacket.newBuilder() + .setSipDtmf(sipDTMF) + .setKind(LivekitModels.DataPacket.Kind.RELIABLE) + .build() + + engine.sendData(dataPacket) + } + /** * @suppress */