join_conference

View as MarkdownOpen in Claude

Join an ad-hoc audio conference. Conferences support both RELAY and CXML calls with extensive configuration for moderation, recording, and event callbacks.

Raises ValueError if beep is not one of "true", "false", "onEnter", "onExit", if max_participants is not between 1 and 250, if record is invalid, if trim is invalid, or if name is empty.

When all parameters are at their defaults (except name), a simplified form is used internally. Passing any non-default parameter triggers the full object form.

Parameters

name
strRequired

Conference name. All participants joining the same name are in the same conference.

muted
boolDefaults to False

Join the conference muted.

beep
strDefaults to true

Beep configuration for join/leave notifications.

  • "true" — beep on both enter and exit
  • "false" — no beep
  • "onEnter" — beep only when a participant joins
  • "onExit" — beep only when a participant leaves
start_on_enter
boolDefaults to True

Whether the conference starts when this participant enters. When False, the participant waits until another participant with start_on_enter=True joins.

end_on_exit
boolDefaults to False

Whether the conference ends for all participants when this participant leaves.

wait_url
Optional[str]Defaults to None

SWML URL for hold music played while waiting for the conference to start. When None, default hold music is used.

max_participants
intDefaults to 250

Maximum number of participants. Must be a positive integer, maximum 250.

record
strDefaults to do-not-record

Recording mode.

  • "do-not-record" — do not record the conference
  • "record-from-start" — begin recording as soon as the conference starts
region
Optional[str]Defaults to None

Conference region for geographic optimization.

trim
strDefaults to trim-silence

Silence trimming in recordings.

  • "trim-silence" — remove leading and trailing silence from the recording
  • "do-not-trim" — keep silence in the recording as-is
coach
Optional[str]Defaults to None

SWML Call ID or CXML CallSid of a participant who can coach (whisper to) this participant without other participants hearing.

status_callback_event
Optional[str]Defaults to None

Space-separated list of events to report.

  • "start" — conference has started
  • "end" — conference has ended
  • "join" — a participant joined
  • "leave" — a participant left
  • "mute" — a participant was muted or unmuted
  • "hold" — a participant was placed on hold or resumed
  • "modify" — conference settings were modified
  • "speaker" — active speaker changed
  • "announcement" — an announcement was played
status_callback
Optional[str]Defaults to None

URL to receive conference status event webhooks.

status_callback_method
strDefaults to POST

HTTP method for status callbacks.

  • "GET" — send status callbacks as GET requests
  • "POST" — send status callbacks as POST requests
recording_status_callback
Optional[str]Defaults to None

URL to receive recording status event webhooks.

recording_status_callback_method
strDefaults to POST

HTTP method for recording status callbacks.

  • "GET" — send recording status callbacks as GET requests
  • "POST" — send recording status callbacks as POST requests
recording_status_callback_event
strDefaults to completed

Space-separated list of recording events to report.

  • "in-progress" — recording is currently in progress
  • "completed" — recording has completed
  • "absent" — no recording was produced
result
Optional[Any]Defaults to None

Result handling configuration. Pass an object {} for return_value-based switching, or an array [] for conditional switching.

Returns

FunctionResult — self, for chaining.

Examples

Simple Conference

1from signalwire import AgentBase
2from signalwire import FunctionResult
3
4agent = AgentBase(name="my-agent", route="/agent")
5agent.set_prompt_text("You are a helpful assistant.")
6
7@agent.tool(name="join_team_call", description="Join the team standup call")
8def join_team_call(args, raw_data):
9 return (
10 FunctionResult("Joining the team call.")
11 .join_conference(name="team-standup")
12 )
13
14agent.serve()

Moderated Conference

1from signalwire import AgentBase
2from signalwire import FunctionResult
3
4agent = AgentBase(name="my-agent", route="/agent")
5agent.set_prompt_text("You are a helpful assistant.")
6
7@agent.tool(name="join_moderated_conference", description="Join a moderated conference")
8def join_moderated_conference(args, raw_data):
9 return (
10 FunctionResult("Joining the conference.")
11 .join_conference(
12 name="quarterly-review",
13 muted=True,
14 start_on_enter=False,
15 record="record-from-start",
16 max_participants=50
17 )
18 )
19
20agent.serve()