Webhook de estado de mensajes

En este fragmento de código aprenderá a recibir actualizaciones del estado de los mensajes mediante el webhook de estado de mensajes.

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 el estado de su mensaje 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 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);

Ver fuente completa

Ejecute su código

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

node message-status.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 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)

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

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

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

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

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

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 message-status.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 message-status.php:

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

Ver fuente completa

Ejecute su código

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

php message-status.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 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)

Ver fuente completa

Ejecute su código

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

fastapi dev messages/message-status.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 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

Ver fuente completa

Ejecute su código

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

ruby message-status.rb

Pruébalo

El webhook se invoca ante un cambio de estado de un mensaje saliente enviado desde Vonage. El estado del mensaje también se imprime en la consola.

El formato del estado del mensaje POST se encuentra en Estado del mensaje sección de la Referencia API.