Pruebas con Ngrok

Cuando tus usuarios interactúan con Vonage, por ejemplo, al llamar a un número de Vonage, Vonage necesita notificar a tu aplicación para que pueda realizar la acción requerida. En el caso de una aplicación de voz, esto podría consistir en reproducir un mensaje de texto a voz para la persona que llama cuando Vonage responda la llamada. Vonage también puede mantener tu aplicación notificada de varios eventos que tienen lugar durante la llamada, como cuando la persona que llama cuelga. Estas notificaciones de Vonage se implementan mediante webhooks.

Un problema es cuando usted está probando su aplicación localmente en su máquina de desarrollo, su equipo no puede recibir estas notificaciones webhook, ya que no está en la Internet pública.

Una forma de solucionar este problema es utilizar una herramienta gratuita llamada Ngrok. Ngrok crea un túnel seguro que conecta Internet con tu aplicación local. Las notificaciones de Vonage se enrutarán a través de Ngrok a tu máquina local.

Para empezar a utilizar Ngrok, sigue estos pasos:

  1. Descargue e instale Ngrok utilizando la instrucciones para su plataforma.

  2. Inicie su aplicación localmente y compruebe qué puerto utiliza. Por ejemplo, si sueles utilizar http://localhost:3000 para acceder a su aplicación, entonces el puerto es 3000.

  3. Crear un túnel Ngrok a este puerto con un comando como ngrok http 3000. Verá algo similar a lo siguiente:

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. Este comando mostrará la URL del túnel, que tendrá un aspecto similar a https://abcdef1.ngrok.io. Copie esta URL.

  2. Configura tus webhooks de API de Vonage para que apunte a esta URL.

Ten en cuenta que cada vez que inicies el túnel Ngrok, recibirás una nueva URL, así que no olvides actualizar la configuración de los webhooks en consecuencia.

Utilización con IIS Express

IIS Express rechaza las solicitudes entrantes de Ngrok si el encabezado del host no coincide con la dirección bindingInformation en su configuración. Por lo tanto, tendrá que configurar Ngrok para cambiar el nombre de host en el encabezado para que coincida con la configuración de IIS Express.

Esto puede hacerse utilizando la función de Ngrok host-header opción. El siguiente comando muestra cómo hacerlo para el puerto 3000:

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

Si estás haciendo esto para tus pruebas y necesitas el host original para algo, puedes recuperarlo desde el archivo X-Original-Host de cabeza.

Configurar IIS Express para el puerto correcto

Compruebe que IIS Express está escuchando en el puerto 3000, o en el puerto en el que haya decidido configurar Ngrok, abriendo su archivo properties/launchSettings.json y asegurándose de que el número de puerto en el campo iisExpress del objeto applicationUrl coincide con el puerto al que ha configurado el reenvío de Ngrok. También debe desactivar SSL en IIS Express configurando el campo sslPort a 0. Consulte la siguiente configuración válida para IIS Express de launchSettings.json:

"iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:3000/",
      "sslPort": 0
    }
  }

Planes Ngrok

Los planes de Ngrok de pago pueden reservar nombres de túneles y elegir cuál utilizar cuando se inician, de modo que puedes evitar tener que reconfigurar tus webhooks. Si tienes una cuenta Ngrok de pago, puedes iniciar en tu propio dominio usando un comando como:

ngrok http -subdomain=mydomain 3000

En este caso te saldrá algo parecido a lo siguiente:

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

Esto tiene la ventaja de que cada vez que inicies Ngrok no necesitarás reconfigurar tus webhooks.

Interfaz web de Ngrok

Además de la URL del túnel que aparece en la salida del comando, también verá una URL para la "Interfaz Web" (http://127.0.0.1:4040). La interfaz web permite examinar los detalles de todas las solicitudes recibidas por el túnel y las respuestas devueltas. Se trata de una herramienta de depuración muy útil.

En la interfaz web también puedes utilizar el botón "Replay" para repetir una petición en lugar de tener que enviarte montones de mensajes de texto o reproducir continuamente el evento al que responde tu código de webhook. Estas características hacen que probar la respuesta de tu aplicación a los webhooks sea mucho más cómodo.

Ver también