Recibos de entrega

Puedes verificar que un mensaje que enviaste usando la API de SMS de Vonage llegó a tu cliente solicitando un recibo de entrega del transportista.

NOTA: No todas las redes y países admiten recibos de entrega. Puede consultar nuestra base de conocimientos para obtener más información sobre lo que podría recibir si tu red no admite los acuses de recibo. Para obtener información detallada sobre los acuses de recibo, consulta nuestra documentación.

Para acceder al albarán de entrega, debes:

NOTA: Una vez enviado el mensaje, es posible que haya un pequeño retraso antes de que recibas el acuse de recibo.

Requisitos previos

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

embeddedServer(Netty, port = 8000) {
    routing {
        route("/webhooks/delivery-receipt") {
            handle {
                if (call.request.queryParameters.isEmpty()) {
                    val json = call.receive<String>()
                    println(json)
                }
                else {
                    call.request.queryParameters.forEach { key, values ->
                        println("$key: ${values.first()}")
                    }
                }
                call.respond(HttpStatusCode.NoContent)
            }
        }
    }
}.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.sms por el paquete que contiene ReceiveSmsDlr:

gradle run -Pmain=com.vonage.quickstart.kt.sms.ReceiveSmsDlr

Requisitos previos

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

port(3000);

get("/webhooks/delivery-receipt", (req, res) -> {
    for (String param : req.queryParams()) {
        System.out.printf("%s: %s\n", param, req.queryParams(param));
    }
    res.status(204);
    return "";
});

post("/webhooks/delivery-receipt", (req, res) -> {
    // The body will be form-encoded or a JSON object:
    if (req.contentType().startsWith("application/x-www-form-urlencoded")) {
        for (String param : req.queryParams()) {
            System.out.printf("%s: %s\n", param, req.queryParams(param));
        }
    } else {
        System.out.println(req.body());
    }

    res.status(204);
    return "";
});

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.sms por el paquete que contiene ReceiveDlr:

gradle run -Pmain=com.vonage.quickstart.sms.ReceiveDlr

Requisitos previos

Install-Package Vonage

Crea un archivo llamado SmsController.cs y añade el siguiente código:

{
    [HttpGet("webhooks/inbound-sms")]        

Ver fuente completa

Escriba el código

Añada lo siguiente a SmsController.cs:

}

[HttpGet("webhooks/verify-sms")]
public IActionResult VerifySms()
{
    var vonageApiSignatureSecret = Environment.GetEnvironmentVariable("VONAGE_API_SIGNATURE_SECRET") ?? "VONAGE_API_SIGNATURE_SECRET";
    var sms = WebhookParser.ParseQuery<InboundSms>(Request.Query);

Ver fuente completa

Requisitos previos

composer require slim/slim:^3.8 vonage/client

Crea un archivo llamado index.php y añade el siguiente código:

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

Ver fuente completa

Añada lo siguiente a index.php:

$app = new \Slim\App;

Ver fuente completa

Escriba el código

Añada lo siguiente a index.php:

$handler = function (Request $request, Response $response) {
    $receipt = \Vonage\SMS\Webhook\Factory::createFromRequest($request);

    error_log(print_r($receipt, true));

    return $response->withStatus(204);
};

$app->map(['GET', 'POST'], '/webhooks/delivery-receipt', $handler);

$app->run();

Ver fuente completa

Ejecute su código

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

php -S localhost:3000 -t .

Requisitos previos

pip install fastapi[standard]

Escriba el código

Añada lo siguiente a delivery-receipts.py:

from pprint import pprint

from fastapi import FastAPI, Request

app = FastAPI()


@app.post('/webhooks/delivery-receipt')
async def get_delivery_receipt(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 sms/delivery-receipts.py

Requisitos previos

gem install sinatra sinatra-contrib

Crea un archivo llamado delivery_receipt.rb y añade el siguiente código:

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
     json? ? JSON.parse(request.body.read) : {}
  end

  def json?
    request.content_type == 'application/json'
  end
end

Ver fuente completa

Escriba el código

Añada lo siguiente a delivery_receipt.rb:

route :get, :post, '/webhooks/delivery-receipt' do
  puts params.merge(parsed_body)
  status 204
end

set :port, 3000

Ver fuente completa

Ejecute su código

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

ruby delivery_receipt.rb

Configura el punto final de webhook en tu panel de Vonage

Para que Vonage sepa cómo acceder a tu webhook, debes configurarlo en tu Account de Vonage.

En los fragmentos de código, el webhook se encuentra en /webhooks/delivery-receipt. Si está utilizando Ngrok, el webhook que necesita configurar en su Página de configuración de API del panel de control de Vonage tiene la forma https://demo.ngrok.io/webhooks/delivery-receipt. Sustituir demo con el subdominio proporcionado por Ngrok e introduzca su punto final en el campo denominado URL del webhook para los recibos de entrega:

Pruébalo

Enviar un mensaje a un número de móvil y, si la red lo permite, recibirás un acuse de recibo con el siguiente formato:

{
  "err-code": "0",
  "message-timestamp": "2020-10-25 12:10:29",
  "messageId": "0B00000127FDBC63",
  "msisdn": "447700900000",
  "network-code": "23410",
  "price": "0.03330000",
  "scts": "1810251310",
  "status": "delivered",
  "to": "Vonage"
}

NOTA: Una vez enviado el mensaje, es posible que haya un pequeño retraso antes de que recibas el acuse de recibo.

Más información