Appearance
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: mp3Record 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}'