Hacer una llamada

Esta guía explica cómo realizar 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 recomienda utilizar CallKit para las llamadas entrantes y salientes. Sigue las instrucciones de la Llamadas salientes con iOS CallKit entrada de blog.

Hacer una llamada

El serverCall le permite iniciar una llamada de voz utilizando la función Voice API. Cuando se llama a este método, el answer_url webhook que está configurado para su Aplicación de Vonage se ejecutará. Eso define el lógica y capacidades de la llamada.

// After creating a session
client.serverCall({to:phoneNumberOrUsername})
    .then(callId => {
        console.log("Id of created call: ", callId);
    })
    .catch(error => {
        console.error("Error making call: ", error);
    });

Datos personalizados

Incluir tus propios datos personalizados te permite pasar información contextual, en formato clave-valor, a tu answer_url servidor de webhooks. Si introduces un valor con el to rellenará el nivel superior to en la consulta que hagas a tu servidor webhook. Otros datos estarán bajo el custom_data objeto.

// After creating a session
client.serverCall({to:phoneNumberOrUsername, device_name: "Alice app"})
    .then(callId => {
        console.log("Id of created call: ", callId);
    })
    .catch(error => {
        console.error("Error making call: ", error);
    });

Los datos estarán disponibles en la consulta de la solicitud que se haya realizado a tu answer_url servidor webhook:

{
  "to": "447000000000",
  "from_user": "Alice",
  "conversation_uuid": "CON-8dd32088-66be-42ae-b0af-c9e12ca588ed",
  "uuid": "54c255ca-9c1c-4ecd-b175-a1d022dc7b07",
  "custom_data": {
      "to": "447000000000",
      "device_name": "Alice app"
    }
}

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 consultar las novedades sobre el estado de la convocatoria:

// After creating a session
client.on("legStatusUpdate", (callId, legId, status) => {
    console.log({callId, legId, status});
});

client.on("callInvite", (callId, from, channelType) => {
    // Answer / Reject Call
    console.log({callId, from, channelType});
});

client.on("callHangup", (callId, callQuality, reason) => {
    console.log(`Call ${callId} has hung up, callQuality:${callQuality}, reason:${reason}`);
});

client.on("sessionError", (error) => {
    console.error({error});
});

Referencia