Récépissés de livraison
Vous pouvez vérifier qu'un message que vous avez envoyé à l'aide de l'API SMS de Vonage est parvenu à votre client en demandant un récépissé de livraison du transporteur.
NOTE : Tous les réseaux et tous les pays ne prennent pas en charge les accusés de réception. Vous pouvez consulter notre base de connaissances pour obtenir de plus amples informations sur ce que vous pouvez faire. pourrait recevoir si votre réseau ne prend pas en charge les accusés de réception. Pour plus d'informations sur les accusés de réception, voir notre la documentation.
Pour accéder au récépissé de livraison, vous devez :
- Créer un point de terminaison webhook en utilisant l'un des exemples de code ci-dessous
- Configurez le point de terminaison du webhook dans votre tableau de bord Vonage.
NOTE : Après avoir envoyé un message, il peut s'écouler un certain temps avant que vous ne receviez l'accusé de réception.
Conditions préalables
Ajouter ce qui suit à build.gradle:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Rédiger le code
Ajouter ce qui suit à la méthode main du fichier 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)Exécutez votre code
Nous pouvons utiliser le plugin Applications pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.sms par le paquet contenant ReceiveSmsDlr:
Conditions préalables
Ajouter ce qui suit à build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Rédiger le code
Ajouter ce qui suit à la méthode main du fichier 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 "";
});Exécutez votre code
Nous pouvons utiliser le plugin Applications pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.sms par le paquet contenant ReceiveDlr:
Conditions préalables
Install-Package VonageCréez un fichier nommé SmsController.cs et ajoutez le code suivant :
{
[HttpGet("webhooks/inbound-sms")] Rédiger le code
Ajouter ce qui suit à 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);Conditions préalables
composer require slim/slim:^3.8 vonage/clientCréez un fichier nommé index.php et ajoutez le code suivant :
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;Ajouter ce qui suit à index.php:
$app = new \Slim\App;Rédiger le code
Ajouter ce qui suit à 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();Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
pip install fastapi[standard]Rédiger le code
Ajouter ce qui suit à 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)Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
gem install sinatra sinatra-contribCréez un fichier nommé delivery_receipt.rb et ajoutez le code suivant :
Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Configurez le point de terminaison du webhook dans votre tableau de bord Vonage.
Pour que Vonage sache comment accéder à votre webhook, vous devez le configurer dans votre Account Vonage.
Dans les extraits de code, le webhook est situé à l'adresse suivante /webhooks/delivery-receipt. Si vous utilisez Ngrok, le webhook que vous devez configurer dans votre Page des paramètres de l'API du tableau de bord de Vonage est de la forme https://demo.ngrok.io/webhooks/delivery-receipt. Remplacer demo avec le sous-domaine fourni par Ngrok et entrez votre point de terminaison dans le champ intitulé URL du Webhook pour les accusés de réception:

Essayez-le
Envoyer un message à un numéro de téléphone portable et, si le réseau le prend en charge, vous recevrez un accusé de réception au format suivant :
{
"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"
}
NOTE : Après avoir envoyé un message, il peut s'écouler un certain temps avant que vous ne receviez l'accusé de réception.