docs(voice): add inbound calling guide - #697
Devon-White wants to merge 10 commits into
Conversation
Companion to the outbound calling guide. Covers how a call reaches a Resource through its addresses (phone number, SIP address, alias), then answers a first call with SDK-served SWML, Relay, or the Browser SDK, assigns the number in the Dashboard or with REST, follows the call, and adds AI agent, phone menu, whisper, voicemail, recording, streaming, and browser-answering examples. Adds two themed lifecycle diagrams, a card on the Voice overview, and a root llms.txt link.
Turn the Addresses page from a one-snippet stub into the reference for how a Resource is reached: phone numbers, SIP addresses, and aliases; contexts and channels; how SignalWire resolves an address; one Resource with many addresses; and how to manage addresses in the Dashboard, the REST API, and the Browser SDK. Add a shared snippet for assigning a Resource to a phone number, use it from Resources, Addresses, and the inbound calling guide, and trim the guide's addressing section to a summary that links here.
Frame the guide around where the logic runs and how SignalWire reaches it: SWML over HTTP (Server SDK), serverless SWML (hosted in the Space), WebSocket from your server (Relay), and WebSocket from the browser. Give serverless SWML its own tab in the handler and assignment steps instead of an aside and accordion, compare all four in one table, and state that only Subscriber tokens receive calls in the browser while guest and embed tokens are outbound-only.
Add a step that chooses how callers reach the handler: phone number, SIP address, or alias, independent of the handler choice. Split the old number-assignment step into creating the Resource (per handler) and giving it an address (per address type), with Dashboard and REST paths for each, and make the test-call step follow the chosen address.
…er SDK Name the four approaches by SDK and transport: Server SDK over HTTP (SWML), Server SDK over WebSocket (Relay), Browser SDK over WebSocket, and serverless SWML. Say outright that SWML is what the Server SDK serves and that the Browser SDK is Relay in the browser, so the comparison no longer sets SWML against a WebSocket it also uses.
|
Errors
Minor issues
Verified correct Two independent handlers per number. Message handlers restricted to messaging-capable types. SIP host format |
- Default alias context for AI Agents, scripts, and applications is private, not public; note which types get a public alias instead - Aliases can't be re-pointed in the Dashboard or REST: delete and re-create - Resource picker offers Video Room, not Conference Room, with its sub-choices - Link the admin List Resource Addresses endpoint, not the client one - Lowercase external context; 'such as' on the call handler list; SIP Credentials card; client.directory$ observable
Review: Resources and Addresses pagesGaps in the model
Structure
Already strongTwo-handler phone number explanation, SIP address vs Credential vs gateway, resolution flowchart, swap-a-handler example, REST task table. |
- Define handler at first use; state address/Resource relationship rules - Per-type table for the first alias's context; External URL scripts are public - Alias property list matching the REST object; display_type is derived - WhatsApp number as its own address type; deletion behavior - Contexts: public/private built in; only Subscriber dials may omit the context - Resources page hands off to Addresses instead of duplicating it; drop the self-referencing admonition; snippet says SIP Credentials
Summary
/docs/platform/voice/inbound-calling, a companion to the outbound calling guide with the same shape: prepare, answer a first call, follow the call, examples, next steps.<llms-only>Mermaid equivalents.llms.txt.Review notes
PUT /api/relay/rest/phone_numbers/{id}withrelay_scriptandrelay_topic. The TypeSpec core model marks the Relay topic status callback URL as required, but the request model and both SDK wrappers make it optional; the guide follows the SDKs.sip:<user>@<space>-<context>.dapp.signalwire.comis taken from the Dashboard form's fixed prefix and suffix; confirm it's stable.host, per the RelayClient reference; the outbound guide passes the Space host.Verification
yarn fern-md-check: all 2749 MDX files valid.