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

问题描述 投票:0回答:1

我正在将 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 一起被调用

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

javascript reactjs next.js webhooks replicate
1个回答
0
投票

如果我理解正确,您正在使用

predictions.create
创建预测,然后添加 webhook url。

Webhooks 旨在用作当前用户会话的单独操作,它不链接到您的用户当前会话。例如,您可以使用 Webhook 执行的操作是将结果通过电子邮件发送给用户。

但是如果我是正确的,那么 API 将立即响应预测 ID,您可以使用它来调用复制 API 来获取状态。

来自文档:如果成功,输出将是包含模型输出的对象。任何文件都将表示为 HTTPS URL。

我将添加复制文档的链接: https://replicate.com/docs/reference/http#predictions.get

© www.soinside.com 2019 - 2024. All rights reserved.