Prueba tu webhook

Mientras desarrollas tu webhook, te recomendamos que lo pruebes con cargas útiles reales de Business Messages. En lugar de crear pruebas de forma manual, puedes usar el framework de prueba de Business Messages para probar el webhook con varios tipos de cargas útiles de JSON que el webhook puede recibir en producción.

Para comenzar, solo necesitas una URL a una instancia en ejecución de tu webhook. El framework de prueba es fácil de instalar y puedes probar el webhook con un solo comando.

Cómo comenzar

Instala el framework

La forma más fácil de instalar el marco de trabajo es con el administrador de paquetes de NPM. El framework se publica en el registro de paquetes de NPM, por lo que puedes instalarlo con npm:

npm install -g bm-test-framework

Ejecuta las pruebas

Con el paquete instalado, puedes proporcionar tu URL de webhook como una variable de entorno y ejecutar todas las pruebas con el siguiente comando:

BMTF_ENDPOINT_URL=<Your webhook URL> bm-test-framework

Los resultados del marco de trabajo de prueba se ven de la siguiente manera:

  Sending payloads to <Your webhook URL>
      ✔ authentication-request.json should return 200
      ✔ event-receive.json should return 200
      ✔ image-message.json should return 200 (862ms)
      ✔ read-receipt.json should return 200
      ✔ suggestion-message.json should return 200
      ✔ text-message.json should return 200 (134ms)
      ✔ text-with-dialogflow-response.json should return 200 (128ms)
      ✔ user-receipt.json should return 200

En esta ejecución de prueba de ejemplo, se aprobaron todos los casos de prueba.

Si tu webhook falla en uno de los casos de prueba, significa que no responde con un 200 OK a la carga útil JSON de ese caso de prueba. En ese caso, el marco de trabajo de prueba imprime información de error para ayudarte a depurar. Consulta el archivo README del marco de trabajo de prueba para obtener más información sobre casos de prueba específicos.

Usa el marco de trabajo en tu proyecto de Node.js

Para usar el framework desde tu propio código en un proyecto de Node.js o desde un paquete de pruebas de Mocha, primero instala el paquete como una dependencia de desarrollo:

npm install --save-dev bm-test-framework

Una vez instalada, puedes crear un objeto BmTestFramework para administrar las pruebas:

const BmTestFramework = require('bm-test-framework');
const bmTestFramework = new BmTestFramework({endpointURL: <Your webhook URL>});

El arreglo de miembros payloads contiene todos los casos de prueba. Puedes usar el método sendPayload para ejecutar una prueba específica. Por ejemplo, el siguiente código ejecuta la primera prueba en el framework:

bmTestFramework.sendPayload(bmTestFramework.payloads[0])

Configura las pruebas

Además de la variable de entorno BMTF_ENDPOINT_URL necesaria, también puedes configurar variables de entorno opcionales para personalizar el comportamiento de prueba:

Variable de entorno Nombre del campo de configuración Tipo Descripción
BMTF_RANDOM_UUID aleatorioUuid boolean Si es verdadero, establece el ID de la conversación en un UUID aleatorio con un formato válido. Si la estableces como falsa, se establecerá el ID de conversación en todos los ID de conversación.
BMTF_TIMEOUT timeout Número o string de tiempo con formato Establece el tiempo de espera en milisegundos para cada caso de prueba. El tiempo de espera predeterminado es de 2,000 ms para cada caso de prueba. Consulta la referencia de la API de Mocha para obtener información detallada sobre el formato y las especificaciones de tipo.

Por ejemplo, el siguiente código ejecuta el framework de prueba desde la línea de comandos con la opción de UUID aleatoria habilitada y con un tiempo de espera de 1,000 ms:

BMTF_ENDPOINT_URL=<Your webhook URL> BMTF_TIMEOUT=1000 BMTF_RANDOM_UUID=true bm-test-framework

Para personalizar el comportamiento de prueba en tu proyecto de Node.js, también puedes pasar las mismas variables al objeto config cuando crees tu BmTestFramework:

const bmTestFramework = new BmTestFramework({endpointURL: <Your webhook URL>, randomUuid: true, timeout: 1000});