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

Voraussetzungen

npm install @vonage/server-sdk

Erstellen Sie eine Datei mit dem Namen get-conversation.js und fügen Sie den folgenden Code hinzu:

const { Vonage } = require('@vonage/server-sdk');

const vonage = new Vonage({
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_PRIVATE_KEY,
});

Vollständige Quelle anzeigen

Schreiben Sie den Code

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

vonage.conversations.getConversation(CONV_ID)
  .then((conversation) => console.log(conversation))
  .catch((error) => console.error(error));

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

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

node get-conversation.js

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

implementation 'com.vonage:server-sdk:9.3.1'

Erstellen Sie eine Datei mit dem Namen GetConversation und fügen Sie den folgenden Code in die Methode main ein:

VonageClient client = VonageClient.builder()
        .applicationId(VONAGE_APPLICATION_ID)
        .privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
        .build();

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei GetConversation Folgendes hinzu:

var conversation = client.getConversationsClient().getConversation(CONV_ID);
System.out.println(conversation);

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.conversation durch das Paket, das GetConversation enthält:

gradle run -Pmain=com.vonage.quickstart.conversation.GetConversation

Voraussetzungen

Install-Package Vonage

Erstellen Sie eine Datei mit dem Namen GetConversation.cs und fügen Sie den folgenden Code hinzu:

using System;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Vonage;
using Vonage.Conversations.GetConversation;
using Vonage.Request;

Vollständige Quelle anzeigen

Fügen Sie Folgendes zu GetConversation.cs hinzu:

var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH);
var client = new VonageClient(credentials);

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu GetConversation.cs hinzu:

var response = await client.ConversationsClient.GetConversationAsync(GetConversationRequest.Parse(CONV_ID));

Vollständige Quelle anzeigen

Voraussetzungen

composer require vonage/client

Erstellen Sie eine Datei mit dem Namen get-conversation.php und fügen Sie den folgenden Code hinzu:

use Vonage\Conversation\ConversationObjects\CreateConversationRequest;

require_once __DIR__ . '../../config.php';
require_once __DIR__ . '../../vendor/autoload.php';

$keypair = new \Vonage\Client\Credentials\Keypair(
    file_get_contents(VONAGE_APPLICATION_PRIVATE_KEY_PATH),
    VONAGE_APPLICATION_ID
);

$client = new \Vonage\Client($keypair);

Vollständige Quelle anzeigen

Schreiben Sie den Code

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

$conversation = $client->conversation()->getConversationById(CONVERSATION_ID);

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

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

php get-conversation.php

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