Channel Recipes
This page turns the public channel matrix into operator walkthroughs. The rule stays the same: get the local assistant path healthy first, then add one surface at a time. Do not jump straight to a multi-channel supervisor before one concrete channel already works. Keep Channel Guides open when you need the exact built-in contract for one shipped surface. This page stays narrower: it shows representative rollout patterns rather than duplicating the entire channel inventory. If you want the gateway ownership model in one place instead of the tutorial lane, continue to Gateway And Supervision. If you want the shared public channel-account and selector shape before the recipes branch into specific surfaces, start with Configuration Patterns.Start Here
Most operators should start in one of these places:| If your situation is… | Start with |
|---|---|
| Feishu or Lark should own a team-chat runtime | Recipe 1 |
| Telegram is enough for the simplest reply-loop bot | Recipe 2 |
| Matrix should own a self-hosted or federated room runtime | Recipe 3 |
| WeCom should own the official enterprise lane | Recipe 4 |
| WhatsApp should own a Cloud API reply loop | WhatsApp guide |
| you only need governed outbound delivery | Recipe 6 |
| several identities or several runtime-backed channels are already in scope | Recipe 5 or Recipe 7 |
Pick The Right Recipe
| Need | Start with | Why |
|---|---|---|
| a Feishu or Lark team-chat runtime | Feishu / Lark | shipped inbound runtime with webhook or websocket mode |
| the simplest reply-loop bot | Telegram | smallest runtime-backed setup surface |
| self-hosted or federated room sync | Matrix | explicit homeserver and room boundary |
| a WhatsApp Cloud runtime | WhatsApp guide | shipped Cloud API send plus verified webhook reply loop |
| official WeCom runtime lane | WeCom | shipped AIBot long-connection flow |
| several Feishu / Lark or WeCom identities in one config | Recipe 5 | explicit default account plus stable account selectors |
| proactive delivery without a reply loop | Recipe 6 | outbound-only sends without overclaiming runtime support |
| one host supervising several runtime-backed channels | Recipe 7 | explicit owner contract for long-lived service lanes |
Surface Map
This page uses representative recipes, but it should still keep the shipped surface map visible.| Surface family | Current examples | Best next page |
|---|---|---|
| runtime-backed service channels | Feishu / Lark, Telegram, Matrix, WhatsApp, WeCom | Recipes 1 to 4 plus the WhatsApp guide |
| workplace outbound surfaces | Slack, Discord, Microsoft Teams, Google Chat, Mattermost, Nextcloud Talk, Synology Chat | Recipe 6 |
| messaging and bridge outbound surfaces | LINE, DingTalk, Signal, IRC, iMessage / BlueBubbles, Nostr, Tlon | Recipe 6 |
| direct delivery and alerting surfaces | Webhook, Email, Twitch | Recipe 6 |
| multi-account runtime-backed rollout | Feishu / Lark and WeCom account sets | Recipe 5 |
| multi-channel runtime-backed supervision | several shipped runtime-backed channels on one host | Recipe 7 |
Shared Readiness Loop
After each channel edit, use the same short loop:doctor tells you whether provider and channel prerequisites are healthy.
channels is the quickest way to see how Loong currently classifies each
surface.
Reading Rule
- Use this page when you already know the delivery lane and want concrete config or smoke tests.
- Use Channel Guides when you need the exact built-in contract for one surface.
- Use Configuration Patterns when you
want the shared
default_account,accounts.<id>, and trust-toggle shape before the per-surface walkthroughs. - Start with one surface only; do not jump to multi-channel supervision first.
- Keep Feishu / Lark, Telegram, Matrix, WhatsApp, and WeCom in the runtime-backed lane.
- Keep webhook, email, Slack, Discord, Teams, Google Chat, Mattermost, Nextcloud Talk, Synology Chat, LINE, DingTalk, Signal, IRC, iMessage / BlueBubbles, Nostr, Tlon, and similar sinks in the outbound-only lane.
- Jump to Common Setups when the provider and channel should be chosen together.
Need A Full Rollout Instead?
If the channel choice is already tied to a provider and operating shape, jump straight to the matching playbook.| Stack | Jump here | Why |
|---|---|---|
| Volcengine plus Feishu or Lark | Volcengine Plus Feishu Or Lark | hosted provider and primary team-chat runtime stay in one path |
| Volcengine plus WeCom | WeCom Rollout | the provider and official WeCom lane stay together |
| BytePlus Coding plus Telegram | BytePlus Coding Plus Telegram | coding route and lightweight bot surface stay explicit |
| local or self-hosted inference plus outbound delivery | Local Model Plus Outbound Delivery | outbound-only delivery stays truthful |
| several runtime-backed channels on one host | Gateway Rollout | owner commands and selectors stay in one rollout path |
Recipe 1: Feishu / Lark Inbound Runtime
Feishu and Lark share the same shipped runtime family, but the inbound mode matters. Webhook-mode example:- the team already lives in Feishu or Lark
- you need a shipped inbound runtime rather than outbound notifications only
- reply-loop behavior matters more than a generic webhook sink
| Mode | Good fit when | Extra material |
|---|---|---|
webhook | you want platform callbacks to hit a local bind/path you own | verification_token, encrypt_key, webhook_bind, and webhook_path |
websocket | you want the runtime to keep the inbound connection open itself | base app credentials plus trusted chat ids; no webhook-only secrets |
domain = "lark"selects the Lark base URL, whiledomain = "feishu"keeps the Feishu lane.- webhook mode requires
verification_tokenandencrypt_key - websocket mode should not be documented as if webhook-only secrets were mandatory
allowed_chat_idsremains the conversation trust boundary in both modes
Recipe 2: Telegram Reply-Loop Bot
Telegram is the simplest shipped runtime-backed lane.- one bot token should own the lane
- chat ids are easy to review and allowlist
- you want the shortest path from local assistant to live reply loop
allowed_chat_idsis the trust boundary, not just a convenience list- if you later need several bot identities, move to
default_accountplusaccounts.<id>instead of replacing one token repeatedly
Recipe 3: Matrix Room Sync Bot
Matrix is the right lane when room identity and homeserver control should stay explicit.- you need a self-hosted or federated room lane
- the homeserver boundary is part of the runtime truth
- you want to verify the sync loop once before running it long-lived
base_urlshould point at the homeserver URL, not a random Matrix web client URLuser_idhelps self-message filtering when that matters for the room topology
Recipe 4: WeCom Official AIBot Runtime
WeCom is documented as the official AIBot long-connection lane, not as a generic webhook callback surface.- the deployment is already standardized on WeCom
- the official long-connection transport is the desired runtime contract
- proactive sends and reply-loop service should share the same account identity
- the official websocket URL is used by default; override
websocket_urlonly for controlled environments or bridge setups ping_interval_sandreconnect_interval_sare the right knobs when the network path needs tuning- keep the docs language aligned with the shipped long-connection contract
- do not describe a webhook callback mode as if it were the same supported path
Recipe 5: Multi-Account Feishu / Lark Or WeCom
Use multi-account config before you need gateway selectors. It keeps account ids stable and avoids rewriting one bot or app in place. Feishu / Lark example:- one config should hold prod, backup, or environment-specific accounts
- gateway or multi-channel supervision should target stable account ids
- you want top-level defaults plus account-level overrides instead of duplicating everything
- set
default_accountexplicitly so the default lane is not accidental - keep shared settings at the top level and override only the account-specific secrets or allowlists
- channel-account selectors can target those configured ids directly, for example
lark=workorwecom=alerts
Recipe 6: Outbound-Only Delivery Families
Outbound-only surfaces are the right choice when you want governed delivery without pretending a reply loop already ships. This recipe uses a few representative examples, but the same pattern covers the broader outbound-only catalog: Slack, Discord, Teams, Google Chat, Mattermost, Nextcloud Talk, Synology Chat, LINE, DingTalk, Signal, IRC, iMessage / BlueBubbles, Nostr, Tlon, Webhook, Email, and Twitch. Webhook example:- you need delivery now, but not a reply-loop runtime
- the target system is a webhook, SMTP relay, or other outbound sink
- the surface should remain truthful as outbound-only in public docs
default_account plus accounts.<id> when you need several destinations, and
call the corresponding loong <surface>-send command instead of treating them
as reply-loop runtimes.
More outbound-only starting points:
| Surface family | Current examples | What to configure first | Command shape |
|---|---|---|---|
| workplace chat sinks | Slack, Discord, Microsoft Teams, Google Chat, Mattermost, Nextcloud Talk, Synology Chat | bot token or webhook URL, plus default_account / accounts.<id> when you need several identities | loong <surface>-send |
| messaging and robot lanes | LINE, DingTalk, Signal | channel token, robot webhook, or account identity plus any required secret material | loong <surface>-send |
| bridge and relay lanes | Signal, IRC, iMessage / BlueBubbles, Nostr, Tlon | bridge URL, relay URLs, or server identity plus the account or key material that owns the lane | loong <surface>-send |
| direct delivery and alerting lanes | Webhook, Email, Twitch | endpoint URL, SMTP relay, or OAuth/token material for the target delivery path | loong <surface>-send |
- HTTP-backed outbound delivery blocks private or special-use hosts by default
- if you intentionally target a private bridge or loopback endpoint, widen that boundary explicitly:
Recipe 7: One Host, Multiple Runtime-Backed Channels
Only do this after each service channel works on its own. Foreground compatibility wrapper:- one machine should supervise several shipped runtime-backed surfaces
- account ownership needs to stay explicit per channel
- you want longer-lived service ownership instead of one-off shell sessions
- this lane is for runtime-backed service channels only
lark=is the accepted alias for the Feishu channel family, andfeishu=works too- selectors should reference configured account ids such as
work,alerts, orbot_123456 - outbound-only surfaces such as webhook, email, Slack, Discord, or Teams should not be described as if they join the same reply-loop supervisor
- when you need the ownership and inspection model without the recipe framing, switch to Gateway And Supervision
Channel Rollout Order
- Get
loong askorloong chathealthy first. - Add one runtime-backed service channel or one outbound-only surface.
- Verify with
loong doctorandloong channels. - Only then graduate to
gateway runormulti-channel-serve.
Continue Reading
| If you want to… | Go here |
|---|---|
| move to a full provider-plus-channel rollout path | Common Setups |
| step back to the conceptual surface model | Channels |
| inspect the full shipped channel matrix | Channel Guides |
| inspect the field-level public setup guide | Channel Setup |
| inspect owner commands, selectors, and supervision | Gateway And Supervision |
| go fix the provider lane first | Providers And Models, Provider Guides, and Provider Recipes |