Что такое триггер-плагин?
Триггеры появились в Интеллос v1.10.0 как новый тип стартового узла. В отличие от функциональных узлов вроде Код, Инструмент или Поиск знаний, задача триггера — преобразовать события сторонних сервисов в формат ввода, который Интеллос умеет распознавать и обрабатывать.
new email в Gmail, то при каждом новом письме Gmail автоматически отправит в Интеллос событие, которое можно использовать для запуска рабочего процесса. Однако:
- Исходный формат событий Gmail несовместим с форматом ввода Интеллос.
- В мире существуют тысячи платформ, и у каждой свой уникальный формат событий.
Технический обзор
Триггеры Интеллос реализованы на основе вебхуков — механизма, широко применяемого в вебе. Многие популярные SaaS-платформы (например, GitHub, Slack и Linear) поддерживают вебхуки и располагают подробной документацией для разработчиков. Вебхук можно представить как диспетчер событий на основе HTTP. После того как настроен адрес для приёма событий, эти SaaS-платформы автоматически отправляют данные о событии на целевой сервер всякий раз, когда происходит подписанное событие. Чтобы единообразно обрабатывать события вебхуков от разных платформ, Интеллос определяет два ключевых понятия: Subscription (подписка) и Event (событие).- Subscription (подписка): диспетчеризация событий через вебхуки требует регистрации сетевого адреса Интеллос в консоли разработчика сторонней платформы в качестве целевого сервера. В Интеллос этот процесс настройки называется Subscription (подписка).
- Event (событие): платформа может отправлять события нескольких типов (например, письмо получено, письмо удалено или письмо отмечено как прочитанное), и все они приходят на зарегистрированный адрес. Триггер-плагин может обрабатывать события нескольких типов, причём каждому событию соответствует свой узел триггера плагина в рабочем процессе Интеллос.
Разработка плагина
Процесс разработки триггер-плагина не отличается от разработки плагинов других типов (Инструмент, Источник данных, Модель и т. д.). Шаблон для разработки можно создать командойdify plugin init. Сгенерированная структура файлов соответствует стандартной спецификации формата плагинов.
-
manifest.yaml: описывает базовые метаданные плагина. -
Каталог
provider: содержит метаданные провайдера, код для создания подписок и код для классификации событий после получения запросов вебхука. -
Каталог
events: содержит код обработки и фильтрации событий, который поддерживает локальную фильтрацию событий на уровне узла. Вы можете создавать подкаталоги для группировки связанных событий.
Для триггер-плагинов минимальная требуемая версия Интеллос должна быть
1.10.0, а версия SDK — >= 0.6.0.Создание подписки
Способы настройки вебхуков заметно различаются между популярными SaaS-платформами:- Некоторые платформы (например, GitHub) поддерживают настройку вебхуков через API. Для таких платформ Интеллос может автоматически настроить вебхук после прохождения OAuth-аутентификации.
- Другие платформы (например, Notion) не предоставляют API для настройки вебхуков и могут требовать от пользователей ручной аутентификации.

github.yaml и github.py.
- github.yaml
- github.py
Поскольку вебхуки GitHub используют механизм шифрования, для расшифровки и проверки входящих запросов требуется секретный ключ. Поэтому в
github.yaml нужно объявить webhook_secret.Обработка событий
После того как событие извлечено, соответствующая реализация должна отфильтровать исходный HTTP-запрос и преобразовать его в формат ввода, который принимают рабочие процессы Интеллос. На примере события Issue: вы можете определить событие и его реализацию черезevents/issues/issues.yaml и events/issues/issues.py соответственно. Вывод события можно задать в секции output_schema файла issues.yaml, которая следует той же спецификации JSON Schema, что и плагины инструментов.
- issues.yaml
- issues.py
Фильтрация событий
Чтобы отфильтровать определённые события (например, реагировать только на события Issue с конкретной меткой), добавьтеparameters в определение события в issues.yaml. Затем в методе _on_event вы можете выбросить исключение EventIgnoreError, чтобы отсеять события, не отвечающие заданным условиям.
- issues.yaml
- issues.py
Создание подписки через OAuth или API-ключ
Чтобы включить автоматическое создание подписки через OAuth или API-ключ, нужно изменить файлыgithub.yaml и github.py.
- github.yaml
- github.py
В
github.yaml добавьте следующие поля.subscription_constructor — это понятие, абстрагированное Интеллос для описания того, как конструируется подписка. Оно включает следующие поля:-
parameters(необязательно): задаёт параметры, необходимые для создания подписки, например типы событий для подписки или целевой репозиторий GitHub -
credentials_schema(необязательно): объявляет учётные данные, необходимые для создания подписки с помощью API-ключа или токена доступа, напримерaccess_tokensдля GitHub. -
oauth_schema(необязательно): требуется для реализации создания подписки через OAuth. Подробнее о том, как его определить, см. в разделе Добавление поддержки OAuth в плагин инструмента.
После того как вы измените эти два файла, в интерфейсе Интеллос появится вариант Создать с помощью ключа API. Автоматическое создание подписки через OAuth можно реализовать в том же классе
Constructor: добавив поле oauth_schema внутри subscription_constructor, вы включите OAuth-аутентификацию.

Узнать больше
Определения интерфейсов и методы реализации основных классов при разработке триггер-плагина приведены ниже.Trigger
TriggerSubscriptionConstructor
Event
Редактировать эту страницу | Сообщить о проблеме


