Почему Autodesk Forge ‘workflowAttribute’ не отображается в обновлениях webhook для работы с производными моделями?

#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