Admin Chat

Run your VoiceLink server by chatting: type status, rooms or who Lounge and get a short answer in plain sentences.

Overview

  • Admin chat is a server module (Admin, Modules, Admin chat). It answers short commands with plain sentences that read well with a screen reader: no tables, no codes.
  • You can use it in two places:
    • In VoiceLink, by sending a direct message to Admin chat.
    • From a linked chat app, such as the VoiceLink contact in Thrive Messenger. One contact covers all the servers you link.
  • You only ever get your own role on that server. Moderators can moderate, admins can manage the server, and everyone else gets public information: help, status, the room list and who is in public rooms.
  • Changes that are hard to undo (removing or banning someone, changing a role, restarting, messaging everyone, turning a module off) ask you to reply confirm within 2 minutes. Reply cancel, or anything else, to leave things as they are.
  • Every command is logged. Admins see the log in Admin, Modules, Admin chat, Logs.

Commands

Say help for the commands you can use, or help and a command name, for example help users.

For everyone

  • status: whether the server is up, its version, how long it has run, and how many people and agents are on. Admins also hear the machine load and memory.
  • rooms: rooms in use and empty rooms, with how many people are in each. Moderators also see private and hidden rooms.
  • who or who and a room: who is in each room, or in one room.
  • room and a name: details for one room.
  • servers: this server and the servers it shares rooms with.
  • whoami: how this server knows you, and your role.

For moderators and above

  • invite and a room, optionally to a person: makes an invite link. If the person has an account on the server, they're told in VoiceLink too.
  • announce, a room name, then your text: posts a notice in that room's chat.
  • users find and a name; users kick and a name, optionally a reason; users ban and a name, optionally server for the whole server, a time such as 30 minutes or 2 hours, and a reason; users bans lists bans; users unban and a name or a number from the list. You can't remove or ban someone with the same or a higher role than yours.

For admins and the owner

  • broadcast and your text: a notice to everyone connected.
  • agents: where each agent is. agents send and an agent and a room moves it there and pins it; agents pin and agents unpin add or remove a room; agents on and agents off switch an agent.
  • modules: which modules are on and off, and any recent module errors. modules show and a name reads a module's settings; modules enable or modules disable switches one.
  • users role, a name, then admin, moderator, owner or none. Only an owner can make someone an owner.
  • logs or logs errors: a short summary of the server log. Addresses and email addresses are hidden.
  • deploy status: the running version, when the code last changed, and when the server started.
  • events: recent server-provisioning lifecycle, backup, moderation and scheduler events for this server, newest first.
  • restart: restarts the server. It tells you first how many people are in rooms. Who may restart is set in the module's Permissions.
  1. Sign in to VoiceLink on the server, as an account with moderator or higher role.
  2. Send Admin chat the message link code, or use Make a link code for a chat app in Admin, Modules, Admin chat. You get a code like ABCD-1234. It works once, for 10 minutes.
  3. In the chat app, send the code with the server's name. In Thrive, message the VoiceLink contact: link Community ABCD-1234. For a server that isn't one of ours, use its web address instead of the name.
  4. You're linked. The chat app now acts with your role on that server, checked every time, so if your role changes, so does what you can do.

Send unlink from the chat app to undo it. Admins can remove every link at once in Admin, Modules, Admin chat. Links expire after 180 days unless an admin changes that in Permissions.

The VoiceLink contact in Thrive

  • Message VoiceLink in your Thrive contacts. Send help to start.
  • It knows our servers by name: Main, Community, Dev and both Devine Creations addresses. Send use and a name to switch, or put a name first to ask another server once, for example community rooms or dev logs errors.
  • servers tells you how each server is doing and your role on each.
  • updates (our server admins) lists the published app versions, the versions people are using, and any update problems reported in the last day, with details (what failed, which app and version, how many times, and whether a fix is already in progress) given right away. updates failures shows just that list.
  • notify on, notify off and notify test (or just say "turn on notifications" or "send a test notification") control whether our server admins get a Thrive message here for server restarts, backups, moderation actions and scheduler failures as they happen. Quiet hours hold anything that isn't an error or a test and send it as one message once they end.
  • If you invite someone who has no VoiceLink account but is a Thrive contact, for example invite Lounge to sam, the contact sends sam the invite link in Thrive.
  • Staff can also just ask a question in their own words, like "is anyone in the music rooms on community?". An assistant answers using only these same commands, with your permissions, and it can't confirm changes for you.

Settings (Admin, Modules, Admin chat)

  • Server name in replies: the name admin chat uses for this server. Use a name people know, not an address.
  • Answer everyone else with public information: turn off to answer staff only.
  • Allow linked chat apps: turn off to stop every linked app at once.
  • Permissions: who can manage the server through admin chat, who can restart the server, and how long links last.
  • Turning the module off makes admin chat reply that it is turned off.

For developers

  • GET /api/admin-chat/info (public): server name, version, the in-app contact id system:admin-chat, and the command list with roles.
  • POST /api/admin-chat/command with {text, format?: "json"} returns {reply, role, server, pending?, data?}. format: "json" adds data for status, servers, rooms and who. Callers are identified by a VoiceLink Bearer token, or by a chat app's X-Admin-Chat-Client-Key plus X-Admin-Chat-User.
  • POST /api/admin-chat/link-code (signed-in staff) returns {code, expiresAt}. POST /api/admin-chat/pair with {code, clientId, clientLabel, externalUser} links that user; a chat app without a key gets its clientKey in this reply, once. The server stores only a hash of the key. DELETE /api/admin-chat/link unlinks.
  • In VoiceLink, a direct-message to system:admin-chat is answered as Admin chat.
  • Data: data/admin-chat.json (settings, chat apps, links) and data/admin-chat-audit.jsonl (the log). Code: server/modules/admin-chat; tests: test/admin-chat-e2e.js.