Channels
Channels connect the resident Anyy Gateway to messaging platforms. The Dashboard is the main place to add accounts, inspect health, update settings, reauthenticate, and remove connections.
For the supported platform list and behavior comparison, see Messaging Platforms.
Session behavior and platform connections
Platform account authentication, inbound messages and outbound delivery are Anyy integrations. Once admitted to a Session, Agent messages, steering/follow-up queues, abort and events use the same Pi-aligned lifecycle as other Anyy interfaces. A platform adapter does not add another Agent loop or queue policy.
The fixed Pi v1.2.0 main repository has no corresponding unified native
Feishu/Weixin/Slack adapter API; its README points chat workflows to the separate
pi-chat project. That project and third-party plugins are not the reference
for this port. Local account settings and controlled protocol checks do not
prove a real external account is connected; check its observed health.
Open the Channel page
Open Dashboard → Channel. Use the filters to switch between:
- Configured — accounts saved in this Profile, including disconnected ones; and
- Available — platform adapters Anyy can configure.
Each configured account has a stable account ID and an incarnation identifying its current connection. The current setup surfaces add an account only when that platform has none; they do not offer a second-account flow.
Configure an account
- Select an available platform.
- Enter an account ID.
- Complete the platform-specific fields.
- Complete the fields exposed by the selected Dashboard action.
- Save the configuration.
Saving submits the selected account action directly and returns its Operation receipt. Account settings and protected credential bindings commit together. Leaving a secret blank preserves it only when that field allows preservation; use account removal to clean up the account's Anyy-managed credentials.
A committed or no_op receipt describes local settings, not confirmed platform connectivity. A fresh start/retry or unchanged desired-state action still asks the Runtime to reconcile the connection. A retry of the identical caller request returns the original receipt. Check the observed account health for the actual result.
Weixin uses a QR flow: scan with the intended account, confirm on the phone and wait for the authentication result. QR interaction lasts five minutes. A confirmation accepted before expiry can finish local verification afterward; the completed account still needs its observed transport health checked. Cancel or replace the current attempt through the page.
If a Gateway restart loses the live QR poll handle, the attempt is closed as unknown or expired. Anyy does not silently fetch another QR; start a fresh attempt when instructed.
If the login request loses its response, use Retry or reload the login page. Dashboard keeps the same request, so a retry does not start another authentication attempt. Only an explicit refresh requests a new QR code. Request recovery lasts ten minutes per gesture; afterward, return to account settings. This does not extend the QR code's five-minute lifetime.
When reauthenticating a Weixin account, scan with the same identity. To replace it with a different identity, remove the old account first and configure a new one.
Most platforms' Dashboard/TUI credential forms do not expose DM/group policy inputs. Change those through the interactive anyy setup channel wizard. Weixin has a separate bound-account access form. Feishu setup uses the default long connection; standard setup consumers have no connection-profile switch selector. See the platform guide for existing webhook accounts.
Read account health
Open a configured account to inspect:
- desired and current runtime state;
- healthy, degraded, unhealthy, or unknown status;
- last inbound and outbound activity;
- declared delivery-acknowledgement support and observed retry/backoff evidence;
- authentication or permission errors;
- redacted configuration values.
A degraded account may still work partially. Follow the remediation shown on the page before repeatedly reloading it.
Delivery-acknowledgement support is the adapter's declared capability, not proof that a particular message reached the platform. Current evidence, diagnostics and the next retry time describe the observed connection.
Anyy keeps a final reply pending when it can safely retry before sending. If a part was accepted or the remote outcome is uncertain, it does not automatically repeat the message. Check the platform conversation before requesting another copy. Progress from a finished turn does not follow its final reply.
Access policies
Available controls depend on the platform. Common policies include:
- direct messages disabled, paired, allowlisted, or open;
- group messages restricted to mentions or an existing room allowlist; and
- CLI pairing approval for a new sender on supported platforms.
Policy/list fields are surface-specific. Current public sender-list inputs are exposed for Weixin and IRC; other adapters may consume an existing list, but their current setup actions do not offer entry editing. Do not assume selecting allowlist creates a list. Use the narrowest policy the actual setup flow can configure. An account connection does not authorize every sender.
For an already bound Weixin account, open its settings to change the DM policy and allow_from sender list. Saving access settings preserves the current login; another QR scan is unnecessary. An empty list removes all allowlist entries.
Reload Channels
Select Reload when the current saved accounts need runtime reconciliation. Saving an account normally requests reconciliation already; Reload does not replay historical messages or start a disabled webhook listener.
From the CLI:
anyy channel reload
anyy channel doctor telegram
doctor observes configured Channel connectivity and reports diagnostics without changing account configuration. Webhook listener changes require a Gateway restart; see Messaging Platforms.
Pairing from the CLI
The current Dashboard Channel page has no pairing-request approval list. For platforms using pairing, use the CLI:
anyy channel pairing list
anyy channel pairing approve --request REQUEST_ID
anyy channel pairing reject --request REQUEST_ID
anyy channel pairing revoke --grant GRANT_ID
Review the platform, account, masked sender identity, and requested access before approving.
If the bounded list cannot find a known request or grant ID, provide its account scope explicitly:
anyy channel pairing approve --request REQUEST_ID --channel telegram --account personal
anyy channel pairing revoke --grant GRANT_ID --channel telegram --account personal
This selects the current account for the same ID-based action; it does not bypass ownership checks.
Remove an account
The account detail page has a delete action. Removal deletes the Channel configuration and Anyy-managed credentials for that account. It does not delete messages on the external platform.
Removal commits the local stopped/removal fact and credential cleanup together, then reconciles the actual transport. Refresh the list and connection state before configuring the identity again. A local removal receipt does not prove that the platform has logged out.
CLI setup
Run the interactive wizard:
anyy setup channel
Adding a platform name selects non-interactive configuration, not a platform-specific wizard. For example, an existing Telegram account can update policy while preserving permitted credentials:
anyy setup channel telegram --set dm_policy=pairing --set group_policy=mention
New-account configuration also requires the declared credential inputs.
Use anyy setup channel --help for non-interactive --set and sensitive-input options.
Security tips
- Keep bot tokens and signing secrets out of shell history and screenshots.
- Start with pairing or an allowlist before using an open DM policy.
- Verify webhook endpoints and platform permissions on the provider side.
- Remove credentials when retiring an account.
- Treat external message content and attachments as untrusted input.
Troubleshooting
| Problem | Fix |
|---|---|
| Account stays unavailable | Open its detail page and follow the reported remediation |
| Login expired | Reauthenticate the same account identity |
| Messages arrive but replies fail | Check outbound permission, delivery status, and platform rate limits |
| New sender cannot use Anyy | Review the DM policy and pending pairing requests |
| Configuration changed but runtime did not | Select Reload or run anyy channel reload |
See Cron to deliver scheduled results through a connected Channel.