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:
Descargue e instale Ngrok utilizando la instrucciones para su plataforma.
Inicie su aplicación localmente y compruebe qué puerto utiliza. Por ejemplo, si sueles utilizar
http://localhost:3000para acceder a su aplicación, entonces el puerto es 3000.Crear un túnel Ngrok a este puerto con un comando como
ngrok http 3000. Verá algo similar a lo siguiente:
Este comando mostrará la URL del túnel, que tendrá un aspecto similar a
https://abcdef1.ngrok.io. Copie esta URL.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:
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:
En este caso te saldrá algo parecido a lo siguiente:
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.