Skip to main content
Version: 0.9.17-patch2 — legacy released snapshot

Inspectors

The right panel of the Flow Designer changes based on what you select on the canvas (or which toolbar button you press). All edits stay in the current draft; they are not live until you publish.

Node Inspector​

Opens when you click any conversation node on the canvas. The inspector has a header (icon, node type, label, delete / duplicate actions), a body split into tabs that depend on the node type, and a transitions section at the bottom.

Inspector specialisations:

Node typeHeadline tabs
Voice agentInstructions, Tools, Provider override, Action capabilities, Variables used, Transitions.
STT transcribeSource, Chunking, Translations, Transitions.
Interpretation transformPrompt, Target language, Cache, Transitions.
LLM queryPrompt, Result variable, Transitions.
TTS playbackText, Voice override, Transitions.
DTMF collectSettings (max digits, terminator, timeout), Result variable, Transitions.
Action requestAction, Wait for result, Result variable, Transitions.
WebhookRequest (method, URL, headers, body), Response (parsing into variables), Transitions.
ConditionDecision rows (variable, operator, value → target), Default transition.
TransferTarget, Method, Transitions.
EndReason.

Transitions are the bottom section on every conversation node and reuse the same UI: a list of outbound edges with label, condition, and target dropdown.

Endpoint Inspector​

Opens when you click an Entry Point chip. One inspector per endpoint type:

  • Phone — base number, extension code, egress base number.
  • Web Voice — slug, allowed origins, allowed IPs, egress base number. Featurewebrtc
  • Web Chat — slug, allowed origins, allowed IPs.

Audio codecs are not selected here — the Asterisk ↔ TelPhi link picks them automatically from the voice agent's provider configuration (STT-first for modular pipelines; output-native for unified realtime). Advanced users can pin audio.linkFormat from the source view.

Removing an endpoint here also removes its entry-point chip from the canvas; the flow itself is unaffected.

Flow Settings​

Opens when you click the Start node or any Default Provider chip. It's a drawer with the cross-cutting configuration that doesn't belong to a single node.

SectionWhat it does
EndpointsThe same list of endpoints that renders as Entry Point chips. Add, remove, reorder; clicking an entry opens the Endpoint Inspector.
App settingsApp-level toggles such as recording (controls audio capture and transcript retention — see Conversations), language detection mode, default voice.
LanguageDefault flow language used by STT / TTS providers that ship language defaults.
Default providerThe STT / LLM / TTS (or Realtime) configuration used by every voice agent that doesn't override. See Provider config below.
Error handlingFlow-level bot-delay comfort messages, provider exhaustion behavior, and call-level failover actions.
Call durationPer-flow max call duration (sessionConfig.maxCallDurationSeconds, default 5400s / 90 min) and an optional warning message spoken shortly before the forced hangup. The per-flow value overrides the deployment default MAX_CALL_DURATION_SECONDS; when a flow leaves the duration unset, the deployment default applies. The forced hangup is classified as max_call_duration. See env vars.

The Flow Settings drawer is the only place where endpoints can be created or edited.

Call duration​

The Call duration section caps how long a single call on this flow may run and optionally warns the caller just before the cap is enforced. It applies to every entry point on the flow (telephony and WebRTC).

How to set it:

  1. Open the flow in the Flow Builder and click the Start node (or any Default Provider chip) to open the Flow Settings drawer.
  2. Scroll to the Call duration section.
  3. Max call duration (seconds) — enter the per-flow cap in seconds. Leave it empty to use the deployment default (see below). The value is validated by the flow schema on save; out-of-range values are rejected by the backend.
  4. Warning message — optional text spoken to the caller shortly before the forced hangup. Leave it empty for a silent hangup, or fall back to the deployment default warning.
  5. Save and publish the flow.

How it works:

  • The per-flow max call duration is the authoritative value when set. When a flow leaves it unset, the deployment env var MAX_CALL_DURATION_SECONDS (default 7200s / 2h) is used as the fallback.
  • The warning message works the same way: the per-flow value takes precedence; otherwise the deployment env var MAX_CALL_DURATION_WARNING_MESSAGE is used. An empty warning (both per-flow and env) means the call ends silently.
  • Roughly 10 seconds before the cap is reached, TelPhi speaks the warning message (if any) and mutes caller input for the reminder. At the cap, the channel is force-hung-up and the termination is classified as max_call_duration.
  • Timers are armed when the channel enters Stasis and cleared on channel teardown. They live in TelPhi process memory, so a TelPhi restart mid-call drops them (the stale call is reaped against Asterisk). See Call lifecycle (Stasis) for the full sequence.

Provider config editor​

Embedded inside Flow Settings (default provider) and inside voice-agent inspectors (per-node override). The saved-provider picker has been removed; the editor writes the selected provider configuration inline into the flow. The editor adapts to the chosen mode:

  • Realtime — single provider running STT, LLM, and TTS in one connection (OpenAI Realtime, Azure Realtime, …). Pick the model, voice, transcription model, VAD, tools, audio noise reduction.
  • Pipeline — separate STT + LLM + TTS providers wired into a pipeline. Independent vendor + model choices per stage.

Common subsections:

  • STT — provider, language, recognition mode; Advanced STT includes Endpoint URL (custom hostname or IP). See Custom STT/TTS endpoints.
  • LLM — provider, model, tool-choice policy, temperature; advanced Base URL on OpenAI Chat.
  • TTS — provider, voice, model; Advanced includes Endpoint URL on Azure and Inworld.
  • Realtime — unified provider; Advanced Settings includes custom URL on OpenAI/Grok, Realtime URL on Gemini, required URL on Pythia, URL mode on Azure Realtime.
  • Timeouts & retries — request timeout, retry count, initial delay, backoff, and Retry HTTP status codes for the selected provider role.

Enter status codes as a comma-separated list, such as 408, 429, 500, 502, 503, 504. The list applies to both HTTP requests and WebSocket connection upgrades. When a failure includes a status, only an exact allow-list match can retry; timeout and network failures without a status use their retry categories. Same-provider retries run before a configured provider fallback or call-level failure action.

Any concrete value in this section makes the provider's complete retry block a flow-level override. It does not merge with the inherited platform or team role block, so enter every value you want that provider to retain. Clear every field to restore inheritance. See Provider retry policies for built-in defaults, override rules, and examples.

Some providers and audio features are gated:

Variable Catalogue panel​

Opens from the toolbar. Lists every flow variable derived from the current definition, plus team variables and secrets.

  • Catalogue — auto-discovered variables from node outputs (e.g. DTMF result variables, webhook response parses).
  • Custom variables — define your own with a key, type, label, description and optional default.
  • References — quick links into the nodes that read / write each variable, useful for renames.
  • Team variables and secrets — pull-in from Team admin → Variables so the flow editor can drop them into prompts and headers.

Version History drawer​

Opens from the toolbar. Lists every saved version of the flow definition with status (DRAFT, PUBLISHED, ARCHIVED), version number, creator and timestamp.

  • Load a previous version into the editor as a new draft.
  • Revert the current draft to a previous version (re-runs validation).
  • Restore an older published version as the next draft so you can test and publish it as a controlled rollback.
  • Delete draft when the current draft should be discarded.
  • Compare by loading + flipping the source view.

The current PUBLISHED version is the one served to the live endpoint.

Tool editor​

Opened from the Voice agent's Tools tab. It edits a single tool — name, description, parameters schema (JSON-schema-style fields), and the JavaScript handler. Tools can also be attached from the team / platform catalogue instead of edited locally.

See Tools (team admin) and Managed tools (platform admin) for the upstream definitions.

See also​