Number Insight Advanced Webhook
Dieses Codeschnipsel zeigt Ihnen, wie Sie den Webhook-Handler programmieren, der die Daten empfängt, die von einem asynchronen Aufruf der Number Insight Advanced API zurückgegeben werden. Siehe die Numbers Insight Erweitert um zu lernen, wie man die erste Anfrage nach den Einsichtsdaten kodiert.
Ersetzen Sie die Variablenplatzhalter, bevor Sie versuchen, die Codebeispiele auszuführen:
| Schlüssel | Beschreibung |
|---|---|
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. |
Voraussetzungen
npm install @vonage/server-sdkErstellen Sie eine Datei mit dem Namen ni-advanced-async.js und fügen Sie den folgenden Code hinzu:
const { Vonage } = require('@vonage/server-sdk');
const vonage = new Vonage({
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
});Schreiben Sie den Code
Fügen Sie Folgendes zu ni-advanced-async.js hinzu:
vonage.numberInsight.asyncAdvancedLookup(
INSIGHT_NUMBER,
INSIGHT_CALLBACK_URL,
)
.then((result) => console.log(result))
.catch((error) => console.error(error));Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Voraussetzungen
Fügen Sie Folgendes zu build.gradle hinzu:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Schreiben Sie den Code
Fügen Sie der Methode main in der Datei AdvancedInsightWebhook Folgendes hinzu:
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)Führen Sie Ihren Code aus
Wir können das Applikation Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.kt.numberinsight durch das Paket, das AdvancedInsightWebhook enthält:
Voraussetzungen
Fügen Sie Folgendes zu build.gradle hinzu:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Schreiben Sie den Code
Fügen Sie der Methode main in der Datei AsyncInsightTrigger Folgendes hinzu:
port(3000);
Spark.post("/webhooks/insight", (req, res) -> {
AdvancedInsightResponse response = Jsonable.fromJson(req.body());
System.out.println("Country: " + response.getCountryName());
res.status(204);
return "";
});Führen Sie Ihren Code aus
Wir können das Applikation Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.insight durch das Paket, das AsyncInsightTrigger enthält:
Voraussetzungen
Install-Package VonageErstellen Sie eine Datei mit dem Namen NumberInsightsController.cs und fügen Sie den folgenden Code hinzu:
using Vonage.Utility;
using System;Schreiben Sie den Code
Fügen Sie Folgendes zu NumberInsightsController.cs hinzu:
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();
}
}
}Voraussetzungen
composer require vonage/clientSchreiben Sie den Code
Fügen Sie Folgendes zu index.php hinzu:
$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);
};Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Voraussetzungen
pip install fastapi[standard]Schreiben Sie den Code
Fügen Sie Folgendes zu main.py hinzu:
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)Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Voraussetzungen
gem install sinatra sinatra/multi-route jsonSchreiben Sie den Code
Fügen Sie Folgendes zu ni-advanced-async.rb hinzu:
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
route :post, '/webhooks/insight' do
puts params.merge(parsed_body)
status 200
end
set :port, 3000Führen Sie Ihren Code aus
Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:
Die Antwort der API enthält die folgenden Daten:
{
"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" }
}
Eine Beschreibung der einzelnen zurückgegebenen Felder und eine Übersicht über alle möglichen Werte finden Sie in der Number Insights API-Dokumentation