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

CommandDescriptionPermission
/testdispatchCreate a single test alert at the caller's locationcommand.testdispatch
/testdispatchmanySpawn N random alerts spread over a durationcommand.testdispatchmany

Command Details

Player Commands

These commands are available to all players.

CommandDescriptionRate Limit
/911 <message>File a 911 emergency call. Routes by configured categoriesConfig.Broadcast.rateLimitMs (5000ms)
/311 <message>File a 311 non-emergency tipConfig.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.

CommandDescriptionRate Limit
/panicTrigger a panic / responder-needs-backup alertConfig.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 toast1500ms

/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-23

Validation:

  • 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 min

The 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).

ActionDefaultDescription
Accept latest dispatch alertGMarks you as responding on the most recent alert and drops a GPS waypoint. Silent if there's nothing to accept
Panic / Responder Needs BackupF4Triggers 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 allow

For per-principal access:

add_principal identifier.fivem:1234567 group.admin

QBCore 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 police after deploying changes to verify the popup, sound, and recipient resolution all still work.
  • Use /testdispatchmany 4 police 30 to verify Config.Popup.maxStacked (default 3) behaves as configured.
  • If an alert doesn't appear, watch your server console for sendAlert rejected warnings — these are always logged through the o-link logger bridge, so install and start the free oxide-logger resource and they appear in the console automatically (warnings pass its default log level; without oxide-logger, the messages go nowhere).
  • Test panic with /panic while 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 to false (e.g. to defer to oxide-police MDT for LEOs), the entry will not appear for any responder group. Flip it back to true to test the hub.

Next Steps