Receber uma ligação
Este guia explica como receber uma chamada usando o Vonage Client SDK. Antes de começar, certifique-se de ter adicionado o SDK ao seu aplicativo e (Android, iOS, JS).
NOTA: No iOS, espera-se que você utilize o CallKit para chamadas recebidas e realizadas. Siga as guia de notificações push.
Receber um convite para uma chamada
Para receber uma chamada dentro do aplicativo, você deve ficar atento aos convites de chamada recebidos:
Para receber uma chamada dentro do aplicativo, monitore o callInvite evento:
// After creating a session
client.on("callInvite", (callId, from, channelType) => {
// Answer / Reject Call
console.log( { callId, from, channelType } );
});
client.setCallInviteListener { callId, from, channelType ->
// Handling incoming call invite
}
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, o didReceiveInviteForCall A função será chamada quando houver um convite para uma chamada recebida. Mantenha a referência à callId já que isso será necessário para realizar outras operações:
extension ViewController: VGVoiceClientDelegate {
func voiceClient(_ client: VGVoiceClient, didReceiveInviteForCall callId: String, from caller: String, withChannelType type: VGVoiceChannelType) {
// Handling incoming callId
}
...
}
Então, você poderá aceitar ou recusar o convite.
Resposta
// After creating a session
client.answer(callId)
.then(() => {
console.log("Success answering call.");
})
.catch(error => {
console.error("Error answering call: ", error);
});
client.answer(callID) {
err ->
when {
err != null -> {
// Handle invite answer error
}
else -> {
// Handle active call
}
}
}
client.answer(callID) { error in
if error == nil {
self.callID = callID
} else {
// Handle answer error
}
}
Rejeitar
// After creating a session
client.reject(callId)
.then(() => {
console.log("Success rejecting call.");
})
.catch(error => {
console.error("Error rejecting call: ", error);
});
client.reject(callID) {
err ->
when {
err != null -> {
// Handle inviate reject error
}
}
}
client.reject(callID) { error in
if error != nil {
// Handle invite reject error
}
}
Desligar
Para um projeto em andamento call:
// After creating a session
client.hangup(callId)
.then(() => {
console.log("Success hanging up call.");
})
.catch(error => {
console.error("Error hanging up call: ", error);
});
client.hangup(callID) {
err ->
when {
err != null -> {
// Handle hang up error
}
}
}
client.hangup(callID) { error in
if error != nil {
// Handle hang up error
}
}
Ouvir eventos de chamada
Para acompanhar as atualizações sobre o status de uma chamada — por exemplo, para saber se o outro participante atendeu ou desligou —, você deve monitorar os eventos de status da ligação.
Para ver atualizações sobre a situação da convocação e seus participantes:
// After creating a session
client.on("legStatusUpdate", (callId, legId, status) => {
console.log({callId, legId, status});
});
client.setOnLegStatusUpdate { callId, legId, status ->
// Call leg updates
}
O didReceiveLegStatusUpdateForCall A função irá mantê-lo informado sobre as alterações nas etapas da chamada ativa:
extension ViewController: VGVoiceClientDelegate {
func voiceClient(_ client: VGVoiceClient, didReceiveLegStatusUpdateForCall callId: String, withLegId legId: String, andStatus status: String) {
// Call leg updates
}
...
}