ADN Open CIS
Сообщество программистов Autodesk в СНГ

26/12/2017

Вебхуки для Data Management API - пример на NodeJS

 

Пример находится здесь: API Webhooks был анонсирован во время Forge DevCon 2017

Для чего это нужно? Webhook, реализованные другими поставщиками веб-служб, позволяют настроить уведомление, которое вызовет конечные точки в вашем приложении. Для Data Management API ваше приложение может зарегистрировать конечную точку (например, http://yourapp.com/api/forge/hook/callback, будучи полностью описательным), который будет вызываться Autodesk Forge при возникновении события. В этом случае - когда файл или папка добавляются, изменяются, удаляются и т. д. 

Хотите увидеть его в действии? Вот видеоролик или попробуйте его в прямом эфире bim360notifier.autodesk.io. В этом примере используется Twilio APIдля SMS-уведомлений, Postmark API для электронной почты, а также отправка уведомлений Slack.

Теперь давайте разобраться в коде. Полный исходный код доступен на этом репозитории GitHub , но относящаяся к делу часть в файле hook.js. Вот некоторые основные моменты:

  1. Приложение должно принимать внешние подключения. Forge вызовет ваше приложение, поэтому оно должно быть живым или вам нужно направлять вызовы в среду localhost. Ngrok является хорошим инструментом для разработки localhost. В примере укажите URL-адрес через переменную среды FORGE_HOOK_CALLBACK_HOST .
  2. Приложение может создавать веб-хуки для всех событий одновременно или по одному для каждого события. Это примерное приложение создает один веб-хук для каждого события, так как пользовательский интерфейс позволяет пользователю выбрать какое событие использовать для создания уведомления.
  3. События не могут быть дублированы. Чтобы обновить уведомлений, этот пример удаляет все события и создает их снова (при обновлении). Для поддрежания этой асинхронной операции удаления, вам может понадобиться nmp  пакет async (или что-то подобное).

Наконец, самый важный совет: каждое событие может иметь атрибуты, которые сохраняются с помощью вебхука и возвращаются в обратном вызове. В этом примере атрибут хранит номер телефона, адрес электронной почты и канал Slack для уведомления, поэтому приложение ничего не хранит. Когда происходит обратный вызов, приложение считывает эту информацию и отправляет уведомления. В зависимости от вашего сценария, например, вам нужен доступ к файлу, атрибут веб-хука дожен сохранить Project ID.

У вас есть вопросы? Пост на stackoverflow с autodesk-datamanagement.

Источник: https://forge.autodesk.com/blog/enable-https-local-nodejs

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=8223

Опубликовано 26.12.2017