Message entrant Webhook

Dans cet extrait de code, vous apprendrez à recevoir un message entrant à l'aide du webhook de message entrant.

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 votre message entrant le webhook est activé dans le tableau de bord. Votre gestionnaire doit au minimum renvoyer un code d'état 200 afin d'éviter toute 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 à inbound-message.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/inbound-message', (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 inbound-message.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 IncomingMessage:

embeddedServer(Netty, port = 8000) {
    routing {
        post ("/webhooks/inbound-message") {
            val messageDetails = InboundMessage.fromJson(call.receive())
            println("Message ID "+messageDetails.getMessageUuid()+" of type " +
                    messageDetails.getMessageType()+" was sent from " +
                    messageDetails.getFrom()+" to "+messageDetails.getTo()+" via "+
                    messageDetails.getChannel()+" at "+messageDetails.getTimestamp()
            )
            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 IncomingMessage:

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

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 IncomingMessage:

Route inboundRoute = (request, response) -> {
	InboundMessage messageDetails = InboundMessage.fromJson(request.body());
	System.out.println(
			"Message ID "+messageDetails.getMessageUuid()+" of type " +
			messageDetails.getMessageType()+" was sent from " +
			messageDetails.getFrom()+" to "+messageDetails.getTo()+" via "+
			messageDetails.getChannel()+" at "+messageDetails.getTimestamp()
	);
	return "OK";
};

Spark.port(3000);
Spark.post("/webhooks/inbound-message", 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 IncomingMessage:

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

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é inbound-message.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 à inbound-message.php:

$json = file_get_contents('php://input');
$data = json_decode($json, true);

$incomingWebhookMessage = \Vonage\Messages\Webhook\Factory::createFromArray($data);

Voir la source complète

Exécutez votre code

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

php inbound-message.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 à inbound-message.py:

from pprint import pprint

from fastapi import FastAPI, Request

app = FastAPI()


@app.post('/webhooks/inbound-message')
async def inbound_message(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/inbound-message.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 à inbound-message.rb:

require 'sinatra'
require 'json'

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

  status 200

  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 inbound-message.rb

Essayez-le

Le webhook est invoqué à la réception d'un message message entrant et les détails et données du message sont imprimés sur la console.