Webhook de mensajes entrantes
En este fragmento de código aprenderás a recibir un mensaje entrante mediante el webhook de mensajes entrantes.
NOTA: Recomendamos utilizar Autenticación basada en JWT ya que esto te permite configurar las URL de los webhooks de recepción de mensajes entrantes y de acuse de recibo en el a nivel de aplicación. De lo contrario, todas las devoluciones de llamada de sus diferentes aplicaciones se enviarán a su URL de webhooks a nivel de Account.
NOTA: The Messages API admits webhooks firmados para que puedas comprobar que una solicitud procede de Vonage y que su contenido no ha sido alterado durante la transmisión.
Ejemplo
Asegúrese de que su mensaje entrante El webhook está configurado en el panel de control. Como mínimo, tu controlador debe devolver un código de estado 200 para evitar que se acumulen llamadas de retorno innecesarias. Asegúrate de que tu servidor de webhooks esté en funcionamiento antes de probar tu aplicación de mensajes.
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
npm install express body-parserEscriba el código
Añada lo siguiente a 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);Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Escriba el código
Añada lo siguiente al método main del archivo 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)Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.messages por el paquete que contiene IncomingMessage:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Escriba el código
Añada lo siguiente al método main del archivo 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);Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.messages por el paquete que contiene IncomingMessage:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
composer require vonage/clientCrea un archivo llamado inbound-message.php y añade el siguiente código:
$keypair = new \Vonage\Client\Credentials\Keypair(
file_get_contents(VONAGE_APPLICATION_PRIVATE_KEY_PATH),
VONAGE_APPLICATION_ID
);
$client = new \Vonage\Client($keypair);Escriba el código
Añada lo siguiente a inbound-message.php:
$json = file_get_contents('php://input');
$data = json_decode($json, true);
$incomingWebhookMessage = \Vonage\Messages\Webhook\Factory::createFromArray($data);Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
pip install fastapi[standard]Escriba el código
Añada lo siguiente a 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)Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
gem install sintatraEscriba el código
Añada lo siguiente a 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, 3000Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Pruébalo
El webhook se activa al recibir un mensaje de entrada y los detalles y datos del mensaje se imprimen en la consola.