Menu Docs
Página inicial do Docs
/ /
Serviços Atlas App
/ /

Converter Webhooks em ponto de conexão HTTPS

Nesta página

  • Visão geral
  • Converter automaticamente webhooks HTTP existentes
  • Converter manualmente webhooks do GitHub e Twilio
  • Webhooks do Github
  • Webhooks do Twilio
  • Atualizar URLs de retorno de chamada em aplicativos e serviços do cliente
  • Diferenças entre webhooks e seus endpoints convertidos

Os webhooks de serviço de terceiros do Atlas App Services são preteridos em favor de HTTPS endpoints personalizados. HTTPS endpoints são funcionalmente quase idênticos aos webhooks, mas agora são um serviço de primeira classe.

Este guia mostra como converter os webhooks existentes do seu aplicativo e atualizar aplicativos externos que os chamam. Para novos webhooks ou chamada de resposta URL, você deve definir um HTTPS endpoint.

O App Services pode converter automaticamente quaisquer webhooks de HTTP Service existentes na sua aplicação em HTTPS endpoints. Essa conversão é unidirecional, o que significa que você não pode converter HTTPS endpoints de volta em webhooks. O processo de conversão não exclui os webhooks originais, portanto, as solicitações de webhook recebidas continuarão a ser executadas após a conversão.

Para executar o processo de conversão de webhook para endpoint HTTPS para todos os webhooks em seu aplicativo:

  1. Clique em HTTPS Endpoints no menu de navegação esquerdo da interface do usuário do App Services.

  2. Clique no botão Convert.

  3. Confirme que você deseja executar a conversão.

Converter todos os endpoints na interface do usuário

Observação

Os HTTPS endpoints são independentes de seus webhooks de origem. Se você optar por editar um webhook após executar a conversão, poderá executar a conversão novamente com a opção "Converter e substituir" para propagar essas alterações aos novos endpoints.

App Services não pode converter automaticamente Github e Twilio em HTTPS endpoints porque usam bibliotecas de clientes obsoletas. No entanto, você pode migrar manualmente os webhooks desses serviços para novos HTTPS endpoints.

Para migrar um Github webhook para um ponto de conexão HTTPS:

  1. Criar um novo ponto de conexão HTTPS

  2. Copie o código do webhook do Github existente para a função do novo endpoint

  3. Atualize seu código para analisar o corpo da solicitação recebida em vez de usar a carga útil do Github pré-analisada.

    Antes: um webhook do Github com uma carga útil pré-analisada
    exports = async function(payload, response) {
    // Webhooks only provide the parsed request body
    const { commits, pusher, repository } = payload;
    // ... your code here
    }
    Depois: um endpoint HTTPS que analisa a carga útil do Github
    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
    }

Para migrar um webhook do Twilio para um ponto de conexão HTTPS:

  1. Criar um novo ponto de conexão HTTPS

  2. Copie o código do webhook do Twilio existente para a função do novo endpoint

  3. Atualize seu código para analisar o corpo da solicitação recebida em vez de usar a carga útil do Twilio pré-analisada. Se o webhook usar o cliente de serviço Twilio integrado, atualize seu código para usar a biblioteca de nós do twilio .

    Antes: um webhook Twilio com uma carga útil pré-analisada
    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!`
    })
    }
    Depois: um endpoint HTTPS que analisa a carga útil do 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!`
    })
    }

Os HTTPS endpoints usam um URL diferente dos webhooks de serviço. Você deve atualizar todos os aplicativos ou serviços que chamam seus webhooks para chamar a URL de ponto de conexão HTTPS convertida. As URL de webhooks existentes continuarão aceitando solicitações e executando suas funções associadas depois que você executar a conversão. Isso significa que você pode migrar gradualmente para as novas URL sem interromper os fluxos de trabalho existentes.

Para migrar para as URL de pontos de conexão HTTPS convertidas:

  1. Identifique todos os aplicativos e serviços do cliente que chamam de webhooks de serviço

  2. Para cada aplicação ou serviço, modifique o código-fonte ou a configuração para usar as novas URLs.

  3. Monitore os registros do seu aplicativo em busca de registros de webhook de serviço para procurar chamadores de webhook ativos que você perdeu.

  4. Depois que todos os clientes estiverem atualizados com as novas URL, exclua os webhooks obsoletos da sua aplicação.

Exemplo

Para migrar a integração de um serviço de um webhook do App Services para o endpoint HTTPS convertido, modifique a configuração externa do serviço para solicitações de webhook de saída para apontar para a URL do endpoint convertido.

URL do webhook do HTTP Service obsoleto
https://webhooks.mongodb-realm.com/api/client/v2.0/app/myapp-abcde/service/myHttpService/incoming_webhook/handleIncomingEvent
URL de ponto de conexão HTTPS convertido
https://data.mongodb-api.com/app/myapp-abcde/endpoint/myHttpService/handleIncomingEvent

Se você configurou o endpoint HTTPS convertido para usar Respond with Result e a função do webhook na qual ele se baseia retorna um valor, mas não invoca response.setBody(), o endpoint gerado incluirá o valor de retorno da função como o corpo da resposta. O webhook, por outro lado, retorna apenas um corpo especificado por response.setBody().

Exemplo

exports = function({ query, headers, body}, response){
response.setStatusCode(200);
return "Hello world";
};

O webhook para essa função só responde com o código de status 200 sem um corpo.

Para o endpoint, se você habilitar Respond with Result, o endpoint responderá com o código de status 200 e o corpo "Hello world". Se você não habilitar a opção Respond with result, o endpoint só responderá com o código de status 200.

Voltar

Substituir serviços por módulos npm