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:

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)

Ver código-fonte completo

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

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

Ver código-fonte completo

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

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

Pré-requisitos

Install-Package Vonage

Crie um arquivo chamado ` SmsController.cs ` e insira o seguinte código:

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

Ver código-fonte completo

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

Ver código-fonte completo

Pré-requisitos

composer require slim/slim:^3.8 vonage/client

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

Ver código-fonte completo

Adicione o seguinte ao arquivo ` index.php`:

$app = new \Slim\App;

Ver código-fonte completo

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php -S localhost:3000 -t .

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)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

fastapi dev sms/delivery-receipts.py

Pré-requisitos

gem install sinatra sinatra-contrib

Crie 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
end

Ver código-fonte completo

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby delivery_receipt.rb

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.

Mais informações