Testen mit Ngrok
Wenn Ihre Benutzer mit Vonage interagieren, z. B. indem sie eine Vonage-Nummer anrufen, muss Vonage Ihre Anwendung benachrichtigen, damit diese die erforderlichen Maßnahmen ergreifen kann. Im Falle einer Sprachanwendung könnte dies die Wiedergabe einer Text-to-Speech-Nachricht für den Anrufer sein, wenn Vonage den Anruf entgegennimmt. Vonage kann Ihre Anwendung auch über verschiedene Ereignisse benachrichtigen, die während des Anrufs stattfinden, z. B. wenn der Anrufer auflegt. Diese Benachrichtigungen von Vonage werden implementiert mit Webhaken.
Wenn Sie Ihre Anwendung lokal auf Ihrem Entwicklungsrechner testen, kann Ihr Computer diese Webhook-Benachrichtigungen nicht empfangen, da er sich nicht im öffentlichen Internet befindet.
Eine Möglichkeit, dieses Problem zu umgehen, ist die Verwendung eines kostenlosen Tools namens Ngrok. Ngrok erstellt einen sicheren Tunnel, der das Internet mit Ihrer lokal ausgeführten Anwendung verbindet. Die Benachrichtigungen von Vonage werden dann über Ngrok an Ihren lokalen Rechner weitergeleitet.
Um mit Ngrok zu beginnen, folgen Sie diesen Schritten:
Laden Sie Ngrok herunter und installieren Sie es mit dem Anweisungen für Ihre Plattform.
Starten Sie Ihre Anwendung lokal, und prüfen Sie, welchen Port sie verwendet. Wenn Sie zum Beispiel normalerweise
http://localhost:3000um auf Ihre Anwendung zuzugreifen, dann ist der Port 3000.Erstellen Sie einen Ngrok-Tunnel zu diesem Port mit einem Befehl wie
ngrok http 3000. Sie werden etwas Ähnliches wie das Folgende sehen:
Dieser Befehl zeigt die URL des Tunnels an, die etwa so aussieht
https://abcdef1.ngrok.io. Kopieren Sie diese URL.Konfigurieren Sie Ihre Vonage API-Webhooks auf diese URL zu verweisen.
Beachten Sie, dass Sie jedes Mal, wenn Sie den Ngrok-Tunnel starten, eine neue URL erhalten. Vergessen Sie also nicht, die Webhook-Konfiguration entsprechend zu aktualisieren!
Verwendung mit IIS Express
IIS Express lehnt eingehende Anfragen von Ngrok ab, wenn der Host-Header nicht mit der bindingInformation Muster in seiner Konfiguration. Daher müssen Sie Ngrok so konfigurieren, dass der Hostname im Header mit der IIS Express-Konfiguration übereinstimmt.
Dies kann mit Ngrok's host-header Option. Der folgende Befehl veranschaulicht, wie dies für Port 3000 geschieht:
Wenn Sie dies zu Testzwecken tun und den ursprünglichen Host für etwas benötigen, können Sie ihn aus dem X-Original-Host Kopfzeile.
Konfigurieren Sie IIS Express für den richtigen Port
Überprüfen Sie, ob IIS Express den Port 3000 abhört, oder den Port, für den Sie Ngrok konfiguriert haben, indem Sie Ihr properties/launchSettings.json und vergewissern Sie sich, dass die Portnummer im Feld iisExpress das Objekt applicationUrl mit dem Port übereinstimmt, den Sie für die Weiterleitung von Ngrok konfiguriert haben. Sie sollten auch SSL auf IIS Express deaktivieren, indem Sie die Option sslPort zu 0. Siehe die folgende gültige Konfiguration für IIS Express von launchSettings.json:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:3000/",
"sslPort": 0
}
}
Ngrok-Pläne
Bezahlte Ngrok-Pläne können Tunnelnamen reservieren und beim Start auswählen, welcher verwendet werden soll, so dass Sie Ihre Webhooks nicht neu konfigurieren müssen. Wenn Sie einen bezahlten Ngrok Account haben, können Sie auf Ihrer eigenen Domain starten, indem Sie einen Befehl wie diesen verwenden:
In diesem Fall erhalten Sie etwas Ähnliches wie das Folgende:
Dies hat den Vorteil, dass Sie nicht jedes Mal, wenn Sie Ngrok starten, Ihre Webhooks neu konfigurieren müssen.
Ngrok-Webschnittstelle
Zusätzlich zur Tunnel-URL, die in der Befehlsausgabe angezeigt wird, sehen Sie auch eine URL für die "Web-Schnittstelle" (http://127.0.0.1:4040). Über die Weboberfläche können Sie die Details aller vom Tunnel empfangenen Anfragen und der zurückgegebenen Antworten einsehen. Dies ist ein sehr nützliches Werkzeug zur Fehlersuche.
In der Weboberfläche können Sie auch die Schaltfläche "Replay" verwenden, um eine Anfrage zu wiederholen, anstatt sich selbst viele Textnachrichten zu schicken oder das Ereignis, auf das Ihr Webhook-Code reagiert, ständig zu reproduzieren. Mit diesen Funktionen wird das Testen der Reaktion Ihrer Anwendung auf Webhooks wesentlich bequemer.