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
    }

    ...
}

Referência