Skip to content

Add stream parameter to join_conference (SWML, REST, SDKs)#364

Open
Devon-White wants to merge 1 commit into
mainfrom
Devon/join-conference-stream
Open

Add stream parameter to join_conference (SWML, REST, SDKs)#364
Devon-White wants to merge 1 commit into
mainfrom
Devon/join-conference-stream

Conversation

@Devon-White
Copy link
Copy Markdown
Collaborator

@Devon-White Devon-White commented Jun 3, 2026

Summary

Documents the new optional stream object on join_conference, which attaches a bidirectional WebSocket stream directly to a conference — enabling real-time conference audio processing, transcription bots, and AI agents that listen to conference audio. The stream reuses the same call_device_stream schema as the stream device type in connect.

Changes

SWML join_conference (specs/swml/.../join_conference/main.tsp + MDX)

  • Add the nested stream object (url required wss, name, codec, status_url, status_url_method, realtime, authorization_bearer_token, custom_parameters) with a YAML/JSON example.

Calling REST API (specs/signalwire-rest/calling-api/...)

  • Add a new calling.join_conference command (CallJoinConferenceRequest + ConferenceStreamParams), union entry, example, and command-table row. Renders in the auto-generated /calls API reference.

Server SDK reference (Python + TypeScript relay/call/join-conference.mdx)

  • Expand the one-line stream/stream_obj stub into full sub-parameters and update the examples. (Verified the real param names against SDK source: Python stream_obj, TS stream — inner keys are snake_case, passed through verbatim.)

Correctness fixes to pre-existing fields (same method)

Surfaced during a source audit:

  • status_callback_event / recording_status_callback_event are space-separated strings (each token validated), not single enums.
  • SWML region is the enum global|us|eu|ch — it was modeled as a free string with an invalid "us-east" example.
  • Added the missing status_callback_event_type / recording_status_callback_event_type fields to the SWML spec/MDX (already present in REST + SDK).

Notes

  • The SWAIG FunctionResult.join_conference builder does not expose a stream param in SDK source, so its docs are intentionally left unchanged.
  • Generated outputs (openapi.yaml, SWMLObject.json) regenerated via tsp compile; both specs build clean.

Document the new optional `stream` object on `join_conference`, which attaches
a bidirectional WebSocket stream to a conference (real-time audio processing,
transcription, AI agents). Verified against backend source (FreeSWITCH
mod_infrastructure call_device_stream schema; Rails /calls dispatch).

- SWML: add `stream` object to join_conference (TypeSpec + MDX) with a
  YAML/JSON example.
- Calling REST API: add new `calling.join_conference` command with the nested
  stream object (modeled on call_join_conference + the calling.stream schema).
- Server SDK reference (Python + TypeScript): expand the one-line stream stub
  into full sub-parameters and update examples.

Also correct pre-existing source mismatches in the same method:
- status_callback_event / recording_status_callback_event are space-separated
  strings, not single enums.
- SWML `region` is the enum global|us|eu|ch (was a free string with an invalid
  "us-east" example).
- Add the missing status_callback_event_type / recording_status_callback_event_type
  fields to the SWML spec/MDX.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant