Comprovantes de entrega
Você pode verificar se uma mensagem enviada por meio da SMS API da Vonage chegou ao seu cliente solicitando um recibo de entrega da transportadora.
NOTA: Nem todas as redes e países oferecem o recurso de confirmação de entrega. Você pode consultar nossa base de conhecimento para obter mais informações sobre o que você pode receber se a sua rede não for compatível com recibos de entrega. Para obter informações detalhadas sobre recibos de entrega, consulte nosso documentação.
Para acessar o comprovante de entrega, é necessário:
- Criar um endpoint de webhook usando um dos exemplos de código apresentados a seguir
- Configure o endpoint do webhook no seu Painel da Vonage
NOTA: Depois de enviar uma mensagem, pode haver um atraso até você receber o aviso de entrega.
Pré-requisitos
Adicione o seguinte ao arquivo ` build.gradle`:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Escreva o código
Adicione o seguinte ao método ` main ` do arquivo ` 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)Execute seu código
Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.sms ` pelo pacote que contém ` ReceiveSmsDlr`:
Pré-requisitos
Adicione o seguinte ao arquivo ` build.gradle`:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Escreva o código
Adicione o seguinte ao método ` main ` do arquivo ` 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 "";
});Execute seu código
Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.sms ` pelo pacote que contém ` ReceiveDlr`:
Pré-requisitos
Install-Package VonageCrie um arquivo chamado ` SmsController.cs ` e insira o seguinte código:
{
[HttpGet("webhooks/inbound-sms")] Escreva o código
Adicione o seguinte ao arquivo ` 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);Pré-requisitos
composer require slim/slim:^3.8 vonage/clientCrie um arquivo chamado ` index.php ` e insira o seguinte código:
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;Adicione o seguinte ao arquivo ` index.php`:
$app = new \Slim\App;Escreva o código
Adicione o seguinte ao arquivo ` 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();Execute seu código
Salve este arquivo no seu computador e execute-o:
Pré-requisitos
pip install fastapi[standard]Escreva o código
Adicione o seguinte ao arquivo ` 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)Execute seu código
Salve este arquivo no seu computador e execute-o:
Pré-requisitos
gem install sinatra sinatra-contribCrie um arquivo chamado ` delivery_receipt.rb ` e insira o seguinte 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
endEscreva o código
Adicione o seguinte ao arquivo ` delivery_receipt.rb`:
route :get, :post, '/webhooks/delivery-receipt' do
puts params.merge(parsed_body)
status 204
end
set :port, 3000Execute seu código
Salve este arquivo no seu computador e execute-o:
Configure o endpoint do webhook no seu Painel da Vonage
Para que a Vonage saiba como acessar seu webhook, você deve configurá-lo no seu Account da Vonage.
Nos trechos de código, o webhook está localizado em /webhooks/delivery-receipt. Se você estiver usando o Ngrok, o webhook que você precisa configurar no seu Página de configurações da API do Painel do Vonage tem a forma https://demo.ngrok.io/webhooks/delivery-receipt. Substituir demo com o subdomínio fornecido pelo Ngrok e insira seu endpoint no campo intitulado URL do webhook para recibos de entrega:

Experimente
Enviar uma mensagem para um número de celular e, se a rede for compatível, você receberá um comprovante de entrega no seguinte 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: Depois de enviar uma mensagem, pode haver um atraso até você receber o aviso de entrega.