Enviar e receber DTMF
O Dual Tone Multi Frequency (DTMF) é um tipo de sinalização utilizado por sistemas telefônicos para transmitir os dígitos 0-9 e o * e # caracteres. Normalmente, quem liga pressiona essas teclas no teclado do telefone, e o aparelho gera então um tom composto por duas frequências reproduzidas simultaneamente (daí o nome “Dual Tone”).
O DTMF é utilizado tanto para discar um número em um telefone fixo quanto para enviar sinais ao destinatário assim que a chamada é atendida. Normalmente, ele é usado para implementar um sistema de Resposta Interativa de Voz (IVR) ou para inserir informações, como um número PIN ou o código de acesso a uma teleconferência.
Este guia explica como enviar e receber entradas DTMF usando o Client SDK. Antes de começar, certifique-se de ter adicionado o Client SDK ao seu aplicativo e (Android, iOS, JS) e você consegue fazer ou receber chamadas.
Enviar DTMF
É possível enviar tons DTMF para uma chamada em andamento.
// 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 uma chamada em andamento, em que seu backend implementou um NCCO com uma ação de entrada, o envio de um DTMF acionará o definido "eventUrl".
Receber DTMF
Sempre que um participante de uma chamada envia um evento DTMF, todos os demais participantes da chamada são notificados sobre esse evento.
// After creating a session
client.on("dtmf", (callId, legId, digits) => {
console.log(`leg: ${legId}: has received DTMF digits ${digits}`);
});
client.setOnDTMFListener { callId, legId, digits ->
...
}
Adicione a corrente ViewController, ou algo semelhante, como delegado para o cliente de voz:
client.delegate = self
ViewController agora terá que estar em conformidade com VGVoiceClientDelegate, os eventos DTMF serão recebidos no didReceiveDTMFForCall método delegado:
extension ViewController: VGVoiceClientDelegate {
func voiceClient(_ client: VGVoiceClient, didReceiveDTMFForCall callId: String, withLegId legId: String, andDigits digits: String) {
...
}
...
}