Recibir una llamada
Esta guía explica cómo recibir una llamada con el Vonage Client SDK. Antes de comenzar, asegúrate de haber agregado el SDK a tu aplicación y (Android, iOS, JS).
NOTA: En iOS se espera que utilice CallKit para las llamadas entrantes y salientes. Siga las instrucciones de guía de notificaciones push.
Recibir una invitación de llamada
Para recibir una llamada entrante dentro de la aplicación, debes escuchar las invitaciones de llamada entrante:
Para recibir una llamada entrante dentro de la aplicación, escuche el sonido 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
}
Añade el ViewControllero similar, como delegado del cliente de voz:
client.delegate = self
ViewController ahora tendrán que ajustarse a VGVoiceClientDelegateEl didReceiveInviteForCall será llamada cuando haya una invitación de llamada entrante. Mantenga la referencia a la función callId ya que será necesario para realizar otras operaciones:
extension ViewController: VGVoiceClientDelegate {
func voiceClient(_ client: VGVoiceClient, didReceiveInviteForCall callId: String, from caller: String, withChannelType type: VGVoiceChannelType) {
// Handling incoming callId
}
...
}
A continuación, podrás responder o rechazar la invitación.
Respuesta
// 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
}
}
Rechazar
// 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
}
}
Colgar
Para un 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
}
}
Escuchar eventos de llamada
Para ver actualizaciones sobre el estado de una llamada, por ejemplo, para saber si el otro miembro respondió o colgó la llamada, debes escuchar los eventos de estado de tramo.
Para ver información actualizada sobre el estado de la convocatoria y sus miembros:
// After creating a session
client.on("legStatusUpdate", (callId, legId, status) => {
console.log({callId, legId, status});
});
client.setOnLegStatusUpdate { callId, legId, status ->
// Call leg updates
}
En didReceiveLegStatusUpdateForCall le informará de los cambios en los tramos de llamada de la llamada activa:
extension ViewController: VGVoiceClientDelegate {
func voiceClient(_ client: VGVoiceClient, didReceiveLegStatusUpdateForCall callId: String, withLegId legId: String, andStatus status: String) {
// Call leg updates
}
...
}