Enviar y recibir DTMF
Dual Tone Multi Frequency (DTMF), es una forma de señalización utilizada por los sistemas telefónicos para transmitir los dígitos 0-9 y el * y # caracteres. Normalmente, la persona que llama pulsa estos botones en el teclado del teléfono y éste genera un tono compuesto por dos frecuencias que se reproducen simultáneamente (de ahí lo de Dual Tone).
El DTMF se utiliza tanto para marcar un número de teléfono fijo como para enviar señales al destinatario una vez que se responde a la llamada. Normalmente, se emplea para implementar un sistema de respuesta de voz interactiva (IVR) o para introducir información, como un número PIN o el código de acceso a una conferencia telefónica.
Esta guía explica cómo enviar y recibir entradas DTMF con el Client SDK. Antes de empezar, asegúrate de haber añadido el SDK a tu aplicación y (Android, iOS, JS) y podrá hacer o reciba llamadas.
Enviar DTMF
Puede enviar tonos DTMF a una llamada en curso.
// After creating a session
client.sendDTMF(callId, "1234")
.then(() => {
console.log("Success sending DTMF.");
})
.catch(error => {
console.error("Error sending DTMF: ", error);
});
client.sendDTMF(callID, "1234") {
error ->
when {
error != null -> {
// Handle DTMF error
}
}
}
client.sendDTMF(callID, "1234", callback: { error in
if error != nil {
// Handle DTMF error
}
})
Durante una llamada en curso, en la que tu backend implementó un NCCO con una acción de entradaEl envío de un DTMF activará la función definida "eventUrl".
Recibir DTMF
Cada vez que un participante en una llamada envía un evento DTMF, se notifica dicho evento al resto de participantes en la llamada.
// After creating a session
client.on("dtmf", (callId, legId, digits) => {
console.log(`leg: ${legId}: has received DTMF digits ${digits}`);
});
client.setOnDTMFListener { callId, legId, digits ->
...
}
Añade el ViewControllero similar, como delegado del cliente de voz:
client.delegate = self
ViewController ahora tendrá que ajustarse a VGVoiceClientDelegate, los eventos DTMF se recibirán en el didReceiveDTMFForCall método delegado:
extension ViewController: VGVoiceClientDelegate {
func voiceClient(_ client: VGVoiceClient, didReceiveDTMFForCall callId: String, withLegId legId: String, andDigits digits: String) {
...
}
...
}