> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # joinConference > Join an ad-hoc audio conference with extensive configuration options. [functionresult]: /docs/server-sdks/reference/typescript/agents/function-result Join an ad-hoc audio conference. Conferences support both Relay and CXML calls with extensive configuration for moderation, recording, and event callbacks. 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`** `string` — required Conference name. All participants joining the same name are in the same conference. --- **`opts`** `object` Optional conference configuration. --- **`opts.muted`** `boolean` — default: false Join the conference muted. --- **`opts.beep`** `"true" | "false" | "onEnter" | "onExit"` — default: 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 --- **`opts.startOnEnter`** `boolean` — default: true Whether the conference starts when this participant enters. When `false`, the participant waits until another participant with `startOnEnter: true` joins. --- **`opts.endOnExit`** `boolean` — default: false Whether the conference ends for all participants when this participant leaves. --- **`opts.waitUrl`** `string` SWML URL for hold music played while waiting for the conference to start. When omitted, default hold music is used. --- **`opts.maxParticipants`** `number` — default: 250 Maximum number of participants. --- **`opts.record`** `string` — default: do-not-record Recording mode. * `"do-not-record"` -- do not record the conference * `"record-from-start"` -- begin recording as soon as the conference starts --- **`opts.region`** `string` Conference region for geographic optimization. --- **`opts.trim`** `string` — default: 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 --- **`opts.coach`** `string` SWML Call ID or CXML CallSid of a participant who can coach (whisper to) this participant without other participants hearing. --- **`opts.statusCallbackEvent`** `string` 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 --- **`opts.statusCallback`** `string` URL to receive conference status event webhooks. --- **`opts.statusCallbackMethod`** `"GET" | "POST"` — default: POST HTTP method for status callbacks. * `"GET"` -- send status callbacks as GET requests * `"POST"` -- send status callbacks as POST requests --- **`opts.recordingStatusCallback`** `string` URL to receive recording status event webhooks. --- **`opts.recordingStatusCallbackMethod`** `"GET" | "POST"` — default: POST HTTP method for recording status callbacks. * `"GET"` -- send recording status callbacks as GET requests * `"POST"` -- send recording status callbacks as POST requests --- **`opts.recordingStatusCallbackEvent`** `string` — default: 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 --- **`opts.result`** `unknown` Result handling configuration. Pass an object `{}` for `return_value`-based switching, or an array `[]` for conditional switching. --- ## **Returns** [`FunctionResult`][functionresult] -- `this`, for chaining. ## **Examples** ### Simple Conference ```typescript {4} import { FunctionResult } from '@signalwire/sdk'; const result = new FunctionResult() .joinConference('team-meeting'); ``` ### Moderated Conference ```typescript {4} import { FunctionResult } from '@signalwire/sdk'; const result = new FunctionResult() .joinConference('team-meeting', { muted: true, record: 'record-from-start', }); ``` > Join an ad-hoc audio conference with extensive configuration options.