当外部API调用NextJS中的webhook时,如何重定向用户

tez616oj  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(110)

我正在使用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的后台启动
  • 过程完成
  • 我的webhook处理程序与用户ID一起被沿着调用

如何将User 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的,而不是传递给单击按钮的用户的。

gk7wooem

gk7wooem1#

如果我理解正确的话,你正在使用predictions.create来创建预测,然后添加一个webhook url。
Webhook是用来作为一个单独的操作从当前用户会话,它不链接到您的用户当前会话。你可以用Webhook例如,是发送一封电子邮件给用户的结果。
但是如果我是正确的,那么API将立即响应预测ID,您可以使用它来调用复制API以获取状态。
从文档:在成功的情况下,输出将是一个包含模型输出的对象。任何文件都将表示为HTTPS URL。
我将添加到复制文档的链接:https://replicate.com/docs/reference/http#predictions.get

相关问题