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 demande, vous pouvez créer un. Veillez également à configurer vos webhooks.
npm install express body-parserRé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);Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
Si vous n'avez pas de demande, vous pouvez 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)Exécutez votre code
Nous pouvons utiliser le plugin Applications 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') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.messages par le paquet contenant IncomingMessage:
Conditions préalables
Si vous n'avez pas de demande, vous pouvez 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);Exécutez votre code
Nous pouvons utiliser le plugin Applications 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') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.messages par le paquet contenant IncomingMessage:
Conditions préalables
Si vous n'avez pas de demande, vous pouvez créer un. Veillez également à configurer vos webhooks.
composer require vonage/clientCré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);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);Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
Si vous n'avez pas de demande, vous pouvez 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)Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
Si vous n'avez pas de demande, vous pouvez créer un. Veillez également à configurer vos webhooks.
gem install sintatraExécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
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.