Numbers Insight Webhook avancé
À compter du 4 février 2027, Vonage mettra fin à Vonage Number Insights. Afin d'assurer un soutien ininterrompu et de fournir une solution plus évolutive et à l'épreuve du temps, nous vous encourageons à migrer vers notre offre améliorée : Vonage Identity Insights API. L'API Identity Insights de Vonage consolide plusieurs ensembles de données liées aux numéros de téléphone en une seule API flexible, vous permettant de demander des informations en temps réel sur un numéro de téléphone et de récupérer toute combinaison d'informations - telles que le formatage du numéro, les détails de l'opérateur, le SIM Swap et le Subscriber Match - en un seul appel.
Veuillez consulter le Guide de transition de Numbers Insightsqui fournit des conseils détaillés sur les différences entre les API, les changements nécessaires et les meilleures pratiques pour une transition en douceur.
Cet extrait de code vous montre comment coder le gestionnaire de webhook qui reçoit les données renvoyées par un appel asynchrone à l'API avancée de Number Insight. Voir l'extrait de code Numbers Insight Advanced pour apprendre à coder la requête initiale pour les données d'insight.
Avant d'essayer d'exécuter les exemples de code, remplacez les caractères de remplacement des variables :
| Clé | Description |
|---|---|
VONAGE_API_KEY | Your Vonage API key (see it on your dashboard). |
VONAGE_API_SECRET | Your Vonage API secret (also available on your dashboard). |
INSIGHT_NUMBER | The number you want to retrieve insight information for. |
Conditions préalables
npm install @vonage/server-sdkCréez un fichier nommé ni-advanced-async.js et ajoutez le code suivant :
const { Vonage } = require('@vonage/server-sdk');
const vonage = new Vonage({
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
});Rédiger le code
Ajouter ce qui suit à ni-advanced-async.js:
vonage.numberInsight.asyncAdvancedLookup(
INSIGHT_NUMBER,
INSIGHT_CALLBACK_URL,
)
.then((result) => console.log(result))
.catch((error) => console.error(error));Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
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 AdvancedInsightWebhook:
embeddedServer(Netty, port = 8000) {
routing {
post ("/webhooks/insight") {
val insightDetails = Jsonable.fromJson(call.receive(), AdvancedInsightResponse::class.java)
println(insightDetails)
call.respond(204)
}
}
}.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.numberinsight par le paquet contenant AdvancedInsightWebhook:
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 AsyncInsightTrigger:
port(3000);
Spark.post("/webhooks/insight", (req, res) -> {
AdvancedInsightResponse response = Jsonable.fromJson(req.body());
System.out.println("Country: " + response.getCountryName());
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.insight par le paquet contenant AsyncInsightTrigger:
Conditions préalables
Install-Package VonageCréez un fichier nommé NumberInsightsController.cs et ajoutez le code suivant :
using Vonage.Utility;
using System;Rédiger le code
Ajouter ce qui suit à NumberInsightsController.cs:
var insights = await WebhookParser.ParseWebhookAsync<AdvancedInsightsResponse>
(Request.Body, Request.ContentType);
Console.WriteLine($"Advanced insights received: {insights.RequestId} " +
$"that number's carrier is {insights.CurrentCarrier.Name} " +
$"and it's ported status is: {insights.Ported}");
return NoContent();
}
}
}Conditions préalables
composer require vonage/clientRédiger le code
Ajouter ce qui suit à index.php:
$handler = function (Request $request, Response $response) {
$params = $request->getParsedBody();
error_log($params['status_message']);
error_log($params['country_code']);
error_log($params['current_carrier']['name']);
return $response->withStatus(204);
};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 à main.py:
from fastapi import FastAPI, Request
app = FastAPI()
@app.post('/webhooks/insight')
async def display_advanced_number_insight_info(request: Request):
data = await request.json()
print(data)Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
gem install sinatra sinatra/multi-route jsonExécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
La réponse de l'API contient les données suivantes :
{
"status": 0,
"status_message": "Success",
"lookup_outcome": 0,
"lookup_outcome_message": "Success",
"request_id": "75fa272e-4743-43f1-995e-a684901222d6",
"international_format_number": "447700900000",
"national_format_number": "07700 900000",
"country_code": "GB",
"country_code_iso3": "GBR",
"country_name": "United Kingdom",
"country_prefix": "44",
"request_price": "0.03000000",
"remaining_balance": "10.000000",
"current_carrier": {
"network_code": "23420",
"name": "Hutchison 3G Ltd",
"country": "GB",
"network_type": "mobile"
},
"original_carrier": {
"network_code": "23410",
"name": "Telefonica UK Limited",
"country": "GB",
"network_type": "mobile"
},
"valid_number": "valid",
"reachable": "reachable",
"ported": "ported",
"roaming": { "status": "not_roaming" }
}
Pour une description de chaque champ renvoyé et pour voir toutes les valeurs possibles, voir la section Documentation de Number Insight API