Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Servicios de terceros

Convertir webhooks en HTTPS Endpoints

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.

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:

  1. Haga clic HTTPS Endpoints en el menú de navegación izquierdo de la interfaz de usuario de Servicios de aplicaciones.

  2. Haga clic en el botón Convert.

  3. Confirme que desea ejecutar la conversión.

Convertir todos los endpoints en la interfaz de usuario

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.

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.

Para migrar un webhook de GitHub a un punto final HTTPS:

  1. Create a new HTTPS endpoint

  2. Copie el código del webhook de GitHub existente en la función del nuevo punto final

  3. 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 analizada
    exports = 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 payload
    exports = 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
    }

To migrate a Twilio webhook to an HTTPS endpoint:

  1. Create a new HTTPS endpoint

  2. Copia el código existente de webhook de Twilio a la función del nuevo endpoint

  3. 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 analizada
    exports = 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 Twilio
    exports = 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!`
    })
    }

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:

  1. Identifica todas las aplicaciones cliente y servicios que llamen a los webhooks del servicio

  2. Para cada aplicación o servicio, modifica el código fuente o la configuración para utilizar las nuevas URLs.

  3. 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.

  4. 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.

Deprecated HTTP Service Webhook URL
https://webhooks.mongodb-realm.com/api/client/v2.0/app/myapp-abcde/service/myHttpService/incoming_webhook/handleIncomingEvent
URL de endpoint HTTPS convertida
https://data.mongodb-api.com/app/myapp-abcde/endpoint/myHttpService/handleIncomingEvent

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.

Volver

Reemplazar servicios con módulos npm

En esta página