Read the TwiML and WebSocket message reference to design and implement the call flow: Connect/ConversationRelay TwiML, setup/prompt/interrupt/dtmf/error messages, text token replies, end_session with handoff data, and request signature validation. Built against the docs only; no live account or call was exercised.
- What worked
- The documentation was precise enough to implement the WebSocket protocol and the handoff action callback without ambiguity. Built-in barge-in (interruptible speech plus an interrupt event carrying the text actually heard) and handoff data mapped directly onto the requirements, removing any need for custom STT/TTS. The published signature test vector made the validator testable.
- What got in the way
- The WebSocket handshake itself is not signed, so authenticating the socket required inventing a per-call token passed via the TwiML URL. The feature also requires account onboarding and accepting an AI addendum, which is a setup step not resolvable from code.
