Перейти к содержимому

Подключения модулей (инстансы)

Подключения модулей — основная точка настройки интеграции для конкретной точки выдачи (или для всех точек сразу).

Создание

Модули интеграций → Подключения модулей → Создать

ПолеОписание
МодульПакет из каталога (MyCrm, ErpSync, …)
Точки выдачиОдна точка или Все активные точки
НазваниеОтображаемое имя
АктивноБез галочки события для точки не обрабатываются

Bulk «Все активные точки»

Сервис IntegrationInstanceBulkService:

  1. Для каждой активной точки выдачи создаётся отдельный IntegrationInstance с одинаковыми полями формы.
  2. Если в manifest указано capabilities.external_system (например my_crm), IntegrationExternalConnectionBulkService создаёт/обновляет служебные записи в Интеграции (ExternalSystemIntegration) — без отдельной формы для администратора.

При создании одной точки служебная запись для external_system тоже синхронизируется (createForPickupPoint).

Пример bulk: три точки → три отдельных подключения, по одному на каждую точку, с одинаковыми полями формы модуля.

Форма модуля (instance_form)

Ядро не хардкодит поля CRM в IntegrationInstanceResource. Модуль объявляет в manifest:

json
"capabilities": {
  "instance_form": "Modules\\Integrations\\MyCrm\\Filament\\MyCrmInstanceFormExtension"
}

Класс реализует IntegrationInstanceFormExtensionInterface:

МетодНазначение
supports(IntegrationPackage $package)Привязка к пакету
formComponents(?IntegrationInstance $record)Секции Filament (креды, маппинг, …)
usesStructuredCredentials()true → JSON‑креды, не KeyValue
scopeModeHelperText()Подсказка для режима «все точки»
namePlaceholder()Placeholder названия

Реестр: IntegrationFilamentExtensionRegistry.

После сохранения инстанса модуль может показать inbound URL с подстановкой {instance}.

Раздел «Интеграции»

Форма Интеграции в админке ориентирована на legacy-контур с external_system. Для новых manifest-модулей основной экран настройки — Подключения + instance_form. Запись в Интеграции может создаваться автоматически для внутренней синхронизации и совместимости.

Исходящие webhooks на инстансе

На карточке подключения — вкладка Исходящие webhooks: URL, секрет, список хуков (пусто = все). Привязка к инстансу и pickup_point_id.

Credentials

Хранятся в integration_instances.credentials (массив). Типичные ключи:

КлючГде используется
inbound_webhook_secretПодпись inbound (входящий webhook)
Поля модуляСвой handler / REST клиент (например URL, токен, маппинг, режимы обмена)

external_system в manifest

json
"capabilities": {
  "external_system": "my_crm"
}

Строка связывает инстанс с external_system_integrations для legacy-контура и UI «Интеграции». Новые модули могут не использовать старый sync ядра напрямую, но capability нужна для bulk и единого учёта.

Действия на странице пакета

capabilities.package_adminIntegrationPackageAdminExtensionInterface:

  • глобальные настройки модуля;
  • пользовательские действия модуля;
  • Включить фон — подсказка по отдельной очереди, если INTEGRATION_DEDICATED_QUEUES=true.

Кнопки в заказе

capabilities.order_header_actions → ссылки «Открыть в CRM», «Отправить в …» в карточке заказа.

Проверка

bash
php artisan integrations:package:inspect MyCrm

В выводе — подключения по точкам, operational, зарегистрированные capabilities.

Связанные разделы

База знаний для EMS-платформы PlatParts.