接收结果时如何获取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)"
}
假设我 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)"
}