Telephony (Voice Runtime)#
The data plane: telephony events arrive here and become conversations. Strictly separated from the Console API.
Tenios Call Control#
POST
/tenios/cc/{secret}The carrier (TENIOS) posts every conversation step as a webhook; the Voice Runtime answers with control blocks:
| Block | Effect |
|---|---|
SAY | Speak a text (carrier TTS) |
COLLECT_SPEECH | Capture the customer's utterance via speech recognition |
COLLECT_DIGITS | Capture keypad input (automatic fallback without an ASR provider) |
BRIDGE | Transfer to a human or extension |
HANGUP | End the call |
Security#
- Secret in the path — the webhook URL is only valid with the configured secret.
- Access key comparison — optionally enforced in addition (
TENIOS_VERIFY_ACCESS_KEY=1). - No edge gate — the carrier posts anonymously; protection is applied at the application level.
Call lifecycle#
- A call arrives on a bound number; the number determines tenant and assistant.
- Turn 0 speaks the Art. 50 disclosure plus greeting.
- Every further turn: customer input, LLM answer, next control block.
- The call ends through farewell, transfer, the turn cap, or an outage message — every exit is defined.
Next stage#
Today the carrier provides TTS and speech recognition (call control path). The next stage terminates SIP/RTP on the platform's own edge — then the platform engines (Cartesia Sonic, Ink) take over the phone audio path as well, and the carrier becomes a pure pipe.