Passer un appel

Ce guide explique comment faire un appel avec le Vonage Client SDK. Avant de commencer, assurez-vous d'avoir ajouté le SDK à votre application et (Android, iOS, JS).

NOTE : Sur iOS, il est prévu que vous utilisiez CallKit pour les appels entrants et sortants. Veuillez suivre les instructions de Appels sortants à l'aide d'iOS CallKit blog post.

Passer un appel

Les serverCall vous permet d'initier un appel vocal en utilisant la fonction riche en fonctionnalités Voice API. Lorsque cette méthode est appelée, le answer_url webhook qui est configuré pour votre Applications Vonage s'exécutera. Cela définit le logique et capacités de l'appel.

// 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);
    });

Données personnalisées

L'inclusion de vos propres données personnalisées vous permet de transmettre un contexte, dans un format clé-valeur, à votre answer_url serveur webhook. Si vous fournissez une valeur avec l'option to il remplira le niveau supérieur to dans la requête que vous adressez à votre serveur webhook. Les autres données se trouvent dans la section custom_data objet.

// 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);
    });

Les données seront disponibles sur la requête faite à votre answer_url serveur 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"
    }
}

Écouter les événements de l'appel

Pour connaître l'état d'un appel, par exemple pour savoir si l'autre membre a répondu ou raccroché, vous devez écouter les événements relatifs à l'état des segments.

Pour voir les mises à jour de l'état de l'appel :

// 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});
});

Référence