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:

In diesem Lernprogramm
- Voraussetzungen
- Erstellen einer Vonage-Anwendung
- Ein JWT erstellen
- Starten Sie Ihren Webhook-Server
- Rufen Sie Ihre Vonage Numbers an
- Details zur Konversation
- Schlussfolgerung
- Ressourcen
Voraussetzungen
- Vonage Account erstellen - Ohne das wirst du nicht weit kommen.
- Eine Vonage Numbers mieten - sollten Sie ein paar Euro freies Guthaben haben. Das ist mehr als genug.
- Installieren Sie die Vonage Command Line Tools - Sie benötigen Knotenpunkt installiert, aber die Verwendung von Vonage CLI ist schnell und bequem.
- 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:
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:
Ein JWT erstellen
Die Conversation API wird mit JWTs authentifiziert. Sie können ein JWT mit dem folgenden Befehl erzeugen:
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:
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:
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'Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Voraussetzungen
npm install @vonage/server-sdkErstellen 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,
});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));Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
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();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);Führen Sie Ihren Code aus
Wir können das Applikation 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:
Voraussetzungen
Install-Package VonageErstellen 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;Fügen Sie Folgendes zu GetConversation.cs hinzu:
var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH);
var client = new VonageClient(credentials);Schreiben Sie den Code
Fügen Sie Folgendes zu GetConversation.cs hinzu:
var response = await client.ConversationsClient.GetConversationAsync(GetConversationRequest.Parse(CONV_ID));Voraussetzungen
composer require vonage/clientErstellen 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);Schreiben Sie den Code
Fügen Sie Folgendes zu get-conversation.php hinzu:
$conversation = $client->conversation()->getConversationById(CONVERSATION_ID);Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
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.