Skip to main content
Version: Next — legacy draft snapshot

Inspectors

Retained Next source

This page preserves the merged Next documentation snapshot at e1ddcf6940adb7b619ce509063749e740eecc795. It can describe implementation beyond the source revision selected for the rebuilt Next guides. Retain the implementation-scope notes below and confirm your deployed version before applying these details. This is not a current-release availability or deployment claim. For the task-based entry point, see the rebuilt guide.

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, plus the bot no-input give-up (sessionConfig.botNoInputGiveUpTimeoutMS + botNoInputGiveUpWarningMessage) and an optional transfer target (sessionConfig.botNoInputGiveUpTransfer) to transfer instead of hangup. Per-flow values override the deployment defaults (MAX_CALL_DURATION_SECONDS, BOT_NO_INPUT_GIVE_UP_TIMEOUT_MS); when a flow leaves a value unset, the deployment default applies. The forced hangups are classified as max_call_duration and bot_no_input_give_up. The give-up watchdog is unreleased (platform PR #473 (internal implementation reference) was still open and draft when reviewed on 2026-09-25): its timeout is read at flow load and cannot be changed mid-call, and its warning is synthesized text only — there is no give-up audio URL. 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, optionally warns the caller just before the cap is enforced, and force-ends the call when the bot stops responding. It applies to every entry point on the flow (telephony and WebRTC).

:::caution Next — unreleased The bot no-input give-up behaviour described below is proposed in platform PR #473, which was still open and draft when reviewed on 2026-09-25, with no live-call acceptance recorded in this reference. Two SCRUM-689 requirements are not implemented: the give-up timeout cannot be changed mid-call, and no give-up audio-file URL exists (the warning is synthesized text). Track them against SCRUM-689 before you rely on this in production. :::

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. If clearing it removes the whole sessionConfig object, the deployment default applies. If another session field remains, schema parsing fills a missing duration with 5400 seconds. The number input advertises a minimum of 60 seconds and rounds to whole seconds. Separately, the flow schema accepts integers from 10–7200 seconds; do not treat its wider range as the visible input minimum.
  4. Warning message — optional text spoken to the caller shortly before the forced hangup. Leave it empty to use the deployment default warning; the call ends silently only when both the flow and deployment warnings are empty.
  5. Bot no-input give-up (ms) — enter the per-flow give-up timeout in milliseconds (1000–120000). If the bot has not responded within this window, the call is either transferred (when a transfer target is set) or force-ended, even when failover is disabled. Leave it empty to use the deployment default (15000 ms). The builder refuses to commit a value outside 1000–120000 and shows an inline range error; if an out-of-range value arrives by another route (API, imported flow), the flow schema clamps it into range on parse instead of rejecting the flow. (Contrast step 3: maxCallDurationSeconds is genuinely rejected, because its schema uses min/max rather than a clamp.)
  6. Give-up warning message — optional text spoken to the caller just before the give-up terminal action, through the normal TTS path (max 100 characters). Leave it empty to use the deployment default warning; the terminal action is silent only when both warnings are empty. Audio-file prompts are not supported on this path — SCRUM-689 asks for a playable audio URL (AudioCodes botNoInputUrl parity) and no give-up URL field exists in the flow schema, the runtime command schema, or the Flow Builder; only the intermediate comfort prompt can play a file (gatewayProfile.failover.botNoInputUrl).
  7. Transfer instead of hangup — check this to transfer the call on give-up instead of hanging up. When checked, a Transfer target field appears: enter a phone number or a sip:/sips: URI, and optionally select an egress route (routing pool) for number targets (the pool is ignored for SIP URIs). Leave the checkbox off to keep the default hangup behavior. The give-up transfer uses fixed sip_refer defaults.
  8. Save and publish the flow.

How it works:

  • The per-flow max call duration is the authoritative value when set. An existing sessionConfig object receives the schema default of 5400 seconds if its duration is missing. With no session object, 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.
  • The bot no-input give-up is a standalone watchdog (SCRUM-689) that mirrors the max-duration pattern but for bot responsiveness. It is independent of the failover watchdog (VGWK-25): it fires even when gatewayProfile.failover.enabled is false. The per-flow botNoInputGiveUpTimeoutMS overrides the deployment env var BOT_NO_INPUT_GIVE_UP_TIMEOUT_MS (default 15000ms). The give-up warning falls back to BOT_NO_INPUT_GIVE_UP_WARNING_MESSAGE; both empty means a silent termination. The timeout is read once when the flow is loaded and is not reconfigured during a call. There is also no way to switch the watchdog off — the deployment default applies to every flow that leaves the field empty.
  • The give-up timer is re-armed on each bot request and cleared on each bot response. On fire, TelPhi awaits the give-up warning playback (if configured) before acting, then either transfers the call (when botNoInputGiveUpTransfer is set) or force-hangs-up the channel, classifying the termination as bot_no_input_give_up (BotSide). The playback wait is bounded (roughly the estimated audio duration plus 10 s, capped at 60 s); if the announcement fails or the wait times out, TelPhi logs it and proceeds to the terminal action, so the warning is best-effort rather than a guaranteed full playback. The transfer uses sip_refer; if it fails, TelPhi falls back to the hangup.
  • 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​