> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.jambonz.org/reference/websocket-api/call-control/command/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.jambonz.org/_mcp/server. # command > > websocket server => jambonz A `command` message is sent by the websocket server to jambonz when the server wants to asynchronously provide a new set of instructions to jambonz. | property | type | meaning | required | | ------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | | type | string "command" | indicates this is a command message | yes | | command | string | describes the action to take, see allowed commands below | yes | | queueCommand | boolean | if true, queue this command until previous commands are completed; otherwise, interrupt and flush all previous commands and execute this command immediately | no | | data | array or object | data pertaining to the requested command | yes | The `command` property must be one of the values shown below. > Note: `redirect` is the most commonly-used value. | command value | meaning | data requirements | | ---------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | redirect | execute the application provided | data must be an array of jambonz verbs; i.e. a jambonz application. | | call:status | change the call status (e.g. hangup the call) | data must include a `call_status` property with a value of 'completed' or 'no-answer' | | mute:status | mute or unmute the call | data must include a `mute_status` property with a value of 'mute' or 'unmute' | | conf:mute-status | mute or unmute all non-moderator conference legs | data must include a `conf_mute_status` property with a value of either 'mute' or 'unmute' | | conf:hold-status | place a conference leg on hold or take off hold | data must include a `conf_hold_status` property with a value of either 'hold' or 'unhold' | | listen:status | Change the status of a listen stream | data must include a `listen_status` property with a value of 'pause' or 'resume' | | record | manage call recording that is done via SIPREC to a remote recording server | data must include an `action` with one of "startCallRecording", "stopCallRecording", "pauseCallRecording", or "resumeCallRecording". When starting a recording you must also supply "recordingID" and "siprecServerURL". You may optionally supply a `headers` object with custom headers to be sent to the remote SIPREC recording server. | | whisper | Play a whisper prompt to the caller (i.e only one party hears the prompt) | data must include a `whisper` property that can be an array of say or play verbs | | sip:request | Send a SIP INFO, NOTIFY, or MESSAGE request to the far end party | data must include a 'method' property (allowed values: 'INFO', 'NOTIFY', 'MESSAGE') and can include 'content\_type', 'content', and 'headers' properties. | | dub | add, remove or operate on a dub track. | The data must include the properties defined for the [dub](./docs/webhooks/dub) verb | > Note: In the data payload when `redirect` is used, each jambonz verb in the `data` array may optionally include an `id` property. If present, jambonz will provide `verb:status` notifications when the verb starts and ends execution. ```json { "type": "command", "command": "redirect", "queueCommand": true, "data": [ { "say": { "id": "b5e39996", "text": "Hello it's me Mario" } } ] } ```