Подключения модулей (инстансы)
Подключения модулей — основная точка настройки интеграции для конкретной точки выдачи (или для всех точек сразу).
Создание
Модули интеграций → Подключения модулей → Создать
| Поле | Описание |
|---|---|
| Модуль | Пакет из каталога (MyCrm, ErpSync, …) |
| Точки выдачи | Одна точка или Все активные точки |
| Название | Отображаемое имя |
| Активно | Без галочки события для точки не обрабатываются |
Bulk «Все активные точки»
Сервис IntegrationInstanceBulkService:
- Для каждой активной точки выдачи создаётся отдельный
IntegrationInstanceс одинаковыми полями формы. - Если в manifest указано
capabilities.external_system(напримерmy_crm),IntegrationExternalConnectionBulkServiceсоздаёт/обновляет служебные записи в Интеграции (ExternalSystemIntegration) — без отдельной формы для администратора.
При создании одной точки служебная запись для external_system тоже синхронизируется (createForPickupPoint).
Пример bulk: три точки → три отдельных подключения, по одному на каждую точку, с одинаковыми полями формы модуля.
Форма модуля (instance_form)
Ядро не хардкодит поля CRM в IntegrationInstanceResource. Модуль объявляет в manifest:
"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
"capabilities": {
"external_system": "my_crm"
}
Строка связывает инстанс с external_system_integrations для legacy-контура и UI «Интеграции». Новые модули могут не использовать старый sync ядра напрямую, но capability нужна для bulk и единого учёта.
Действия на странице пакета
capabilities.package_admin → IntegrationPackageAdminExtensionInterface:
- глобальные настройки модуля;
- пользовательские действия модуля;
- Включить фон — подсказка по отдельной очереди, если
INTEGRATION_DEDICATED_QUEUES=true.
Кнопки в заказе
capabilities.order_header_actions → ссылки «Открыть в CRM», «Отправить в …» в карточке заказа.
Проверка
php artisan integrations:package:inspect MyCrm
В выводе — подключения по точкам, operational, зарегистрированные capabilities.