Admin Guide
Commands, keybinds, and permissions for oxide-dispatch.
Commands, keybinds, and permissions for oxide-dispatch. Both admin commands are registered with restricted = true, so CFX gates them on the command.testdispatch / command.testdispatchmany ACE, or the parent command ACE.
Admin Commands
Commands Overview
| Command | Description | Permission |
|---|---|---|
/testdispatch | Create a single test alert at the caller's location | command.testdispatch |
/testdispatchmany | Spawn N random alerts spread over a duration | command.testdispatchmany |
Command Details
Player Commands
These commands are available to all players.
| Command | Description | Rate Limit |
|---|---|---|
/911 <message> | File a 911 emergency call. Routes by configured categories | Config.Broadcast.rateLimitMs (5000ms) |
/311 <message> | File a 311 non-emergency tip | Config.Broadcast.rateLimitMs (5000ms) |
<message> is optional but strongly encouraged. The default category in Config.Civilian.Categories911 / Categories311 is used when called without a radial selection. Calls are anonymous by default — see Config.Civilian.anonymousDefault in the Configuration Reference.
The radial menu (Dispatch → Call 911 / Call 311) provides a no-typing fast path that pre-selects a category.
Responder Commands
Each command checks something different: /panic only works for players whose job is in a configured responder group (police, ems, fire, or custom groups added to Config.ResponderGroups); /callsign works for any player — there is no group check; /replycaller works if you are attached to the alert as a responder, or your job is one of the jobs the alert was sent to.
| Command | Description | Rate Limit |
|---|---|---|
/panic | Trigger a panic / responder-needs-backup alert | Config.Panic.cooldownSec (60s) |
/callsign <value> | Set your callsign (alphanumeric + dashes, max 16 chars) | 2000ms |
/replycaller <alertId> <message> | Reply to a 911/311 caller. Surfaces in the citizen's notification toast | 1500ms |
/panic
Equivalent to the F4 keybind and the radial Panic / Backup item. Subject to the per-responder cooldown in Config.Panic.cooldownSec.
/callsign
Persists your callsign to character metadata (callsign key). Surfaces on alerts you respond to, replies you send, and status broadcasts.
/callsign 1A-23Validation:
- Alphanumeric and dash only (
^[a-zA-Z0-9-]+$) - Max 16 characters
- Must be non-empty
/replycaller
Replies to an active 911/311 alert.
/replycaller 42 Officer en route, ETA 2 minThe citizen receives a toast prefixed with your callsign (or the responder group label if no callsign is set). The reply is also persisted to dispatch_alerts.replies (JSON column) and broadcast via alertUpdated to all on-duty players holding any job the alert was sent to — not just responders attached to the alert.
Keybinds
Default keybinds are registered through RegisterKeyMapping and rebindable per-player from the FiveM key bindings menu (FiveM → Settings → Key Bindings → FiveM).
| Action | Default | Description |
|---|---|---|
| Accept latest dispatch alert | G | Marks you as responding on the most recent alert and drops a GPS waypoint. Silent if there's nothing to accept |
| Panic / Responder Needs Backup | F4 | Triggers panic for your responder group |
Permissions
Both admin commands use ACE permissions via CFX's restricted = true flag. Grant access to your admin group(s):
# In your server.cfg or permissions config
add_ace group.admin command.testdispatch allow
add_ace group.admin command.testdispatchmany allow
# Or grant the parent command ACE for full admin command access
add_ace group.admin command allowFor per-principal access:
add_principal identifier.fivem:1234567 group.adminQBCore permissions
QBCore admins typically have group.admin already mapped through qb-core/server/permissions.lua. Add the ACE lines above to your server.cfg.
ESX permissions
ESX admins similarly have group.admin through their permissions setup. The same ACE lines apply.
QBX permissions
QBX uses standard CFX ACE — no additional setup beyond the add_ace lines.
Operational Tips
- Run
/testdispatch panic policeafter deploying changes to verify the popup, sound, and recipient resolution all still work. - Use
/testdispatchmany 4 police 30to verifyConfig.Popup.maxStacked(default 3) behaves as configured. - If an alert doesn't appear, watch your server console for
sendAlert rejectedwarnings — these are always logged through the o-link logger bridge, so install and start the freeoxide-loggerresource and they appear in the console automatically (warnings pass its default log level; withoutoxide-logger, the messages go nowhere). - Test panic with
/panicwhile clocked in as a responder — it bypasses the duty filter so off-duty colleagues should also see it. - Test the auto-detect pipeline by firing a non-blacklisted weapon outside any zone in
Config.Detection.ZoneBlacklist. - The Dispatch Hub radial entry is master-switched by
Config.DispatchHub.RadialEnabled. If you set it tofalse(e.g. to defer tooxide-policeMDT for LEOs), the entry will not appear for any responder group. Flip it back totrueto test the hub.