Пользовательские действия
Пользовательские действия
Действия Frame.io обеспечивают быстрый доступ к часто используемым операциям с медиафайлами, таким как загрузка, переименование и дублирование элементов, а также позволяют осуществлять интеграцию со сторонними инструментами и сервисами прямо в пользовательском интерфейсе Frame.io.
О действиях
С появлением функции «Пользовательские действия» разработчики могут настраивать собственные действия и управлять ими в Frame.io V4. Используя ту же базовую систему событий, что и веб-перехватчики, пользовательские действия предоставляют разработчикам альтернативный механизм для связывания своих ресурсов с наиболее важными для пользователей инструментами в их учетной записи Frame.io.
Действия может выполнять любой пользователь, являющийся участником рабочей среды Frame.io, в которой это действие включено. При выполнении действия Frame.io отправляет полезную нагрузку на указанный вами URL-адрес. Принимающее приложение отвечает кодом состояния HTTP для подтверждения получения или специальным обратным вызовом для рендеринга дополнительных полей формы в интерфейсе Frame.io. В качестве принимающего приложения может выступать как ваша собственная размещенная на сервере программа, так и сторонний сервис или даже малокодовый/бескодовый инструмент IPaaS, например Workfront Fusion или Zapier.
Используйте пользовательские действия для создания интеграций непосредственно в Frame.io в качестве программируемых компонентов интерфейса. Это позволяет получить рабочие процессы, запускаемые пользователями в приложении, используя ту же базовую систему маршрутизации событий, что и веб-перехватчики. Вы можете создавать запускаемые пользователями одно- или многошаговые формы, которые возвращаются в Frame.io в виде новой формы или базового ответа. Когда пользователь нажимает пользовательское действие для ресурса, Frame.io отправляет полезную нагрузку на указанный вами URL-адрес. Принимающее приложение отвечает кодом состояния HTTP для подтверждения получения или специальным обратным вызовом для рендеринга дополнительных элементов интерфейса в Frame.io.
Улучшение действий в версии V4
Опираясь на опыт пользователей нашей предыдущей версии, мы внесли ряд улучшений в набор функций «Действия» в Frame.io V4.
Если раньше поддерживались только текстовые поля и поля с возможностью выбора одного варианта, то теперь мы добавили возможность множественного выбора, текстовые области (для более объемных текстовых полей) и логические поля (в виде переключателя).
Текстовые поля неудобны для копирования и вставки URL-адресов. Используйте наше новое поле для ссылок, чтобы копировать их всего одним нажатием.
В зависимости от объема возвращаемых данных, модальное окно вашего действия будет автоматически менять размер для оптимального отображения информации в форме, в том числе с возможностью прокрутки окна.
Настройте свое действие так, чтобы оно применялось сразу к множеству объектов (до 100 ресурсов в одном запросе).
НОВОЕ
Действия не ограничиваются только одним типом ресурсов — их можно запускать одновременно для комбинации файлов, папок и стеков версий.
Чтобы узнать у разработчиков и конечных пользователей, как вы используете действия, мы разместили форму обратной связи на странице настроек в веб-версии.
Перенесенные действия
При переносе в версию Frame.io V4 учетной записи с пользовательскими действиями, созданными в предыдущей версии Frame.io, следует учесть несколько моментов.
Статус действий
После переноса учетной записи в Frame.io V4 все пользовательские действия, созданные в более ранних версиях, получат статус null и будут автоматически отключены. Это дает пользователям возможность сначала обновить свои действия для работы с API-интерфейсом V4 перед их включением, любые необновленные действия будут завершаться ошибкой. Чтобы определить действия, имеющие этот статус, перейдите на страницу настроек действий и посмотрите их состояние в столбце «Статус» или, если вы используете API-интерфейс, проверьте поле is_active.
Доступные для действий ресурсы: файлы, папки и стеки версий
Учитывая разделение типов ресурсов в API-интерфейсе Frame.io V4, следует учитывать логику поведения при интерпретации идентификатора ресурса, полученного в полезной нагрузке вашего действия. Логика для отдельных файлов предельно проста: идентификатор будет указывать на конкретный файл, для которого было выполнено действие. Аналогично и для папок — вы получите идентификатор той папки, для которой было выполнено действие. Однако, в зависимости от сценария использования, есть несколько вариантов при определении поведения вашего действия. Используйте идентификатор папки для выполнения последующих вызовов к API-интерфейсу Frame.io, если хотите взаимодействовать с самим ресурсом папки. В качестве альтернативы можно получить дочерние элементы этой папки для выполнения дальнейшей обработки ресурсов внутри нее. Когда действие выполняется для стека версий, ваша полезная нагрузка будет содержать идентификатор «головного ресурса» — файла, который находится на самом верху стека и отображается в интерфейсе.
Подробнее о различиях между предыдущей версией API-интерфейса Frame.io и версией V4 — в нашем руководстве по миграции.
Настройте пользовательские действия с помощью API-интерфейса.
Для пользовательского действия требуются следующие поля.
Настройка пользовательского действия
Когда пользователь запускает пользовательское действие, Frame.io отправляет полезную нагрузку на указанный вами URL-адрес. Принимающее приложение отвечает кодом состояния HTTP для подтверждения получения или специальным обратным вызовом для рендеринга дополнительных элементов интерфейса в Frame.io.
Чтобы создавать пользовательские действия для рабочей среды, требуются разрешения администратора учетной записи. Попросите администратора изменить ваши разрешения, если у вас нет доступа.
Настройка работы с множеством ресурсов
Поддержка множества ресурсов задается в настройках и должна быть прямо включена в модальном окне настроек действия в веб-версии. Это можно сделать как при создании нового действия, так и при обновлении уже существующего.
При включении поддержки множества ресурсов формат полезной нагрузки сразу переключается. Предыдущий формат полезной нагрузки и формат с поддержкой множества ресурсов являются взаимоисключающими.
Полезная нагрузка от Frame.io
Когда пользователь нажимает ваше пользовательское действие, полезная нагрузка отправляется на URL-адрес, указанный вами в поле URL. Используйте эту полезную нагрузку для определения следующего.
-
Какое пользовательское действие было нажато
-
Какие ресурсы были нажаты
-
Какой пользователь выполнил действие
-
Какой тип события был запущен
-
Какая учетная запись связана с пользовательским действием
-
Какая рабочая среда связана с пользовательским действием
-
Какой проект содержит ресурс или ресурсы
Полезная нагрузка — поддержка одного или множества ресурсов
Изначально пользовательские действия принимали только один ресурс на запрос, используя объект resource, содержащий один ресурс. При включенной поддержке множества ресурсов полезная нагрузка использует список resources, включающий один или множество ресурсов (максимум 100 ресурсов в одном запросе).
Устаревшая полезная нагрузка — поддержка только одного ресурса
Переход с устаревшей полезной нагрузки
Планируется прекращение поддержки устаревшей полезной нагрузки
Планируется прекращение поддержки устаревшей полезной нагрузки, поэтому пользователям настоятельно рекомендуется перевести свои сервисы на обработку нового формата данных.
Включение конфигурационного флага и обновление логики обработки полезной нагрузки позволят действию легко перейти на поддержку множества ресурсов.
-
Замените использование одиночного объекта
resourceна списокresources. 2. Обновите код для итерации по спискуresources. -
Включите флаг множества ресурсов в конфигурации действий.
Взаимодействия, повторные попытки и таймауты
interaction_id — это уникальный идентификатор для отслеживания взаимодействия по мере его развития. Если вам не нужно отвечать пользователю, просто верните код состояния 200, и все готово. Хотя это необязательно, мы рекомендуем включить информацию о результате действия, например сообщение о выполнении или предупреждение об ошибке. Пользовательские действия поддерживают обратные вызовы сообщений.
Frame.io ожидает ответ менее чем за 10 секунд и совершает до 5 повторных попыток в ожидании ответа. В идеале ответ должен быть мгновенным, а асинхронные действия должны выполняться после запуска через пользовательское действие.
Создание обратного вызова для сообщений
В своем ответе HTTP на событие веб-перехватчика можно вернуть объект JSON с описанием сообщения, которое отобразится запустившему действие пользователю в интерфейсе Frame.io.
Сообщения позволяют отправлять обратную связь пользователю непосредственно в интерфейсе Frame.io. Если вам нужно собрать дополнительную информацию от пользователя, используйте вместо них обратные вызовы форм.
Создание обратного вызова для форм
Допустим, вам требуется получить больше информации перед началом процесса. Например, вы добавляете контент в систему, которая требует ввода дополнительных данных. В таком случае вы можете описать форму в своем ответе — пользователь заполнит ее и отправит обратно вам. Пример
Когда пользователь отправит форму, вы получите событие по тому же URL-адресу, что и в исходном запросе POST.
Все пользовательские поля, добавленные в форму, отображаются в разделе data полезной нагрузки JSON, которая отправляется Frame.io. Используйте interaction_id для сопоставления исходного запроса с этими новыми данными формы. Вы можете ответить сообщением или вызвать другую форму в цепочке. Связывая в цепочку действия, формы и сообщения, можно эффективно программировать многоэтапные рабочие процессы в Frame.io с бизнес-логикой из внешней системы.
Сведения о форме
Как и сообщения, формы поддерживают атрибуты title и description, которые отображаются в верхней части формы. Помимо этого, каждое поле формы принимает следующие базовые атрибуты.
- type — указывает пользовательскому интерфейсу Frame.io, какой тип данных ожидать и рендеринг какого компонента выполнять. * label — отображается в пользовательском интерфейсе как заголовок над полем.
- name — ключ, по которому поле будет идентифицироваться в последующей полезной нагрузке. * value — значение для предварительного заполнения поля.
Поддерживаемые типы полей
Текстовое поле
Простое текстовое поле без дополнительных параметров.
Текстовая область
Простая текстовая область без дополнительных параметров.
Список выбора
Определяет список вариантов, из которых пользователь может выбирать. Должен включать в себя массив вариантов options. Каждый элемент этого массива должен содержать легко читаемое человеком имя name и считываемое машиной значение value.
Флажок
Простой флажок без дополнительных параметров.
Ссылка
Простая ссылка без дополнительных параметров.
Модель разрешений Frame.io
Пользовательские действия имеют специальную модель разрешений: они принадлежат рабочей среде, а не конкретному пользователю, существующему в учетной записи. Это означает следующее.
-
Любой администратор может создать пользовательское действие в рабочей среде.
-
Любой администратор может изменить или удалить пользовательское действие, существующее в команде.
-
Как только будут внесены изменения, все пользователи сразу же увидят результат обновления.
Безопасность и проверка
По умолчанию для всех пользовательских действий генерируется ключ подписи при их создании. Эту установку нельзя изменить. Данный ключ можно использовать для проверки того, действительно ли запрос исходит от Frame.io. В запрос POST включается следующее.
Временная метка указывает время, когда запрос был подписан при отправке из сети Frame.io. Можно использовать для предотвращения атак повторного воспроизведения. Мы рекомендуем проверять, чтобы это время отличалось от локального времени не более чем на 5 минут.
Подпись — это хеш HMAC SHA-256, использующий ключ подписи, предоставленный при первом создании пользовательского действия.
Проверка подписи
Предоставленная подпись имеет префикс v0=. В настоящее время в Frame.io существует только одна версия для подписи запросов. Необходимо добавить этот префикс к вычисленной вами подписи.
Обратная связь
Мы будем рады узнать от разработчиков и пользователей, как вы бы хотели использовать действия в Frame.io V4. Обязательно делитесь с нами своими вопросами, идеями и сценариями использования, чтобы мы могли правильно определить приоритеты.