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:

  1. Laden Sie Ngrok herunter und installieren Sie es mit dem Anweisungen für Ihre Plattform.

  2. Starten Sie Ihre Anwendung lokal, und prüfen Sie, welchen Port sie verwendet. Wenn Sie zum Beispiel normalerweise http://localhost:3000 um auf Ihre Anwendung zuzugreifen, dann ist der Port 3000.

  3. Erstellen Sie einen Ngrok-Tunnel zu diesem Port mit einem Befehl wie ngrok http 3000. Sie werden etwas Ähnliches wie das Folgende sehen:

ngrok by @inconshreveable (Ctrl+C to quit) Session Status online Account YourUsername (Plan: Free) Version 2.3.35 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://abcdef1.ngrok.io -> http://localhost:3000 Forwarding https://abcdef1.ngrok.io -> http://localhost:3000 Connections ttl opn rt1 rt5 p50 p90
  1. Dieser Befehl zeigt die URL des Tunnels an, die etwa so aussieht https://abcdef1.ngrok.io. Kopieren Sie diese URL.

  2. 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:

ngrok http 3000 --host-header="localhost:3000"

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:

ngrok http -subdomain=mydomain 3000

In diesem Fall erhalten Sie etwas Ähnliches wie das Folgende:

ngrok by @inconshreveable (Ctrl+C to quit) Session Status online Account YourUsername (Plan: Basic) Version 2.3.35 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://mydomain.ngrok.io -> http://localhost:3000 Forwarding https://mydomain.ngrok.io -> http://localhost:3000 Connections ttl opn rt1 rt5 p50 p90

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.

Siehe auch