Разработка коннекторов
Контракт «коннектор ↔ автоматизация»
Живая интеграция («коннектор») подключается к движку автоматизаций через единый контракт: коннектор объявляет свои действия и входящие триггеры, а конструктор и движок подхватывают их динамически — бе...
Живая интеграция («коннектор») подключается к движку автоматизаций через единый контракт: коннектор объявляет свои действия и входящие триггеры, а конструктор и движок подхватывают их динамически — без правок ядра.
Кому это
Раздел для разработчиков, добавляющих новую интеграцию в код «Базы». Для работы с готовыми интеграциями из интерфейса он не нужен — см. раздел «Интеграции».
#Из чего состоит
App\Integrations\Contracts\Connector— интерфейс одной интеграции.ConnectorRegistry— реестр; собирается изconfig/connectors.php.Schema— мёржит встроенные шаги конструктора с вкладом коннекторов (и whitelist валидации).ActionRunner— исполняет встроенные действия сам, «чужие» отдаёт в реестр.AutomationEngine::handleConnectorEvent()— единая точка входа для внешних событий.
#Интерфейс Connector
php
interface Connector
{
public function key(): string; // == ключ манифеста в Catalog, напр. «telegram»
public function actions(): array; // действия «То» для конструктора
public function triggers(): array; // входящие триггеры «Когда»
public function runAction(string $type, array $config, ActionContext $context): string;
public function matchesTrigger(string $type, array $config, array $payload): bool;
}Соглашение
Тип действия/триггера всегда с префиксом ключа коннектора:
telegram.send, telegram.message.received. Так они уникальны в общем списке и однозначно маршрутизируются.#Регистрация — один шаг
Добавьте класс в config/connectors.php — действия и триггеры сразу появятся в конструкторе и пройдут серверную валидацию. Правки Schema, ActionRunner, AutomationEngine не требуются.
php
return [
'enabled' => [
App\Integrations\Connectors\TelegramConnector::class,
App\Integrations\Connectors\MoiskladConnector::class, // ← новый коннектор
],
];Полное руководство
Развёрнутый гид с примерами — в репозитории:
docs/CONNECTORS.md. Референс-реализация — App\Integrations\Connectors\TelegramConnector.