Skip to content

Join an ad-hoc audio conference started on either the SignalWire or Compatibility API. This method allows you to connect the current call to a named conference where multiple participants can communicate simultaneously.

Properties

join_conference

objectRequired

An object that accepts the following properties.

join_conference.name

stringRequired

Name of conference.

join_conference.muted

booleanDefaults to false

Whether to join the conference in a muted state. If set to true, the participant will be muted upon joining.

join_conference.beep

stringDefaults to true

Sets the behavior of the beep sound when joining or leaving the conference.

Possible Values: true, false, onEnter, onExit

join_conference.start_on_enter

booleanDefaults to true

Starts the conference when the main participant joins. This means the start action will not wait on more participants to join before starting.

join_conference.end_on_exit

booleanDefaults to false

Ends the conference when the main participant leaves. This means the end action will not wait on more participants to leave before ending.

join_conference.wait_url

string

A URL to fetch SWML while waiting for the conference to start (before a start_on_enter participant joins). SignalWire sends a POST request with the standard document-fetching webhook body. The response should be a SWML document containing audio to play (e.g., hold music). Default hold music will be played if not set.

join_conference.max_participants

integerDefaults to 100000

The maximum number of participants allowed in the conference. If the limit is reached, new participants will not be able to join.

join_conference.record

stringDefaults to do-not-record

Enables or disables recording of the conference.

Possible Values: do-not-record, record-from-start

join_conference.region

string

Specifies the geographical region where the conference will be hosted.

join_conference.trim

stringDefaults to trim-silence

If set to trim-silence, it will remove silence from the start of the recording. If set to do-not-trim, it will keep the silence.

Possible Values: trim-silence, do-not-trim

join_conference.coach

string

Coach accepts a call SID of a call that is currently connected to an in-progress conference. Specifying a call SID that does not exist or is no longer connected will result in a failure.

join_conference.status_callback_event

string

The events to listen for and send to the status callback URL.

Possible Values: start, end, join, leave, mute, hold, modify, speaker, announcement

join_conference.status_callback

string

The URL to which status events will be sent. This URL must be publicly accessible and able to handle HTTP requests. Learn more about status callbacks.

join_conference.status_callback_method

stringDefaults to POST

The HTTP method to use when sending status events to the status callback URL.

Possible Values: GET, POST

join_conference.recording_status_callback

string

The URL to which recording status events will be sent. This URL must be publicly accessible and able to handle HTTP requests. Learn more about status callbacks.

join_conference.recording_status_callback_method

stringDefaults to POST

The HTTP method to use when sending recording status events to the recording status callback URL.

Possible Values: GET, POST

join_conference.recording_status_callback_event

string

The events to listen for and send to the recording status callback URL.

Possible Values: in-progress, completed, absent

join_conference.result

object

Allows the user to specify a custom action to be executed when the conference result is returned (typically when it has ended). The actions can a switch object or a cond array. The switch object allows for conditional execution based on the result of the conference, while the cond array allows for multiple conditions to be checked in sequence. If neither is provided, the default action will be to end the conference.

Variables

join_conference_result

string

The result of the conference join attempt. Possible values: completed (successfully joined and left the conference), answered (successfully joined the conference), no-answer (failed to join due to no answer), failed (failed to join due to an error), canceled (join attempt was canceled).

return_value

string

Contains the same value as join_conference_result for use in conditional logic.

StatusCallbacks

A POST request will be sent to status_callback with a JSON payload for events specified in status_callback_event. Both conference and recording events share the same calling.conference event type; the specific event is identified by params.status.

event_type

string

The type of event. Always calling.conference.

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 conference-specific parameters.

params.call_id

string

The call ID of the participant.

params.name

string

The name of the conference.

params.conference_id

string

The unique ID of the conference.

params.status

string

The conference event. Valid values:conference-start, conference-end, participant-join, participant-leave, participant-mute, participant-unmute, participant-hold, participant-unhold, participant-speech-start, participant-speech-stop, participant-modify, record-start, record-pause, record-resume, record-stop.

params.size

number

The number of participants currently in the conference.

params.node_id

string

The node identifier.

params.segment_id

string

The segment ID for the call. Present when available.

params.region

string

The geographical region of the conference.

params.tag

string

The tag associated with the call. Present when set.

params.muted

boolean

Whether the participant is muted. Present on participant events.

params.hold

boolean

Whether the participant is on hold. Present on participant events.

params.start_on_join

boolean

Whether the participant starts the conference on join.

params.end_on_leave

boolean

Whether the participant ends the conference on leave.

params.coaching

boolean

Whether the participant is in coaching mode. Present on participant events.

params.recording_url

string

URL to the conference recording. Present on conference-end and record-stop events when a recording exists.

params.recording_file_size

number

Recording file size in bytes. Present on conference-end and record-stop events.

params.recording_duration

number

Recording duration in seconds. Present on conference-end and record-stop events.

params.reason_ended

string

The reason the conference ended. Present on conference-end events.

params.call_id_ending_conf

string

The call ID of the participant that ended the conference. Present on conference-end events.

Participant join event example

{
  "event_type": "calling.conference",
  "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",
    "name": "my_conference",
    "conference_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "status": "participant-join",
    "size": 3,
    "muted": false,
    "hold": false,
    "start_on_join": true,
    "end_on_leave": false,
    "coaching": false
  }
}

Conference end event example

{
  "event_type": "calling.conference",
  "event_channel": "swml:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "timestamp": 1640000000.456,
  "project_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "space_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "params": {
    "call_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "name": "my_conference",
    "conference_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "status": "conference-end",
    "size": 0,
    "reason_ended": "last-participant-left",
    "call_id_ending_conf": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "recording_url": "https://your-space.signalwire.com/api/v1/recordings/rec-uuid/download",
    "recording_duration": 300,
    "recording_file_size": 4800000
  }
}

Examples

Basic Conference Join

YAMLJSON

version: 1.0.0
sections:
  main:
    - join_conference:
        name: "team_meeting"

Conference with Custom Settings

YAMLJSON

version: 1.0.0
sections:
  main:
    - join_conference:
        name: "team_meeting"
        muted: false
        beep: "onEnter"
        start_on_enter: true
        max_participants: 10
        record: "record-from-start"

Conference with Status Callbacks

YAMLJSON

version: 1.0.0
sections:
  main:
    - join_conference:
        name: "support_call"
        status_callback_event: "join"
        status_callback: "https://example.com/conference-status"
        status_callback_method: "POST"
        recording_status_callback: "https://example.com/recording-status"
        recording_status_callback_event: "completed"

SignalWire Developer Documentation