Connectors — external channels connected to the knowledge base
Connectors link the messaging channels where your customers and colleagues already are — WhatsApp, Telegram, Discord, Slack — to the same knowledge base that powers the internal chat. Conversations stay on your servers: the app calls the channel's APIs w…
Connectors link the messaging channels where your customers and colleagues already are — WhatsApp, Telegram, Discord, Slack — to the same knowledge base that powers the internal chat. Conversations stay on your servers: the app calls the channel's APIs with the credentials the administrator supplies, and the answers come from the document knowledge base.
Enterprise edition only (connectors_enabled: falsein the Community license — the Community admin panel shows the UpgradePrompt; see Administration). References:packages/shared/src/schemas/connector.schema.ts(the form fields),packages/server/src/routes/connectors.ts(the limits + the router),CHANGELOG.mdv0.28.1,packages/shared/src/constants/license.ts. Provenance rows:FACT-CENSUS.mdF-CONN-1, F-CONN-2, F-LIC-1.
Creating a connector
Path: Settings → Conversations → Connectors (the New connector button). The form requires:
| Field | Notes |
|---|---|
| Name | the connector instance identifier |
| Platform | telegram, discord, slack, whatsapp — immutable after creation |
| Bot token / credentials | the channel's secret token — immutable after create (create-only; the PUT never touches it) |
| Workspace | the binding workspace, immutable |
| Knowledge archive binding | the document archive feeding the answers |
| Welcome message | the first message the channel sends to an incoming conversation (max 4000 chars) |
| Fallback message | the reply when search produces no valid sources (max 4000 chars) |
| Fallback locale | the fallback message's language |
| Rate limit | 0 = unlimited (the router's sentinel), N = N requests max |
| Daily session limit | 0 = unlimited, N = N sessions per day max |
The archive binding determines the corpus: every question arriving from the channel goes through the same RAG pipeline as internal chats (hybrid search, source citation, synthesis) — the cited answer is sent back on the originating channel.
Editing a connector (v0.28.1)
The connector card in the admin panel carries an overflow menu with an Edit item (the first): it opens a pre-filled dialog over the mutable surface:
- Mutable via `PUT /api/connectors/:id`: name, archive binding, welcome/fallback messages, fallback locale, rate limit, daily session limit (empty = null;
0= unlimited). - Immutable by schema: platform, bot token, workspace. A channel or token change = a new connector.
- The
isEnabledtoggle stays on the card (Switch); the TelegrampollModestays on the webhook buttons. - The PUT logs the
chat_connector.updatedaudit event (parity with the DELETE arm).
Platform adapters
Each platform runs a dedicated adapter with its own registration credentials:
| Platform | Credentials | Notes |
|---|---|---|
| Telegram | bot token (@BotFather) | poll mode and webhook both supported (dedicated buttons on the card) |
| Discord | bot token (Developer Portal) + message intents | the adapter reads the bot's authorized channels |
| Slack | bot token + signing secret (Slack app) | message events via the configured webhook |
| Business API provider (secret token) | the adapter calls the provider's API |
Credentials transit and stay server-side; the secret token is never reflected in the UI after creation.
Limits and the fallback message
The rate limit and the daily session limit protect the workspace from external traffic: 0 = unlimited; N = the per-connector maximum. The fallback message (with its configurable fallback locale) is the reply when corpus search yields no valid citable elements — an external channel never receives ungrounded generations when a fallback is configured.
Disabling and audit
isEnabled(the card Switch) suspends routing without deleting the configuration.- Connector DELETE is a dedicated audited action (the
chat_connector.deletedevent, parity withupdated). - Every admin operation on connectors lands in the event log (see Administration).
Activating Enterprise without touching the server
The Enterprise license applies by pasting the key in the panel (Settings → Security → License, GET/PUT/DELETE /api/license/instance): probe-first verification (invalid/expired/plugin_bound/community_tier — a rejected key never persists), AES-256-GCM ciphertext in SystemConfig, runtime application via setCachedLicense. See API reference; F-LIC-1.
This guide covers the operator surface for the connector adapters; the engineering deep dive lives in the twin post:
Provenance
| Section | Source |
|---|---|
| Edition gate / UpgradePrompt | packages/shared/src/constants/license.ts (connectors_enabled) — F-CONN-1 |
| Edit surface + immutables + audit | CHANGELOG.md v0.28.1 (Added, Q1-quick; Phase 221 for the license) — F-CONN-2, F-LIC-1 |
| Form fields / limits | packages/shared/src/schemas/connector.schema.ts (welcomeMessage/fallbackMessage max 4000, fallbackLocale, rateLimitPerMinute/sessionLimitPerDay - the limiter translates 0 → unlimited) |
---
Operator reference — Simmetric Chat v0.28.1 (docs refreshed 2026-10-02, census SHA `aca5b8ff`).