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 su red no admite recibos de entrega. Para obtener información detallada sobre los recibos de entrega, consulte nuestra documentación.
Para acceder al recibo de entrega, debe:
- Crear un punto final de webhook utilizando uno de los ejemplos de código que se muestran a continuación
- Configura el punto final de webhook en tu panel de Vonage
NOTA: Después de enviar un mensaje puede haber un retraso antes de recibir 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)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:
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 "";
});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:
Requisitos previos
Install-Package VonageCrea un archivo llamado SmsController.cs y añade el siguiente código:
{
[HttpGet("webhooks/inbound-sms")] 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);Requisitos previos
composer require slim/slim:^3.8 vonage/clientCrea 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;Añada lo siguiente a index.php:
$app = new \Slim\App;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();Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
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)Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
gem install sinatra sinatra-contribCrea un archivo llamado delivery_receipt.rb y añade el siguiente código:
Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
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 es de 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 de Webhook para recibos de entrega:

Pruébalo
Enviar un mensaje a un número de móvil y, si la red lo admite, recibirá 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: Después de enviar un mensaje puede haber un retraso antes de recibir el acuse de recibo.