Skip to navigation

Conference status callback

View as MarkdownOpen in Claude

Payload sent by SignalWire to your conference statusCallback URL when a conference or one of its participants changes state.

Configure this callback with the statusCallback, statusCallbackEvent, and statusCallbackMethod attributes of the Conference noun. The participant whose <Conference> creates the conference sets these for the whole conference; the values given by participants who join later are ignored. If statusCallbackEvent is not set, no callbacks are sent.

Each statusCallbackEvent value subscribes to one or more events:

statusCallbackEvent valueEvents sent
startconference-start
endconference-end
joinparticipant-join
leaveparticipant-leave, plus participant-call-quality for participants who joined with emitCallQuality="true"
muteparticipant-mute, participant-unmute
holdparticipant-hold, participant-unhold
speakerparticipant-speech-start, participant-speech-stop

participant-call-quality reports the audio statistics for a participant who joined with emitCallQuality="true". It is sent when that participant leaves, if statistics are available.

The parameters sent depend on the event:

Parameterconference-start, conference-endparticipant-join, -leave, -mute, -unmute, -hold, -unholdparticipant-speech-start, -speech-stopparticipant-call-quality
AccountSid, ConferenceSid, StatusCallbackEvent, TimestampYesYesYesYes
CallSidSent with no valueYesYesYes
FriendlyNameYesYesNoNo
Muted, HoldSent with no valueYesYesNo
EndConferenceOnExit, StartConferenceOnEnter, Coaching, CallSidToCoachNoYesYesNo
ReasonConferenceEnded, CallSidEndingConferenceconference-end onlyNoNoNo
AudioRttAvg, AudioRttMin, AudioRttMax, AudioOutJitterAvg, AudioOutJitterMin, AudioOutJitterMax, AudioOutLostNoNoNoYes; AudioOutJitterAvg only when RTCP (RTP Control Protocol) reports were received

SignalWire sends the parameters as a form-encoded (application/x-www-form-urlencoded) POST body, not as JSON. When statusCallbackMethod is GET, they are sent as query parameters instead. Every value is a string: boolean parameters are sent as true or false.

Conference recordings report to a separate URL, recordingStatusCallback. See the Recording status callback.

Status callbacks are advisory, best-effort notifications — delivery can be delayed or fail silently, so don’t gate time-critical actions on receiving one. See Status callback reliability.

Payload

The payload of this webhook request is an object.
AccountSidstringRequired
The unique ID of the project the conference belongs to.
ConferenceSidstringRequired
The unique identifier for the conference.
StatusCallbackEventenumRequired

The event that triggered this request.

  • conference-start: the conference started.
  • conference-end: the conference ended.
  • participant-join: a participant joined.
  • participant-leave: a participant left.
  • participant-mute / participant-unmute: a participant was muted or unmuted.
  • participant-hold / participant-unhold: a participant was put on hold or taken off hold.
  • participant-speech-start / participant-speech-stop: a participant started or stopped speaking.
  • participant-call-quality: audio quality statistics for a participant who joined with emitCallQuality="true", sent when that participant leaves.
TimestampstringRequired
The timestamp, in RFC 2822 format, of when SignalWire processed the event.
CallSidstringRequired

The unique identifier of the participant’s call. Sent on every event; on conference-start and conference-end it has no value.

FriendlyNamestringOptional

The name of the conference, as given in the <Conference> noun. Not sent on participant-speech-start, participant-speech-stop, or participant-call-quality.

MutedenumOptional

Whether the participant is muted, as the string true or false. Not sent on participant-call-quality; on conference-start and conference-end it has no value.

Allowed values:
HoldenumOptional

Whether the participant is on hold, as the string true or false. Not sent on participant-call-quality; on conference-start and conference-end it has no value.

Allowed values:
EndConferenceOnExitenumOptional

Whether the conference ends when this participant leaves, as the string true or false. Set by the participant’s endConferenceOnExit attribute. Not sent on conference-start, conference-end, or participant-call-quality.

Allowed values:
StartConferenceOnEnterenumOptional

Whether the conference starts when this participant joins, as the string true or false. Set by the participant’s startConferenceOnEnter attribute. Not sent on conference-start, conference-end, or participant-call-quality.

Allowed values:
CoachingenumOptional

Whether the participant is coaching another call, as the string true or false. Sent on every participant event except participant-call-quality, whether or not the participant joined with the coach attribute.

Allowed values:
CallSidToCoachstringOptional

The unique identifier of the call this participant is coaching. Sent on every participant event except participant-call-quality; it has no value when the participant is not coaching.

ReasonConferenceEndedstringOptional

Why the conference ended. Sent on conference-end only.

  • last-participant-left: the last participant left.
  • last-participant-kicked: the last participant was removed from the conference.
  • participant-with-end-conference-on-exit-left: a participant with endConferenceOnExit set to true left.
  • participant-with-end-conference-on-exit-kicked: a participant with endConferenceOnExit set to true was removed from the conference.
  • conference-ended-via-api: the conference was ended by setting its Status to completed through the REST API.
  • down: SignalWire ended the conference after a service interruption.
  • stale: SignalWire closed a conference that was still open but no longer active.

The value can be empty when no reason was recorded.

CallSidEndingConferencestringOptional

The unique identifier of the call whose departure ended the conference. Sent on conference-end only. It has no value when the conference was not ended by a participant leaving or being removed.

AudioRttAvgdoubleOptional

The participant’s average audio round-trip time, in seconds. Sent on participant-call-quality only, as 0 when nothing was measured.

AudioRttMindoubleOptional

The participant’s minimum audio round-trip time, in seconds. Sent on participant-call-quality only, as 0 when nothing was measured.

AudioRttMaxdoubleOptional

The participant’s maximum audio round-trip time, in seconds. Sent on participant-call-quality only, as 0 when nothing was measured.

AudioOutJitterAvgintegerOptional

The average jitter of the audio stream SignalWire sends to the participant. Measured in RTP timestamp units, not milliseconds: divide by the codec’s samples per millisecond (8 for PCMU and PCMA, 48 for Opus) to convert. Sent on participant-call-quality only, and omitted when no RTCP reports were received from the participant.

AudioOutJitterMinintegerOptional

The minimum jitter of the audio stream SignalWire sends to the participant. Measured in RTP timestamp units, not milliseconds: divide by the codec’s samples per millisecond (8 for PCMU and PCMA, 48 for Opus) to convert. Sent on participant-call-quality only, as 0 when no RTCP reports were received from the participant.

AudioOutJitterMaxintegerOptional

The maximum jitter of the audio stream SignalWire sends to the participant. Measured in RTP timestamp units, not milliseconds: divide by the codec’s samples per millisecond (8 for PCMU and PCMA, 48 for Opus) to convert. Sent on participant-call-quality only, as 0 when no RTCP reports were received from the participant.

AudioOutLostintegerOptional

The number of audio RTP packets SignalWire sent to the participant that were reported lost. Sent on participant-call-quality only, as 0 when nothing was measured.

Response

200
Webhook received