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 :

Conversation

Dans ce tutoriel

Conditions préalables

  1. Créer un Account Vonage - vous n'irez pas loin sans cela.
  2. Louer un Numbers Vonage - vous devriez avoir quelques euros de crédit gratuit. C'est largement suffisant.
  3. Installer les outils de ligne de commande Vonage - vous aurez besoin de Nœud mais l'utilisation de Vonage CLI est rapide et pratique.
  4. 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 :

vonage apps:create "Conversation App" --voice_answer_url=http://demo.ngrok.io/webhooks/answer --voice_event_url=http://demo.ngrok.io/webhooks/event

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 :

vonage apps:link:app APP_ID --number=VONAGE_NUMBER

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 :

JWT="$(vonage jwt --private_key=private.key --app_id=APP_ID)"

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 :

echo $JWT

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 :

python3 app.py

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'

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

bash get-conversation.sh

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.

Ressources