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-parser

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node inbound-message.js

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)

Ver fuente completa

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:

gradle run -Pmain=com.vonage.quickstart.kt.messages.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);

Ver fuente completa

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:

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

Requisitos previos

Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.

composer require vonage/client

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

Ver fuente completa

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php inbound-message.php

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)

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

fastapi dev messages/inbound-message.py

Requisitos previos

Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.

gem install sintatra

Escriba 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, 3000

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby inbound-message.rb

Pruébalo

El webhook se activa al recibir un mensaje de entrada y los detalles y datos del mensaje se imprimen en la consola.