Skip to main content
Experimental. Core finds, validates and boots connector packages, but a connector cannot register a channel yet: the registration surface (sender, ingress, webhook registration) comes in a later Foundation release. Today a new provider is still a Core change — see Channel drivers.
A connector brings one or more messaging channels — Telegram, Viber — to an installation. It is a Composer package, installed when the image is built, like a Solution. Unlike a Solution it is not activated per tenant: once installed, its channel types exist for the whole installation, and which tenant may use them is the operator’s decision.

The manifest

A connector describes itself in its own composer.json: "type": "fapost-connector" and an extra.fapost block. Core reads it on platform:update without running your code.
Any other field is an error. When two packages claim one id, or two connectors one channel type, none of them is booted and platform:update stops with nothing changed. The rules live in Foundation (Fapost\Foundation\Connector\Manifest\ConnectorManifestParser), a pure function you can run in your package’s CI.

The service provider

registerBindings() runs in register(), bootConnector() in boot(). Core boots connectors before Solutions.

Installing

Add the package to your image through the build overlay (Building your own images), then run php artisan platform:update: it lists the installed connectors with their channel types, or refuses with every manifest problem it found.