К содержанию
База CRMДокументация

Разработка коннекторов

Контракт «коннектор ↔ автоматизация»

Живая интеграция («коннектор») подключается к движку автоматизаций через единый контракт: коннектор объявляет свои действия и входящие триггеры, а конструктор и движок подхватывают их динамически — бе...

Живая интеграция («коннектор») подключается к движку автоматизаций через единый контракт: коннектор объявляет свои действия и входящие триггеры, а конструктор и движок подхватывают их динамически — без правок ядра.

Кому это

Раздел для разработчиков, добавляющих новую интеграцию в код «Базы». Для работы с готовыми интеграциями из интерфейса он не нужен — см. раздел «Интеграции».

#Из чего состоит

  • 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.