diff --git a/fern/assets/images/img/outbound-call-lifecycle-themed.svg b/fern/assets/images/img/outbound-call-lifecycle-themed.svg new file mode 100644 index 0000000000..1605a53487 --- /dev/null +++ b/fern/assets/images/img/outbound-call-lifecycle-themed.svg @@ -0,0 +1,90 @@ + + Outbound call with the Calling API or Server SDK REST client + Your code sends dial with from, to, and SWML. SignalWire returns the call id with status queued and rings the destination and reports status ringing. The destination answers, SignalWire reports status answered, and your SWML runs. When the call finishes, SignalWire reports status ended. + + + + + + + + + + + + + Your code + + + + + SignalWire + + + + + Destination + + + dial + from, to, SWML + + queued + status, call id + + + + rings + + ringing + status + + + answers + + + + answered + status + + + + Your SWML runs + Call finishes + + ended + status + + + diff --git a/fern/assets/images/img/outbound-call-relay-lifecycle-themed.svg b/fern/assets/images/img/outbound-call-relay-lifecycle-themed.svg new file mode 100644 index 0000000000..ca3eaf262f --- /dev/null +++ b/fern/assets/images/img/outbound-call-relay-lifecycle-themed.svg @@ -0,0 +1,83 @@ + + Relay: commands and events over one WebSocket + Your code and SignalWire share one persistent WebSocket. Your code sends calling.dial; SignalWire reports created, ringing, and answered through calling.call.state. Your code sends calling.play; SignalWire reports playing and finished through calling.call.play. Your code sends calling.end; SignalWire reports ending and ended through calling.call.state. + + + + + + + + + + + + + Your code + + + + + SignalWire + + one persistent WebSocket, both directions + dial + calling.dial + + created → ringing → answered + calling.call.state + + play + calling.play + + playing → finished + calling.call.play + + hangup + calling.end + + ending → ended + calling.call.state + + + Command you send + + Event from SignalWire + + diff --git a/fern/docs.yml b/fern/docs.yml index 4d3ecfa4d6..8b2295dbda 100644 --- a/fern/docs.yml +++ b/fern/docs.yml @@ -196,6 +196,12 @@ css: - components/sigmond-card/styles.css redirects: + # Browser SDK outbound guide consolidated into the platform outbound calling + # guide, which now carries the browser walkthrough and media options. + - source: /docs/browser-sdk/guides/outbound-calls + destination: /docs/platform/voice/outbound-calling + - source: /docs/browser-sdk/v4/guides/outbound-calls + destination: /docs/platform/voice/outbound-calling # Legacy Agents SDK pages (#526). Use known paths and equivalent existing # content only. Exact entries prevent unknown or removed pages (examples, # best-practices, patterns, migration, changelog) from redirecting to an @@ -534,6 +540,12 @@ redirects: - source: /docs/platform/ai/prompt-engineering/where-to-apply destination: /docs/platform/ai/prompt-engineering + # The VAPI inbound and outbound guides were merged into one integration guide. + - source: /docs/platform/ai/vapi/inbound + destination: /docs/platform/ai/vapi + - source: /docs/platform/ai/vapi/outbound + destination: /docs/platform/ai/vapi + # SWML methods reorganized into calling/ and messaging/ subsections. # The old methods overview lived at /docs/swml/reference, which was # entirely calling-flavored — point it at the new calling overview. diff --git a/fern/llms.txt b/fern/llms.txt index d05ee2bcc8..05fe9d20e5 100644 --- a/fern/llms.txt +++ b/fern/llms.txt @@ -76,14 +76,14 @@ Send text and media messages from your application, and choose how to process in Give users an identity, authorize their access, and connect them to other users or shared resources. Your backend manages subscribers and credentials; the client provides the calling and chat interface. -- Browser SDK: For web clients, [place audio or video calls](/docs/browser-sdk/v4/guides/outbound-calls) and [send and display chat messages](/docs/browser-sdk/v4/guides/messaging-chat). +- Browser SDK: For web clients, [place audio or video calls](/docs/platform/voice/outbound-calling) and [send and display chat messages](/docs/browser-sdk/v4/guides/messaging-chat). - REST APIs: [Create subscribers](/docs/apis/rest/subscribers/create-subscriber) and [issue subscriber access tokens](/docs/apis/rest/subscribers/tokens/create-subscriber-token) from your backend. Follow the [Browser SDK authentication guide](/docs/browser-sdk/v4/guides/authentication) to connect a web client. ### Video conferences Build a browser conference interface or use a conference with a prebuilt interface. The [platform video overview](/docs/platform/video) explains rooms, participant permissions, and recordings. -- Browser SDK: [Join a room with audio and video](/docs/browser-sdk/v4/guides/outbound-calls), then add [call controls](/docs/browser-sdk/v4/guides/call-controls), [screen sharing](/docs/browser-sdk/v4/guides/screen-sharing), and [participant layouts](/docs/browser-sdk/v4/guides/layouts). +- Browser SDK: [Join a room with audio and video](/docs/browser-sdk/v4/guides/build-voice-video), then add [call controls](/docs/browser-sdk/v4/guides/call-controls), [screen sharing](/docs/browser-sdk/v4/guides/screen-sharing), and [participant layouts](/docs/browser-sdk/v4/guides/layouts). - REST APIs: [Create a video room](/docs/apis/rest/video/rooms/create-room) and [issue room access tokens](/docs/apis/rest/video/room-tokens/create-room-token), or [create a video conference with a prebuilt interface](/docs/apis/rest/video/video-conferences/create-video-conference). ### Migrate a Twilio application diff --git a/fern/products/browser-sdk/pages/v4/guides/build-voice-video/call-controls.mdx b/fern/products/browser-sdk/pages/v4/guides/build-voice-video/call-controls.mdx index 1523b83990..85c3f017eb 100644 --- a/fern/products/browser-sdk/pages/v4/guides/build-voice-video/call-controls.mdx +++ b/fern/products/browser-sdk/pages/v4/guides/build-voice-video/call-controls.mdx @@ -24,7 +24,7 @@ instance — get one of these going first. Install the SDK and create a `SignalWire` client with a credential provider. - + Dial a destination with `client.dial()` to get a `Call` instance. diff --git a/fern/products/browser-sdk/pages/v4/guides/build-voice-video/device-management.mdx b/fern/products/browser-sdk/pages/v4/guides/build-voice-video/device-management.mdx index 92f1d2af38..e0e44a331e 100644 --- a/fern/products/browser-sdk/pages/v4/guides/build-voice-video/device-management.mdx +++ b/fern/products/browser-sdk/pages/v4/guides/build-voice-video/device-management.mdx @@ -448,7 +448,7 @@ Pick a different mic, camera, or speaker before dialing. The log records each pi ### Switch a device mid-call -Enter a destination in the **Destination** field (a `/public/`, `/private/`, PSTN number, or SIP URI the token can reach — see [Outbound Calls](/docs/browser-sdk/v4/guides/outbound-calls#pick-a-destination) for the destination shapes) and click **Dial**. The local and remote tiles populate once the call connects. +Enter a destination in the **Destination** field (a `/public/`, `/private/`, PSTN number, or SIP URI the token can reach — see [Outbound calling](/docs/platform/voice/outbound-calling#choose-a-destination) for the destination shapes) and click **Dial**. The local and remote tiles populate once the call connects. With the call connected, change the **Microphone** or **Camera** dropdown again. The log now records the change as `live: …` — the picker is routing through `activeCall.self.selectAudioInputDevice()` instead of the client-level preference, and the remote side hears or sees the new device immediately without renegotiation. Picking a new **Speaker** triggers `applySelectedAudioOutputDevice()` on the remote `