Gesprächsdetails abrufen

Sie können die Details eines Conversation-Objekts für einen Sprachanruf mit der Conversation API abrufen.

Dieses Tutorial befasst sich zwar speziell mit dem Abrufen der Details eines Sprachanrufs, aber es gibt viele andere mögliche Anwendungsfälle mit anderen Funktionen, wie z. B. einen Videoanruf oder eine Text-Chat-Sitzung. Der Zweck dieses Tutorials ist es, einen Einblick in die Struktur einer Konversation zu geben, da die Konversation ein wichtiges Objekt ist, das einem Großteil der Vonage-Technologie zugrunde liegt. Sie ist eine grundlegende Datenstruktur für Kommunikationsaktivitäten, da die gesamte Kommunikation über eine Konversation erfolgt.

Das folgende Diagramm veranschaulicht den Aufbau, den Sie in diesem Lernprogramm verwenden werden:

Conversation

In diesem Lernprogramm

Voraussetzungen

  1. Vonage Account erstellen - Ohne das wirst du nicht weit kommen.
  2. Eine Vonage Numbers mieten - sollten Sie ein paar Euro freies Guthaben haben. Das ist mehr als genug.
  3. Installieren Sie die Vonage Command Line Tools - Sie benötigen Knotenpunkt installiert, aber die Verwendung von Vonage CLI ist schnell und bequem.
  4. Sie sollten Folgendes haben Python 3 und Flachmann installiert. Diese werden für Ihren Webhook-Server benötigt.

Diese Anleitung geht davon aus, dass Sie Ngrok für die Ausführung Ihrer Webhook Server lokal.

Wenn Sie mit Ngrok nicht vertraut sind, lesen Sie bitte unsere Ngrok-Anleitung bevor Sie fortfahren.

Für dieses Tutorial benötigen Sie außerdem zwei Telefone!

Wenn Sie also bereit sind, weiterzumachen...

Erstellen einer Vonage-Applikation

Zunächst müssen Sie eine Vonage Application erstellen, falls Sie dies noch nicht getan haben:

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

In diesem vorherigen Befehl müssen Sie Folgendes ersetzen demo nach dem, was auf Ihre Einrichtung zutrifft.

Notieren Sie sich die generierte Application ID (APP_ID), benötigen Sie diese, wenn Sie ein JWT erzeugen.

Verknüpfen Sie eine Vonage Numbers mit Ihrer Applikation

Angenommen, Sie haben bereits eine Vonage Numbers gemietet (VONAGE_NUMBER), können Sie Ihre Vonage Numbers mit Ihrer Anwendung im Dashboard oder über die Befehlszeile verknüpfen:

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

Ein JWT erstellen

Die Conversation API wird mit JWTs authentifiziert. Sie können ein JWT mit dem folgenden Befehl erzeugen:

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

Sie müssen Folgendes ersetzen APP_ID mit der ID für Ihre Anwendung. Auch, private.key ist der Schlüssel, der zu dieser Anwendung gehört.

HINWEIS: Dieser JWT ist einen Tag lang gültig.

Sie können die JWT dann mit anzeigen:

echo $JWT

TIPP: Sie können Ihren JWT verifizieren unter jwt.io.

Starten Sie Ihren Webhook-Server

Sie müssen einen Webhook-Server ausführen, um die Conversation ID für den laufenden Anruf zu erhalten. Der folgende Python-Code ist dafür ausreichend:

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)

WICHTIG! Sie müssen Folgendes ersetzen TO_NUMBER mit der Nummer Ihres zweiten Telefons, Telefon 2 (Bob).

Führen Sie diesen Webhook-Server lokal mit aus:

python3 app.py

Rufen Sie Ihre Vonage Numbers an

Wählen Sie Ihre Vonage-Nummer mit Telefon 1 (Alice). Der eingehende Anruf wird an Ihr zweites Telefon, Telefon 2 (Bob), weitergeleitet. Nehmen Sie den Anruf auf Telefon 2 (Bob) entgegen. Beenden Sie den Anruf zu diesem Zeitpunkt nicht.

Überprüfen Sie nun die von Ihrem Webhook-Server erstellte Protokollierung. Sie sollten etwas Ähnliches sehen wie:

...
{
   'conversation_uuid': 'CON-bc643220-2542-499a-892e-c982c4150c06',
   'from': '447700000001',
   'to': '447700000002',
   'uuid': '797168e24c19a3c45e74e05b10fef2b5'
}
...

Sie sind nur an der Conversation ID interessiert, die die Form CON-<uuid>. Kopieren Sie diese ID und fügen Sie sie an einem geeigneten Ort ein.

Details zur Konversation

Sie können die Details des Gesprächsobjekts für den aktuellen Anruf abrufen, indem Sie den folgenden Befehl in einem anderen Terminalregister ausführen.

HINWEIS: Sie müssen sicherstellen, dass Sie Folgendes ersetzen $CONVERSATION_ID mit der zuvor erhaltenen ID und $JWT durch das zuvor erstellte JWT.

Die Gesprächsdetails für den Sprachanruf erhalten Sie wie folgt:

Schreiben Sie den Code

Fügen Sie Folgendes zu get-conversation.sh hinzu:

curl "https://api.nexmo.com/v1/conversations/$CONV_ID" \
     -H 'Authorization: Bearer '$JWT\
     -H 'Content-Type: application/json'

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

bash get-conversation.sh

Mit diesem API-Aufruf erhalten Sie eine Antwort ähnlich der folgenden:

{
    "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"
        }
    }
}

Diese Antwort wird in der folgenden Tabelle näher erläutert Konversation Thema.

Sie können nun Telefon 1 (Alice) und Telefon 2 (Bob) auflegen, um das Gespräch zu beenden.

Schlussfolgerung

Sie haben gesehen, wie man die Conversation API verwendet, um das Gesprächsobjekt für einen Sprachanruf zu erhalten.

Ressourcen