Docs Menu
Docs Home
/ /
Servicios de terceros

Solicitudes y respuestas de webhook

Importante

Servicios de terceros y notificaciones push obsoletos

Los servicios de terceros y las notificaciones push en App Services han quedado obsoletos en favor de la creación de puntos finales HTTP que usan dependencias externas en funciones.

Los webhooks se han renombrado como puntos finales HTTPS sin cambios en su comportamiento. Debe migrar los webhooks existentes.

Los servicios existentes continuarán funcionando hasta el de septiembre 30 2025de.

Dado que los servicios de terceros y las notificaciones push ya no se utilizan, se han eliminado de forma predeterminada de la interfaz de usuario de App Services. Si necesita administrar un servicio de terceros o una notificación push existente, puede volver a agregar las configuraciones a la interfaz de usuario siguiendo estos pasos:

  • En la navegación izquierda, debajo del Manage sección, haga clic en App Settings.

  • Habilite el interruptor junto a Temporarily Re-Enable 3rd Party Services y luego guarde los cambios.

Según el servicio, los webhooks entrantes ofrecen varias formas de validar solicitudes y personalizar la respuesta que Atlas App Services envía al servicio externo.

Para validar que una solicitud de webhook proviene de una fuente confiable, algunos servicios externos requieren que las solicitudes entrantes incorporen una cadena secreta de una de varias maneras prescritas. Otros servicios, como el servicio HTTP, permiten solicitar la validación de la solicitud de forma opcional.

Hay dos tipos de Request Validation para webhooks: Verificación defirma de carga útil y secreto como parámetro de consulta.

Se requiere HTTP/1.1 o superior al realizar solicitudes.

Nota

Para máxima seguridad, genere programáticamente el secret cadena que utiliza un paquete seguro como el módulo secretos de PythonAsegúrese de no publicar el secreto ni incluirlo en su sistema de control de versiones.

La opción de validación de solicitud Verify Payload Signature requiere que las solicitudes entrantes incluyan un código hexadecimal. Hash HMAC SHA-256 generado a partir del cuerpo de la solicitud y la secret cadena en el X-Hook-Signature encabezado.

Ejemplo

Considere el siguiente cuerpo de solicitud de webhook y secreto:

const body = { "message":"MESSAGE" }
const secret = 12345

La siguiente función Atlas genera el hash para este body secrety:

// Generate an HMAC request signature
exports = function(secret, body) {
// secret = the secret validation string
// body = the webhook request body
return utils.crypto.hmac(EJSON.stringify(body), secret, "sha256", "hex");
}
// Returns: "828ee180512eaf8a6229eda7eea72323f68e9c0f0093b11a578b0544c5777862"

El valor hash debe asignarse al encabezado de solicitud HTTP X-Hook-Signature en cada solicitud:

X-Hook-Signature:sha256=<hex-encoded-hash>

Para probar que la solicitud fue firmada correctamente, podríamos ejecutar el siguiente comando curl:

curl -X POST \
-H "Content-Type: application/json" \
-H "X-Hook-Signature:sha256=828ee180512eaf8a6229eda7eea72323f68e9c0f0093b11a578b0544c5777862" \
-d '{"message":"MESSAGE"}' \
<webhook URL>

La Require Secret as Query Param opción de validación de solicitud requiere que las solicitudes entrantes incluyan la secret cadena especificada como un parámetro de consulta adjunto al final de la URL.

Ejemplo

Considere un webhook configurado para usar un valor secret de 12345. Todas las solicitudes deben dirigirse a la URL del webhook con el secreto como parámetro de consulta.

<webhook URL>?secret=12345

Para probar que las solicitudes a esta URL se verifican correctamente, podríamos ejecutar el siguiente comando curl:

curl -H "Content-Type: application/json" \
-d '{ "message": "HELLO" }' \
-X POST '<webhook URL>?secret=12345'

App Services pasa automáticamente un objeto response que representa la respuesta HTTP del webhook como segundo argumento de la función del webhook. La siguiente tabla enumera los métodos disponibles para modificar el objeto response:

Método
Arguments
Descripción

setStatusCode(code)

code entero

Establezca el código de estado de respuesta HTTP.

Ejemplo

response.setStatusCode(201);

setBody(body)

body cadena o BSON.Binary

Establecer el cuerpo de la respuesta HTTP.

Si body es una cadena, se codificará como BSON.Binary antes de devolverse.

Ejemplo

response.setBody(
"{'message': 'Hello, World!'}"
);

setHeader(name, value)

name string
value string

Establezca el encabezado de respuesta HTTP especificado por name con el valor pasado en el value argumento. Esto anula cualquier otro valor que ya se haya asignado a ese encabezado.

Ejemplo

response.setHeader(
"Content-Type",
"application/json"
);

addHeader(name, value)

name string
value string

Establece la cabecera HTTP de respuesta especificada por name con el valor proporcionado en el argumento value. A diferencia de setHeader, esto no sobrescribe otros valores que ya hayan sido asignados a la cabecera.

Ejemplo

response.addHeader(
"Cache-Control",
"max-age=600"
);
response.addHeader(
"Cache-Control",
"min-fresh=60"
)

Volver

Llamar a una acción de servicio

En esta página