我正在将 NextJS 与页面路由器一起使用。我有一个表单,用户可以在其中启动一个大约需要 30 秒的进程。处理是由我无法控制的外部 API 完成的。处理完成后,外部 API 调用 Webhook。我想将用户从表单页面重定向到显示结果的结果页面。
我有一个数据库,用于存储用户 ID 以及相应的进程 ID,并且可以在 Webhook 处理程序中检索它。
import { NextApiRequest, NextApiResponse } from "next";
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const query = req.query;
const user_id = query.user_id;
const generation_id = query.generation_id;
const original_image = query.original_image;
const webhookData = req.body;
console.log("Received webhook:", webhookData);
res.status(200).end();
}
工作流程如下:
如何将用户 1 从这里重定向到结果页面?
我正在使用复制 API 从 SDXL 模型生成图像。
我尝试在 webhook 处理程序中发送重定向响应
import { NextApiRequest, NextApiResponse } from "next";
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const query = req.query;
const user_id = query.user_id;
const generation_id = query.generation_id;
const original_image = query.original_image;
const webhookData = req.body;
console.log("Received webhook:", webhookData);
res.redirect("/results");
}
但该响应显然发送至外部 API,而不是单击按钮的用户。
如果我理解正确,您正在使用
predictions.create
创建预测,然后添加 webhook url。
Webhooks 旨在用作当前用户会话的单独操作,它不链接到您的用户当前会话。例如,您可以使用 Webhook 执行的操作是将结果通过电子邮件发送给用户。
但是如果我是正确的,那么 API 将立即响应预测 ID,您可以使用它来调用复制 API 来获取状态。
来自文档:如果成功,输出将是包含模型输出的对象。任何文件都将表示为 HTTPS URL。
我将添加复制文档的链接: https://replicate.com/docs/reference/http#predictions.get