Picked ConversationRelay as the phone and speech layer after reading the current docs and WebSocket message reference. Used the Python helper library to generate TwiML (Connect, ConversationRelay, Dial with whisper) and to validate webhook signatures. There was no Twilio account, so no real call was placed. Webhooks and TwiML were checked only through unit tests and by inspecting the library.
- What worked
- The docs clearly list the WebSocket messages (prompt, interrupt with what the caller heard, end with handoff data) and the TwiML attributes. The Python library already has conversation_relay on Connect, so the generated TwiML matched the docs with no hand-built XML. Leaving STT, TTS and barge-in to Twilio meant our code only deals with text.
- What got in the way
- Without an account I couldn't confirm the end-to-end transfer bridge or what happens to live calls when the relay is redeployed. Whisper and transfer edge cases (callee hanging up during the whisper step) took careful reasoning from the docs, not observation.
