我有一个端点,它从WhatsApp WebHook获取消息。然后,这个端点调用blog到另一个端点,并返回200到whatsapp webhook。
在我的本地机器上,它工作得很好,很快,但在我的vercel部署项目中,它只到达第一个端点,但只有当我ping端点时,它才会被最后一次调用触发。
我试着添加一些日志,但是在vercel生产环境中调试很困难,而且不是很有效。这是我调用我的其他端点这是我的whatsapp webhook.ts
const conversation = await prisma.conversation.findFirst({
where: {
senderId: message.senderId,
},
});
console.log(
`${process.env.BASE_URL}/api/whatsapp/services/preValidation`
);
if (!conversation?.verify || !conversation) {
console.log("member is not verified yet");
axios.post(
`${process.env.BASE_URL}/api/whatsapp/services/preValidation`,
{
conversation: conversation,
message: message,
recipientId: teamId,
source: "whatsapp",
}
);
return new Response("message is not verified yet", {
status: 200,
});
}
axios.post(
`${process.env.BASE_URL}/api/facebook/services/handleMessages`,
{
conversation: conversation,
message: message,
recipientId: teamId,
}
);
return new Response("EVENT_RECEIVED", { status: 200 });
1条答案
按热度按时间ig9co6j11#
我也有类似的问题。主要的问题是我们的本地开发环境和Vercel平台之间的差异。在我们的本地,Axios呼叫即使在我们发送响应后也会得到解决。在Vercel无服务器函数或边缘函数中,一旦返回响应,所有后台任务都将终止,除非您正在流式传输响应或使用类似https://vercel.com/docs/functions/edge-functions-api#waittill;所以你看不到日志
如果在Axios调用之前添加
await
,则一切都应按预期工作。供参考: