Nextcloud Talk
Nextcloud Talk is the clean self-hosted path when you already run Nextcloud and want a bot that lives alongside the rest of your internal collaboration stack. Fased receives webhook events from the Talk bot API and sends replies back through the same channel account. Status: bundled channel extension for DMs, rooms, reactions, and markdown-style replies.Setup from Agent > Channels
Nextcloud Talk ships with Fased as a local bundled channel extension. You do not need to download an npm package in a normal install. Open Agents, select the Agent, then use Agent > Channels > Nextcloud Talk. Enter the base URL and bot secret, save the channel, then restart the gateway if the UI reports that the runtime still needs to load.Quick setup (beginner)
The only externally visible piece is the bot webhook URL. Everything else can stay inside your normal Nextcloud and gateway trust boundary.-
On your Nextcloud server, create a bot:
- Enable the bot in the target room settings.
-
Configure Fased in Agent > Channels > Nextcloud Talk:
- Config:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - Or env:
NEXTCLOUD_TALK_BOT_SECRET(default account only)
- Config:
- Restart the gateway if the UI asks for it.
Notes
- Bots cannot initiate DMs. The user must message the bot first.
- Webhook URL must be reachable by the Gateway; set
webhookPublicUrlif behind a proxy. - Media uploads are not supported by the bot API; media is sent as URLs.
- The webhook payload does not distinguish DMs vs rooms; set
apiUser+apiPasswordto enable room-type lookups (otherwise DMs are treated as rooms).
Access control (DMs)
- Default:
channels.nextcloud-talk.dmPolicy = "pairing". Unknown senders get a pairing code. - Approve via:
fased pairing list nextcloud-talkfased pairing approve nextcloud-talk <CODE>
- Public DMs:
channels.nextcloud-talk.dmPolicy="open"pluschannels.nextcloud-talk.allowFrom=["*"]. allowFrommatches Nextcloud user IDs only; display names are ignored.
Rooms (groups)
- Default:
channels.nextcloud-talk.groupPolicy = "allowlist"(mention-gated). - Allowlist rooms with
channels.nextcloud-talk.rooms:
- To allow no rooms, keep the allowlist empty or set
channels.nextcloud-talk.groupPolicy="disabled".
Capabilities
| Feature | Status |
|---|---|
| Direct messages | Supported |
| Rooms | Supported |
| Threads | Not supported |
| Media | URL-only |
| Reactions | Supported |
| Native commands | Not supported |
Configuration reference (Nextcloud Talk)
Full configuration: Configuration Provider options:channels.nextcloud-talk.enabled: enable/disable channel startup.channels.nextcloud-talk.baseUrl: Nextcloud instance URL.channels.nextcloud-talk.botSecret: bot shared secret.channels.nextcloud-talk.botSecretFile: secret file path.channels.nextcloud-talk.apiUser: API user for room lookups (DM detection).channels.nextcloud-talk.apiPassword: API/app password for room lookups.channels.nextcloud-talk.apiPasswordFile: API password file path.channels.nextcloud-talk.webhookPort: webhook listener port (default: 8788).channels.nextcloud-talk.webhookHost: webhook host (default: 0.0.0.0).channels.nextcloud-talk.webhookPath: webhook path (default: /nextcloud-talk-webhook).channels.nextcloud-talk.webhookPublicUrl: externally reachable webhook URL.channels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled.channels.nextcloud-talk.allowFrom: DM allowlist (user IDs).openrequires"*".channels.nextcloud-talk.groupPolicy:allowlist | open | disabled.channels.nextcloud-talk.groupAllowFrom: group allowlist (user IDs).channels.nextcloud-talk.rooms: per-room settings and allowlist.channels.nextcloud-talk.historyLimit: group history limit (0 disables).channels.nextcloud-talk.dmHistoryLimit: DM history limit (0 disables).channels.nextcloud-talk.dms: per-DM overrides (historyLimit).channels.nextcloud-talk.textChunkLimit: outbound text chunk size (chars).channels.nextcloud-talk.chunkMode:length(default) ornewlineto split on blank lines (paragraph boundaries) before length chunking.channels.nextcloud-talk.blockStreaming: disable block streaming for this channel.channels.nextcloud-talk.blockStreamingCoalesce: block streaming coalesce tuning.channels.nextcloud-talk.mediaMaxMb: inbound media cap (MB).