Message Status Webhook

Dans cet extrait de code, vous apprendrez à recevoir des mises à jour de l'état des messages à l'aide du webhook de l'état des messages.

NOTE : Nous recommandons d'utiliser Authentification basée sur JWT car cela vous permet de configurer les URL de vos webhooks de réception et de livraison au niveau de la page d'accueil. au niveau de l'application. Dans le cas contraire, tous les rappels de vos différentes Applications seront envoyés à votre URL des webhooks au niveau de l'Account.

NOTE : L'API Messages prend en charge webhooks signés afin de pouvoir vérifier qu'une demande provient bien de Vonage et que sa charge utile n'a pas été altérée pendant le transit.

Exemple

Veillez à ce que le statut de votre message le webhook est activé dans le tableau de bord. Votre gestionnaire doit au minimum renvoyer un code d'état 200 afin d'éviter une mise en file d'attente inutile des rappels. Assurez-vous que votre serveur webhook fonctionne avant de tester votre application Messages.

Conditions préalables

Si vous n'avez pas de dossier de candidature, vous pouvez vous adresser à créer un. Veillez également à configurer vos webhooks.

npm install express body-parser

Rédiger le code

Ajouter ce qui suit à message-status.js:

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);

Voir la source complète

Exécutez votre code

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

node message-status.js

Conditions préalables

Si vous n'avez pas de dossier de candidature, vous pouvez vous adresser à créer un. Veillez également à configurer vos webhooks.

Ajouter ce qui suit à build.gradle:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier MessageStatusWebhook:

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)

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :

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

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.messages par le paquet contenant MessageStatusWebhook:

gradle run -Pmain=com.vonage.quickstart.kt.messages.MessageStatusWebhook

Conditions préalables

Si vous n'avez pas de dossier de candidature, vous pouvez vous adresser à créer un. Veillez également à configurer vos webhooks.

Ajouter ce qui suit à build.gradle:

implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier MessageStatusWebhook:

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);

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :

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

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.messages par le paquet contenant MessageStatusWebhook:

gradle run -Pmain=com.vonage.quickstart.messages.MessageStatusWebhook

Conditions préalables

Si vous n'avez pas de dossier de candidature, vous pouvez vous adresser à créer un. Veillez également à configurer vos webhooks.

composer require vonage/client

Créez un fichier nommé message-status.php et ajoutez le code suivant :

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

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

Voir la source complète

Rédiger le code

Ajouter ce qui suit à message-status.php:

$webhook = Vonage\Webhook\Factory::createFromGlobals();

Voir la source complète

Exécutez votre code

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

php message-status.php

Conditions préalables

Si vous n'avez pas de dossier de candidature, vous pouvez vous adresser à créer un. Veillez également à configurer vos webhooks.

pip install fastapi[standard]

Rédiger le code

Ajouter ce qui suit à message-status.py:

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)

Voir la source complète

Exécutez votre code

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

fastapi dev messages/message-status.py

Conditions préalables

Si vous n'avez pas de dossier de candidature, vous pouvez vous adresser à créer un. Veillez également à configurer vos webhooks.

gem install sintatra

Rédiger le code

Ajouter ce qui suit à message-status.rb:

require 'sinatra'
require 'json'

post "/webhooks/messages/status" do
  payload = JSON.parse(request.body.read)
  puts "Received message status webhook:\n#{payload}\n\n"

  status 200
end

set :port, 3000

Voir la source complète

Exécutez votre code

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

ruby message-status.rb

Essayez-le

Le webhook est invoqué en cas de changement d'état d'un message sortant envoyé par Vonage. L'état du message est également imprimé sur la console.

Le format de l'état du message POST peut être trouvée dans le Statut du message de la section Référence API.