Skip to content

Record call in the background. Unlike the record method, the record_call method will start the recording and continue executing the SWML script while allowing the recording to happen in the background. To stop call recordings started with record_call, use the stop_call_record method.

Properties

record_call

objectRequired

An object that accepts the following properties.

record_call.control_id

stringDefaults to Auto-generated, saved to record_control_id variable

Identifier for this recording, to use with stop_record_call

record_call.stereo

booleanDefaults to false

Whether to record in stereo mode

record_call.format

stringDefaults to wav

Format ("wav", "mp3", or "mp4")

record_call.direction

stringDefaults to both

Direction of the audio to record: "speak" for what party says, "listen" for what party hears, "both" for what the party hears and says

record_call.terminators

string

String of digits that will stop the recording when pressed. Default is empty (no terminators).

record_call.beep

booleanDefaults to false

Whether to play a beep before recording

record_call.input_sensitivity

numberDefaults to 44.0

How sensitive the recording voice activity detector is to background noise? A larger value is more sensitive. Allowed values from 0.0 to 100.0.

record_call.initial_timeout

numberDefaults to 0

How long, in seconds, to wait for speech to start?

record_call.end_silence_timeout

numberDefaults to 0

How much silence, in seconds, will end the recording?

record_call.max_length

number

Maximum length of the recording in seconds.

record_call.status_url

string

HTTP or HTTPS URL to deliver record status events. Learn more about status callbacks.

Variables

Set by the method:

  • record_call_url: (out) the URL of the newly started recording.
  • record_call_result: (out) success | failed.
  • record_control_id: (out) control ID of this recording.

StatusCallbacks

A POST request will be sent to status_url with a JSON payload like the following:

event_type

string

The type of event. Always calling.call.record for this method.

event_channel

string

The channel for the event, includes the SWML session ID.

timestamp

number

Unix timestamp (float) when the event was generated.

project_id

string

The project ID associated with the call.

space_id

string

The Space ID associated with the call.

params

object

An object containing recording-specific parameters.

params.call_id

string

The call ID.

params.node_id

string

The node handling the call.

params.control_id

string

The control ID for this record operation.

params.state

string

The current recording state. Valid values:recording, paused, finished, no_input, error.

params.record

object

Recording result details (present when state is finished).

record.url

string

URL to download the recording.

record.duration

number

Recording duration in seconds.

record.size

number

Recording file size in bytes.

record.format

string

Recording format. Valid values:wav, mp3.

Raw JSON example

{
  "event_type": "calling.call.record",
  "event_channel": "swml:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "timestamp": 1640000000.123,
  "project_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "space_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "params": {
    "call_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "node_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "control_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "state": "finished",
    "record": {
      "url": "https://your-space.signalwire.com/api/v1/recordings/rec-uuid/download",
      "duration": 15.5,
      "size": 248320,
      "format": "wav"
    }
  }
}

Examples

Start an MP3 recording of the call

YAMLJSON

version: 1.0.0

sections:

  main:

    - record_call:

        format: mp3

Record and play back

Record both sides of the conversation:

YAMLJSON

version: 1.0.0

sections:

  main:

    - record_call:

        beep: true

        terminators: '#'

    - play:

        urls:

          - 'say:Leave your message now'

          - 'silence:10'

    - stop_record_call: {}

    - play:

        urls:

          - 'say:Playing back'

          - '${record_call_url}'

Record only the speaker’s side

YAMLJSON

version: 1.0.0

sections:

  main:

    - record_call:

        beep: true

        direction: speak

    - play:

        urls:

          - 'say:Leave your message now'

          - 'silence:10'

    - stop_record_call: {}

    - play:

        urls:

          - 'say:Playing back'

          - '${record_call_url}'

SignalWire Developer Documentation