Overview
Los webhooks de servicios de terceros de Atlas App Services han quedado obsoletos y se han sustituido por puntos de conexión HTTPS personalizados. Estos puntos de conexión son prácticamente idénticos a los webhooks, pero ahora son un servicio de primera clase.
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.
Convertir automáticamente los webhooks HTTP existentes
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 de webhook a punto final HTTPS para todos los webhooks en su 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
Los puntos finales HTTPS convertidos son independientes de sus webhooks de origen. Si decide editar un webhook después de ejecutar la conversión, puede volver a ejecutarla con la opción "Convertir y anular" para propagar los cambios a sus nuevos puntos finales.
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:
Crear un nuevo punto final HTTPS
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 } Después: un punto final HTTPS que analiza la carga útil de GitHubexports = 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 }
Webhooks de Twilio
Para migrar un webhook de Twilio a un punto final HTTPS:
Crear un nuevo punto final HTTPS
Copie el código del webhook Twilio existente en la función del nuevo punto final
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 puntos finales HTTPS utilizan un esquema de URL diferente al de los webhooks de servicio. Debe actualizar las aplicaciones o servicios que llaman a sus webhooks para que llamen a la URL del punto final HTTPS convertido. Las URL de los webhooks existentes seguirán aceptando solicitudes y ejecutando sus funciones asociadas después de la conversión. Esto significa que puede migrar gradualmente a las nuevas URL sin interrumpir los flujos de trabajo existentes.
Para migrar a las URL de puntos finales HTTPS convertidas:
Identificar todas las aplicaciones y servicios de cliente que llaman a webhooks de servicio
Para cada aplicación o servicio, modifique el código fuente o la configuración para utilizar las nuevas URL.
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
Para migrar la integración de un servicio desde un webhook de App Services al punto final HTTPS convertido, modifique la configuración externa del servicio para que las solicitudes de webhook salientes apunten a la URL del punto final convertido.
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.