Récupérer les détails de la conversation
Vous pouvez récupérer les détails d'un objet Conversation pour un appel vocal à l'aide de la Conversation API.
Bien que ce tutoriel porte spécifiquement sur la récupération des détails d'un appel vocal, il existe de nombreux autres cas d'utilisation possibles avec d'autres capacités, tels qu'un appel vidéo ou une session de chat textuel. L'objectif de ce tutoriel est de fournir un aperçu de la structure d'une conversation, car la conversation est un objet important qui sous-tend une grande partie de la technologie Vonage. Il s'agit d'une structure de données fondamentale pour les activités de communication, car toutes les communications s'effectuent par le biais d'une conversation.
La configuration que vous aurez dans ce tutoriel est illustrée dans le diagramme suivant :

Dans ce tutoriel
- Conditions préalables
- Créer une application Vonage
- Créer un JWT
- Lancez votre serveur webhook
- Appelez votre Numbers Vonage
- Obtenir les détails de la conversation
- Conclusion
- Ressources
Conditions préalables
- Créer un Account Vonage - vous n'irez pas loin sans cela.
- Louer un Numbers Vonage - vous devriez avoir quelques euros de crédit gratuit. C'est largement suffisant.
- Installer les outils de ligne de commande Vonage - vous aurez besoin de Nœud mais l'utilisation de Vonage CLI est rapide et pratique.
- Vous devez avoir Python 3 et Flacon installés. Ces éléments sont nécessaires pour votre serveur webhook.
Ce tutoriel suppose que vous exécutez Ngrok afin d'exécuter votre webhook localement.
Si vous ne connaissez pas Ngrok, veuillez vous référer à notre Tutoriel Ngrok avant de poursuivre.
Vous aurez également besoin de deux téléphones pour ce tutoriel !
Alors, si vous êtes prêt à poursuivre...
Créer une application Vonage
Vous devrez d'abord créer une Applications Vonage si vous ne l'avez pas encore fait :
Dans la commande précédente, vous devez remplacer demo par ce qui s'applique à votre configuration.
Notez l'identifiant d'application généré (APP_ID), vous en aurez besoin lorsque vous générerez un JWT.
Associez un numéro Vonage à votre Applications
Si vous avez déjà loué un numéro Vonage (VONAGE_NUMBER), vous pouvez lier votre numéro Vonage à votre application dans le tableau de bord ou via la ligne de commande :
Créer un JWT
L'API Conversation est authentifiée à l'aide de JWT. Vous pouvez générer un JWT à l'aide de la commande suivante :
Vous devez remplacer APP_ID avec l'identifiant de votre application. En outre, private.key est la clé associée à cette même application.
NOTE : Ce JWT est valable un jour.
Vous pouvez ensuite visualiser le JWT avec :
TIP : Vous pouvez vérifier votre JWT à l'adresse suivante jwt.io.
Lancez votre serveur webhook
Vous devez exécuter un serveur webhook pour obtenir l'ID de conversation de l'appel en cours. Le code Python suivant suffira :
from flask import Flask, request, jsonify
from pprint import pprint
app = Flask(__name__)
ncco = [{
"action": "connect",
"endpoint": [{
"type": 'phone',
"number": 'TO_NUMBER'
}]
}]
@app.route("/webhooks/answer")
def answer_call():
params = request.args
pprint(params)
return jsonify(ncco)
if __name__ == '__main__':
app.run(port=3000)
IMPORTANT : Vous devez remplacer TO_NUMBER avec le numéro de votre deuxième téléphone, le téléphone 2 (Bob).
Exécutez ce serveur webhook localement avec :
Appelez votre Numbers Vonage
Composez votre Numbers Vonage avec le téléphone 1 (Alice). L'appel entrant est transféré sur votre deuxième téléphone, le téléphone 2 (Bob). Répondez à l'appel sur le téléphone 2 (Bob). N'annulez pas l'appel à ce stade.
Vérifiez maintenant la journalisation produite par votre serveur webhook. Vous devriez voir quelque chose de similaire :
...
{
'conversation_uuid': 'CON-bc643220-2542-499a-892e-c982c4150c06',
'from': '447700000001',
'to': '447700000002',
'uuid': '797168e24c19a3c45e74e05b10fef2b5'
}
...
Vous n'êtes intéressé que par l'ID de la conversation qui a la forme suivante CON-<uuid>. Copiez et collez cet identifiant dans un endroit pratique.
Obtenir les détails de la conversation
Vous pouvez récupérer les détails de l'objet Conversation pour l'appel en cours en exécutant la commande suivante dans un autre onglet du terminal.
NOTE : Vous devez vous assurer que vous remplacez $CONVERSATION_ID par l'identifiant que vous avez obtenu précédemment et $JWT par le JWT que vous avez créé précédemment.
Obtenez les détails de la conversation pour l'appel vocal en procédant comme suit :
Rédiger le code
Ajouter ce qui suit à get-conversation.sh:
curl "https://api.nexmo.com/v1/conversations/$CONV_ID" \
-H 'Authorization: Bearer '$JWT\
-H 'Content-Type: application/json'Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
npm install @vonage/server-sdkCréez un fichier nommé get-conversation.js et ajoutez le code suivant :
const { Vonage } = require('@vonage/server-sdk');
const vonage = new Vonage({
applicationId: VONAGE_APPLICATION_ID,
privateKey: VONAGE_PRIVATE_KEY,
});Rédiger le code
Ajouter ce qui suit à get-conversation.js:
vonage.conversations.getConversation(CONV_ID)
.then((conversation) => console.log(conversation))
.catch((error) => console.error(error));Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
Ajouter ce qui suit à build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'Créez un fichier nommé GetConversation et ajoutez le code suivant à la méthode main:
VonageClient client = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();Rédiger le code
Ajouter ce qui suit à la méthode main du fichier GetConversation:
var conversation = client.getConversationsClient().getConversation(CONV_ID);
System.out.println(conversation);Exécutez votre code
Nous pouvons utiliser le plugin Applications pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.conversation par le paquet contenant GetConversation:
Conditions préalables
Install-Package VonageCréez un fichier nommé GetConversation.cs et ajoutez le code suivant :
using System;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Vonage;
using Vonage.Conversations.GetConversation;
using Vonage.Request;Ajouter ce qui suit à GetConversation.cs:
var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH);
var client = new VonageClient(credentials);Rédiger le code
Ajouter ce qui suit à GetConversation.cs:
var response = await client.ConversationsClient.GetConversationAsync(GetConversationRequest.Parse(CONV_ID));Conditions préalables
composer require vonage/clientCréez un fichier nommé get-conversation.php et ajoutez le code suivant :
Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Cet appel à l'API vous donnera une réponse similaire à la suivante :
{
"id": "CON-bc643220-2542-499a-892e-c982c4150c06",
"name": "NAM-1b2c4274-e3f2-494e-89c4-46856ee84a8b",
"timestamp": {
"created": "2018-10-25T09:26:18.999Z"
},
"sequence_number": 8,
"numbers": {},
"properties": {
"ttl": 172800,
"video": false
},
"members": [
{
"member_id": "MEM-f44c872e-cba9-444f-88ae-0bfa630865a6",
"user_id": "USR-33a51f4d-d06b-42f6-a525-90d2859ab9f6",
"name": "USR-33a51f4d-d06b-42f6-a525-90d2859ab9f6",
"state": "JOINED",
"timestamp": {
"joined": "2018-10-25T09:26:30.334Z"
},
"channel": {
"type": "phone",
"id": "797168e24c19a3c45e74e05b10fef2b5",
"from": {
"type": "phone",
"number": "447700000001"
},
"to": {
"type": "phone",
"number": "447700000002"
},
"leg_ids": [
"797168e24c19a3c45e74e05b10fef2b5"
]
},
"initiator": {
"joined": {
"isSystem": true
}
}
},
{
"member_id": "MEM-25ccda92-839d-4ac6-a7b2-de310224878b",
"user_id": "USR-b9948493-be4a-4b36-bb4d-c96bcc2af85b",
"name": "vapi-user-f59c1ff26c0543fdb6c02fd30617a1c0",
"state": "JOINED",
"timestamp": {
"invited": "2018-10-25T09:26:19.385Z",
"joined": "2018-10-25T09:26:30.270Z"
},
"invited_by": "USR-b9948493-be4a-4b36-bb4d-c96bcc2af85b",
"channel": {
"type": "phone",
"id": "30cecc87-7ac9-4d03-910a-e9d69558263c",
"from": {
"number": "Unknown",
"type": "phone"
},
"leg_ids": [
"30cecc87-7ac9-4d03-910a-e9d69558263c"
],
"to": {
"number": "447700000001",
"type": "phone"
},
"cpa": false,
"preanswer": false,
"ring_timeout": 60000,
"cpa_time": 5000,
"max_length": 7200000
},
"initiator": {
"invited": {
"isSystem": true
}
}
}
],
"_links": {
"self": {
"href": "https://api.nexmo.com/v0.3/conversations/CON-bc643220-2542-499a-892e-c982c4150c06"
}
}
}
Cette réponse est expliquée plus en détail dans le Conversation sujet.
Vous pouvez maintenant raccrocher le téléphone 1 (Alice) et le téléphone 2 (Bob) pour mettre fin à l'appel.
Conclusion
Vous avez vu comment utiliser la Conversation API pour obtenir l'objet Conversation d'un appel vocal.