Nachrichtenstatus Webhook
In diesem Codeschnipsel erfahren Sie, wie Sie Aktualisierungen des Nachrichtenstatus mit dem Nachrichtenstatus-Webhook empfangen können.
HINWEIS: Wir empfehlen die Verwendung von JWT-basierte Autorisierung denn so können Sie Ihre Webhook-URLs für eingehende und ausgehende Lieferungen auf der Anwendungsebene. Andernfalls werden alle Rückrufe aus Ihren verschiedenen Applications an Ihre Webhook-URLs auf Account-Ebene.
HINWEIS: Messages API unterstützt signierte Webhooks Damit können Sie verifizieren, dass eine Anfrage von Vonage kommt und die Nutzdaten während der Übertragung nicht manipuliert wurden.
Beispiel
Stellen Sie sicher, dass Ihr Nachrichtenstatus Webhook ist eingestellt auf dem Dashboard. Ihr Handler muss mindestens einen Statuscode 200 zurückgeben, um unnötige Warteschlangen für Rückrufe zu vermeiden. Vergewissern Sie sich, dass Ihr Webhook-Server läuft, bevor Sie Ihre Messages-Anwendung testen.
Voraussetzungen
Wenn Sie keine Bewerbung haben, können Sie einen erstellen aufrufen. Stellen Sie sicher, dass Sie auch Ihre Webhooks konfigurieren.
npm install express body-parserSchreiben Sie den Code
Fügen Sie Folgendes zu message-status.js hinzu:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/webhooks/message-status', (req, res) => {
console.log(req.body);
res.status(200).end();
});
app.listen(3000);Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Voraussetzungen
Wenn Sie keine Bewerbung haben, können Sie einen erstellen aufrufen. Stellen Sie sicher, dass Sie auch Ihre Webhooks konfigurieren.
Fügen Sie Folgendes zu build.gradle hinzu:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Schreiben Sie den Code
Fügen Sie der Methode main in der Datei MessageStatusWebhook Folgendes hinzu:
embeddedServer(Netty, port = 8000) {
routing {
post ("/webhooks/message-status") {
val messageDetails = MessageStatus.fromJson(call.receive())
println(
"Message ID ${messageDetails.getMessageUuid()}" +
"(status ${messageDetails.getStatus()}) was sent at" +
"${messageDetails.getTimestamp()} from ${messageDetails.getFrom()} " +
"to ${messageDetails.getTo()} via ${messageDetails.getChannel()} " +
"using ${messageDetails.getChannel()}."
)
call.respondText("OK")
}
}
}.start(wait = true)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.kt.messages durch das Paket, das MessageStatusWebhook enthält:
Voraussetzungen
Wenn Sie keine Bewerbung haben, können Sie einen erstellen aufrufen. Stellen Sie sicher, dass Sie auch Ihre Webhooks konfigurieren.
Fügen Sie Folgendes zu build.gradle hinzu:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Schreiben Sie den Code
Fügen Sie der Methode main in der Datei MessageStatusWebhook Folgendes hinzu:
Route inboundRoute = (request, response) -> {
MessageStatus messageDetails = MessageStatus.fromJson(request.body());
System.out.println(
"Message ID "+messageDetails.getMessageUuid()+" (status " + messageDetails.getStatus()+
") was sent at "+messageDetails.getTimestamp()+" from " +
messageDetails.getFrom()+" to "+messageDetails.getTo()+" via "+
messageDetails.getChannel()+" using "+messageDetails.getChannel()
);
return "OK";
};
Spark.port(3000);
Spark.post("/webhooks/message-status", inboundRoute);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.messages durch das Paket, das MessageStatusWebhook enthält:
Voraussetzungen
Wenn Sie keine Bewerbung haben, können Sie einen erstellen aufrufen. Stellen Sie sicher, dass Sie auch Ihre Webhooks konfigurieren.
composer require vonage/clientErstellen Sie eine Datei mit dem Namen message-status.php und fügen Sie den folgenden Code hinzu:
$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 message-status.php hinzu:
$webhook = Vonage\Webhook\Factory::createFromGlobals();Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Voraussetzungen
Wenn Sie keine Bewerbung haben, können Sie einen erstellen aufrufen. Stellen Sie sicher, dass Sie auch Ihre Webhooks konfigurieren.
pip install fastapi[standard]Schreiben Sie den Code
Fügen Sie Folgendes zu message-status.py hinzu:
from pprint import pprint
from fastapi import FastAPI, Request, status
app = FastAPI()
@app.post('/webhooks/message-status', status_code=status.HTTP_200_OK)
async def message_status(request: Request):
data = await request.json()
pprint(data)Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Voraussetzungen
Wenn Sie keine Bewerbung haben, können Sie einen erstellen aufrufen. Stellen Sie sicher, dass Sie auch Ihre Webhooks konfigurieren.
gem install sintatraFühren Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Probieren Sie es aus
Der Webhook wird bei einer Statusänderung für eine von Vonage gesendete ausgehende Nachricht aufgerufen. Der Nachrichtenstatus wird auch auf der Konsole ausgegeben.
Das Format des Nachrichtenstatus POST Anfrage finden Sie in der Status der Nachricht Abschnitt der API-Referenz.