#autodesk-forge #autodesk-model-derivative #autodesk-webhooks
#autodesk-forge #autodesk-model-derivative #autodesk-webhooks
Вопрос:
Согласно ссылке на Forge API, доступен атрибут workflowAttribute для «установки некоторой пользовательской информации о рабочем процессе». Это часть misc
объекта в структуре тела запроса POST, используемая для отправки задания.
Я использую следующий запрос:
convertResponse = await axios({
method: "post",
url:
"https://developer.api.autodesk.com/modelderivative/v2/designdata/job",
headers: {
"Content-Type": "application/json",
Authorization: access_token
},
data: JSON.stringify({
input: { urn: url_safe_encoded_urn },
output: {
destination: { region: "us" },
formats: [
{
type: "svf",
views: ["2d", "3d"],
advanced: { generateMasterViews: true }
}
]
},
misc: {
workflow: "designgen-forge",
workflowAttribute: { projectId }
}
})
});
Но когда webHook вызывает мою функцию обратного вызова, я не вижу ничего похожего на атрибут hookAttribute, доступный в данных:
{
"version": "1.0",
"resourceUrn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6c3VmZm9say1nZW5kZXNpZ25sb3ZlLWRldi10ZW1wLzkxZjhhNGZmLTM5NTYtNGM5Yi05NzkyLThiMWMxNDQyZGJkNyUyRnJldml0LTkxZjhhNGZmLTM5NTYtNGM5Yi05NzkyLThiMWMxNDQyZGJkNy5ydnQ",
"hook": {
"hookId": "6d770063-d5dc-4c66-8ed8-e84207ade07d",
"tenant": "designgen-forge",
"callbackUrl": "https://bigchief.ngrok.io/dev/workitemcomplete",
"createdBy": "9DqOEPqAd4ZZYQ2MAxuT2VQwMfAJrBGp",
"event": "extraction.updated",
"createdDate": "2020-10-20T20:14:31.874 0000",
"system": "derivative",
"creatorType": "Application",
"status": "active",
"scope": {
"workflow": "designgen-forge"
},
"urn": "urn:adsk.webhooks:events.hook:6d770063-d5dc-4c66-8ed8-e84207ade07d",
"__self__": "/systems/derivative/events/extraction.updated/hooks/6d770063-d5dc-4c66-8ed8-e84207ade07d"
},
"payload": {
"TimeStamp": 1603289180515,
"Env": "production",
"URN": "<my urn>",
"EventType": "UPDATED",
"Payload": {
"status": "inprogress",
"bubble": {
"guid": "<my guid>",
"owner": "<my guid>",
"hasThumbnail": "true",
"startedAt": "Wed Oct 21 14:05:39 UTC 2020",
"type": "design",
"urn": "<my urn>",
"success": "75%",
"progress": "50% complete",
"region": "US",
"status": "inprogress",
"children": []
},
"scope": "fd2d74bb-1d5a-407c-a344-20dffa327504",
"registerKey": []
}
}
}
Я бы предположил, что объект workflowAttribute предназначен для заполнения чего-либо в данных обратного вызова, иначе в чем смысл. Я неправильно указываю это? Или это не реализовано? Если нет, webhooks становятся практически непригодными для использования, я полагаю, альтернативой является создание и уничтожение webhook для каждого запроса, что настолько уродливо, что на самом деле это не решение.
Комментарии:
1. Это немного странно, «workflowAttribute» не упоминается в документации hooks / model derivative, но приводится в одном из примеров перевода. Я протестировал и могу подтвердить, что «workflowAttribute» не отображается в запросе обратного вызова. Вернемся к этому после выполнения некоторой работы. извините за неудобства.
2. Был ли какой-либо прогресс в этом? Я только что столкнулся с той же проблемой…
Ответ №1:
Спасибо, что обратили на это наше внимание. Мы могли бы также воспроизвести проблему, то есть содержимое workflowAttribute, предоставленное в теле запроса POST job, не будет отображаться при обратном вызове webhook.
Это рассматривается, и я надеюсь, что это скоро заработает, но я пока не могу указать крайний срок для этого.
В то же время, обходным путем может быть либо:
а) отслеживание дополнительных данных (в вашем случае ProjectID), связанных с urn данного файла на сервере или в базе данных (возможно, вы уже используете один)
б) создание отдельных webhooks, как вы предложили, с другим идентификаторомдля параметра «scope» -> «workflow» и предоставьте данные как «Атрибут hookAttribute» — это будет отображаться при обратном вызове
Обновление 2020-12-14: теперь оно работает — см. https://forge.autodesk.com/blog/custom-data-translation-webhook