Messaging Platforms
Messaging Channels let you talk to the resident Anyy Gateway from services you already use. Each configured account has its own connection profile, credentials, and direct/group access policy.
Supported Platforms
The current channel catalog implements:
| Platform | Connection |
|---|---|
| Telegram | Bot API long polling |
| Discord | Bot Gateway |
| Slack | Socket Mode |
| Business Cloud API webhook | |
| Messenger webhook | |
| IMAP receive and SMTP send over TLS | |
| SMS | Twilio webhook and REST |
| DingTalk | Stream connection |
| Feishu / Lark | Long connection or webhook |
| Weixin / WeChat | QR-confirmed long polling |
| QQ Bot | WebSocket Gateway |
| IRC | TLS and SASL |
| LINE | Messaging API webhook |
The installed setup wizard is authoritative for the running version. A platform that the wizard marks unsupported cannot be activated by guessing configuration fields.
Quick Setup
Run:
anyy setup channel
Open one platform directly when appropriate:
anyy setup channel telegram
Choose a platform, account, connection profile, and access policy, then provide the requested identifiers and credentials. Review the staged action before confirming it.
When setup writes a Channel action, it installs and starts the resident Gateway service if needed. Messaging depends on that runtime remaining available.
Test the main model in Dashboard or the TUI before adding a Channel. This separates model/provider failures from messaging connection problems.
Configure an Account in Dashboard
Open Dashboard → Channel. Use the filters to switch between:
- Configured — accounts already connected to this Profile; and
- Available — platform adapters Anyy can configure.
Then:
- Select a platform.
- Enter a stable account ID. Use a different ID for each account on the same platform.
- Choose a supported connection profile.
- Complete its platform-specific fields.
- Review direct-message and group access policies.
- Save.
Sensitive fields use Anyy's credential handling. When editing an existing account, leaving an existing secret field blank keeps its saved value instead of revealing it in the form.
Weixin QR login
Weixin / WeChat exposes its login flow directly in Dashboard. Scan the QR code, approve the login, and wait for Anyy to bind the confirmed identity. A QR code is valid for five minutes.
When reauthenticating Weixin, scan with the same identity. To use a different identity, remove the old account and create a new one.
Read Account Health
Open a configured account to inspect:
- desired and current runtime state;
- healthy, degraded, unhealthy, or unknown status;
- latest inbound and outbound activity;
- delivery acknowledgements and retry/backoff state;
- authentication or permission errors;
- media capabilities; and
- redacted configuration values.
A degraded account may still work partially. Follow the displayed remediation before repeatedly reloading it.
Access and Pairing
Available controls depend on the platform. Common policies include:
- direct messages disabled, paired, allowlisted, or open;
- group messages restricted to mentions or approved rooms; and
- pairing approval for a new sender.
Use the narrowest policy that fits your workflow. Connecting an account does not authorize every sender to use Anyy.
List pending requests:
anyy channel pairing list
Approve or reject one:
anyy channel pairing approve --request REQUEST_ID
anyy channel pairing reject --request REQUEST_ID
Approve by interactively entered code when supported:
anyy channel pairing approve --prompt-code \
--channel telegram --account personal
Revoke a grant:
anyy channel pairing revoke --grant GRANT_ID --reason "access removed"
A pending pairing request expires after one hour. The resident Channel manager checks pairing maintenance every five minutes, so an expired request can remain visible briefly but cannot be approved into a grant. Ask the sender to create a fresh request instead.
Verify the person, account, and platform. A grant can expose conversations and enabled assistant capabilities under that Channel's policy.
Diagnose and Reload
Inspect a platform without changing it:
anyy channel doctor telegram
Reload Channel configuration in the running Gateway:
anyy channel reload
Use Dashboard Reload after an out-of-band configuration change or when a healthy saved account has not been picked up. Add --json to supported doctor, pairing-list, or reload commands when another program needs structured output.
Remove an Account
Use the account detail page in Dashboard. Removal deletes the Channel configuration and Anyy-managed credentials for that account; it does not delete messages from the external platform.
Removal may complete asynchronously. Wait for the account to disappear or refresh its observed state before configuring the same identity again.
Non-Interactive Setup
Automation can configure one platform with:
anyy setup channel CHANNEL \
[--set INPUT=VALUE] \
[--sensitive-fd INPUT=FD] \
[--external-locator-fd INPUT=FD]
Use --set for non-secret input. Use --sensitive-fd so credentials do not appear in process arguments or shell history. --external-locator-fd supplies externally managed secret locations when the selected field supports them.
The selected platform/profile defines the exact input IDs. Do not copy field names from another Channel.
Run anyy setup channel --help for the complete interactive and non-interactive options.
Webhook Platforms
WhatsApp, Facebook, SMS, LINE, and the Feishu webhook profile require inbound webhook delivery. Setup asks for platform-specific callback fields and verification credentials.
Provide a stable reachable HTTPS path, protect signature-verification secrets, and complete the provider-side event subscriptions and permissions reported by setup or doctor.
Security Tips
- Keep bot tokens and signing secrets out of shell history and screenshots.
- Start with pairing or an allowlist before choosing an open DM policy.
- Verify webhook endpoints and provider-side permissions.
- Remove Anyy and provider credentials when retiring an account.
- Treat external messages and attachments as untrusted input.
Troubleshooting
| Problem | Fix |
|---|---|
| Account saves but never receives | Run anyy gateway status and anyy channel doctor CHANNEL |
| A long-poll or WebSocket Channel disconnects | Correct credentials or network access, then run anyy channel reload |
| Webhook verification fails | Check public HTTPS routing, callback URL, signature secret, and provider subscription |
| Messages arrive but replies fail | Check outbound permission, delivery status, and platform rate limits |
| Direct message is ignored | Review DM policy, pairing state, and allowlist |
| Group message is ignored | Review group policy and whether a mention is required |
| Wrong person was paired | Revoke the grant immediately and review active access |
| Runtime does not reflect a saved change | Select Reload or run anyy channel reload |