Overview
The Atlas App Services third-party service webhooks are deprecated in favor of custom HTTPS endpoints. HTTPS endpoints are functionally almost identical to webhooks but are now a first-class service.
Esta guía explica cómo convertir los webhooks existentes de tu aplicación y actualizar las aplicaciones externas que los invocan. Para nuevos webhooks o URL de devolución de llamada, debes definir un punto final HTTPS.
Automatically Convert Existing HTTP Webhooks
App Services puede convertir automáticamente cualquier webhook de servicio HTTP existente en tu aplicación en puntos de conexión HTTPS. Esta conversión es unidireccional, lo que significa que no puedes volver a convertir los puntos de conexión HTTPS en webhooks. El proceso de conversión no elimina los webhooks originales, por lo que las solicitudes de webhooks entrantes seguirán ejecutándose después de la conversión.
Para ejecutar el proceso de conversión del webhook al endpoint HTTPS para todos los webhooks de tu aplicación:
Haga clic HTTPS Endpoints en el menú de navegación izquierdo de la interfaz de usuario de Servicios de aplicaciones.
Haga clic en el botón Convert.
Confirme que desea ejecutar la conversión.

Nota
The converted HTTPS endpoints are independent from their source webhooks. If you choose to edit a webhook after running the conversion, you can run the conversion again with the "Convert & Override" option to propagate those changes to your new endpoints.
Convertir manualmente webhooks de GitHub y Twilio
App Services no puede convertir automáticamente los webhooks de GitHub y Twilio a puntos de conexión HTTPS porque utilizan bibliotecas de cliente obsoletas. Sin embargo, puedes migrar manualmente los webhooks de estos servicios a los nuevos puntos de conexión HTTPS.
Webhooks de GitHub
Para migrar un webhook de GitHub a un punto final HTTPS:
Create a new HTTPS endpoint
Copie el código del webhook de GitHub existente en la función del nuevo punto final
Actualice su código para analizar el cuerpo de la solicitud entrante en lugar de utilizar la carga útil de GitHub previamente analizada.
Antes: Un webhook de GitHub con una carga útil previamente analizadaexports = async function(payload, response) { // Webhooks only provide the parsed request body const { commits, pusher, repository } = payload; // ... your code here } After: An HTTPS endpoint that parses the GitHub payloadexports = async function(payload, response) { // Endpoints pass an entire request payload, not just a parsed body const { commits, pusher, repository } = JSON.parse(payload.body.text()); // ... your code here }
Twilio Webhooks
To migrate a Twilio webhook to an HTTPS endpoint:
Create a new HTTPS endpoint
Copia el código existente de webhook de Twilio a la función del nuevo endpoint
Actualice su código para analizar el cuerpo de la solicitud entrante en lugar de usar la carga útil de Twilio previamente analizada. Si su webhook usa el cliente de servicio Twilio integrado, actualice su código para usar la biblioteca de Node de Twilio.
Antes: un webhook de Twilio con una carga útil previamente analizadaexports = async function(payload, response) { // Webhooks only provide the parsed request body const { To, From, Body } = payload; // Webhooks could use a built-in Twilio client const twilio = context.services.get("twilio") twilio.send({ To: From, From: context.values.get("TwilioPhoneNumber"), Body: `Message received!` }) } Después: un punto final HTTPS que analiza la carga útil de Twilioexports = async function(payload, response) { // Endpoints pass an entire request payload, not just a parsed body const { To, From, Body } = JSON.parse(payload.body.text()) // The endpoint should use `twilio` from npm instead of the built-in Twilio client const twilio = require('twilio')( // Your Account SID and Auth Token from https://www.twilio.com/console // Specify the same Twilio credentials as the service configuration context.values.get("TwilioAccountSID"), context.values.get("TwilioAuthToken"), ) await twilio.messages.create({ To: From, From: context.values.get("TwilioPhoneNumber"), Body: `Message received!` }) }
Actualizar las URL de devolución de llamada en aplicaciones y servicios de cliente
Los endpoints HTTPS utilizan un esquema URL diferente que los webhooks de servicio. Debes actualizar cualquier aplicación o servicio que haga llamadas a tus webhooks para que en su lugar llamen a la URL del endpoint HTTPS convertido. Las URL de los webhooks existentes seguirán aceptando solicitudes y ejecutando sus funciones asociadas después de que hayas realizado la conversión. Esto significa que puedes migrar gradualmente a las nuevas URLs sin interrumpir los flujos de trabajo existentes.
Para migrar a las URLs del endpoint convertidas a HTTPS:
Identifica todas las aplicaciones cliente y servicios que llamen a los webhooks del servicio
Para cada aplicación o servicio, modifica el código fuente o la configuración para utilizar las nuevas URLs.
Supervisa los registros de tu aplicación para comprobar registros webhooks de servicio, para que puedas detectar cualquier llamada de webhook activa que hayas pasado por alto.
Una vez que todos los clientes estén actualizados con las nuevas URL, elimine los webhooks obsoletos de su aplicación.
Ejemplo
To migrate a service's integration from an App Services webhook to the converted HTTPS endpoint, modify the service's external configuration for outgoing webhook requests to point to the converted endpoint URL.
https://webhooks.mongodb-realm.com/api/client/v2.0/app/myapp-abcde/service/myHttpService/incoming_webhook/handleIncomingEvent
https://data.mongodb-api.com/app/myapp-abcde/endpoint/myHttpService/handleIncomingEvent
Diferencias entre los Webhooks y sus puntos finales convertidos
Si configuró su punto final HTTPS convertido para usar Respond with Result y la función de webhook en la que se basa devuelve un valor pero no invoca response.setBody()El punto final generado incluye el valor de retorno de la función como cuerpo de respuesta. El webhook, en cambio, solo devuelve un cuerpo especificado por response.setBody().
Ejemplo
exports = function({ query, headers, body}, response){ response.setStatusCode(200); return "Hello world"; };
El webhook de esta función solo responde con el código de estado 200 sin cuerpo.
Para el endpoint, si habilita 200 la opción "Responder con resultado", este responde con el código de estado y el "Hello world" cuerpo. Si no habilita la opción "Responder con resultado", el endpoint solo responde con el código de 200 estado.