接收结果时如何获取WorkItem Id?

How to get WorkItem Id when receiving the result?

假设我 post Revit 引擎的工作项使用以下代码

var response = await _flurlClient.Request("https://developer.api.autodesk.com/da/us-east/v3/workitems")
            .PostJsonAsync(new
            {
                activityId = "ActivityID",
                arguments = new
                {
                    rvtFile = new
                    {
                        url = storageUrl,
                        Headers = new
                        {
                            Authorization = $"Bearer {accessToken}"
                        }
                    },
                    result = new
                    {
                        verb = "post",
                        url = $"{baseUrl}/api/result"
                    }
                }
            })
            .ReceiveJson();

响应将包含此工作项的 ID。工作项成功完成后,Forge 会使用输出文件调用我的 API 端点。我的端点实现如下:

[HttpPost("Result")]
public async Task<IActionResult> PostResults()
{
    await using (var fs = new FileStream("D://Test//l2.xlsx", FileMode.Create))
    {
        await Request.Body.CopyToAsync(fs);
    }

    return Ok();
}

文件已正确保存,但我无法获取关联的工作项 ID(既不是查询参数也不是 header)。这导致了一个问题,假设我在收到文件时提交了两个工作项(A 和 B),我如何判断它是否与工作项 A 或 B 相关。

参见

设计自动化允许您在输出 url 中指定变量 workitem.id。当您的工作项完成时,我们将调用此 url 并将变量扩展为该工作项的 ID。此动态变量路径允许您确定与该回调关联的工作项 ID。

最后,您需要实施 Attribute Routing

[HttpPost("Result/{workitemId}")]
public async Task<IActionResult> PostResults(string workitemId)
{
}

您可以 post 工作项目:

result = new
{
    verb = "post",
    url = $"{baseUrl}/api/result/$(workitem.id)"
}