Como lidar com Webhooks da Nylas no Next.js
Um e-mail chega ao seu agente de IA. Você tem 10 segundos para responder.
Se você usa Nylas Agent Accounts, um webhook message.created chega ao seu servidor imediatamente. No Next.js, você lida com isso com apenas um arquivo de rota.
Veja como construir isso corretamente.
O Desafio do Handshake
Quando você cria um webhook, a Nylas envia uma requisição GET com um parâmetro challenge. Você deve retornar o valor exato no corpo da resposta.
Não use JSON. Não adicione aspas. Use uma resposta direta (bare response). Se você falhar nisso, o webhook falhará.
Exemplo de handler GET:
export async function GET(req: NextRequest) {
const challenge = req.nextUrl.searchParams.get("challenge");
return new Response(challenge ?? "", { status: 200 });
}
**A Not
• Remova duplicatas de mensagens. Webhooks entregam pelo menos uma vez (at-least-once). Use uma restrição de banco de dados ou Redis para garantir que você não processe a mesma mensagem duas vezes.
• Trate payloads truncados. Se uma mensagem tiver mais de 1 MB, o corpo é removido. Sempre busque a mensagem novamente via API para obter o conteúdo completo.
• Use conteúdo limpo. Use message.created.cleaned para obter markdown em vez de um HTML bagunçado. Isso funciona melhor para o seu LLM.
Como você lida com a deduplicação em seus handlers de webhook? Você usa Redis ou uma restrição de banco de dados?
Fonte: https://dev.to/qasim157/handle-messagecreated-webhooks-in-nextjs-4e80