INTERNAL TOOL · NO TOKEN PERSISTENCE · NOT A DIALER

Ringnoted operator lab

Not checked

SESSION

Worker and authentication

Signed out
or

ACCOUNT

Away / vacation

Sign in

Account-wide switch from GET|PUT /account. When away is on, call-flow answers, plays the away greeting, and takes a message. That plan overrides VIP, private line, hours, menu, ring, whisper, skip-if-busy, and missed-call SMS. Any Simulate while away walks the same local plan.

ACCOUNT

PIN / private line

Sign in

GET|PUT /account/private-line returns { enabled, pin_set } and never the PIN. Enable requires a 4–8 digit PIN on PUT. Disable may omit pin or rotate it. Simulate private line assumes the PIN was already validated and walks answer → ring (private_line) → take_message_if_no_answer → hangup using the owned B ring_strategy / ring_targets (default single / one target). Whisper, skip-if-busy, and missed-call SMS compose from the owned B config the same way they do for VIP. Away still wins. Hours do not apply to VIP or private line.

ACCOUNT

Hours / holidays

GET|POST /hours and GET|PUT|DELETE /hours/:hours_id. Windows are account-scoped (number_id is null; E.164 is not required). Weekly rows use weekday 1..7 (Mon=1) plus starts_local / ends_local. Holiday rows use holiday_date YYYY-MM-DD; is_open false is closed, true is alternate hours. Call-flow precedence is away > VIP / private line > hours > callback_request > open presets. Simulate A/B (and C) walk the after-hours plan when closed — unless Away, VIP, or private line already won.

No hours windows. Add a weekly open window or a holiday override.

PREFLIGHT

Operator checks

Unchecked
APINot checked
SessionToken optional on health
PresetsNot checked
InboxNot checked
NotifyNot checked
NumbersNot checked
HoursNot checked
VIPNot checked
AccountNot checked
Private lineNot checked

Owned numbers appear here after a signed-in Health check.

IVR PRESETS

Shallow phone flows

Live CRUD · local IVR simulate

Sign in or paste a diagnostic token, then run Health to load presets.

After sign-in, Simulate A/B/C stays available. Owned presets are used once GET /presets succeeds; local create defaults are used only when that list loaded and none of that type exist. A failed presets request does not substitute defaults. Create A defaults to a nested Business info submenu (Hours / Address / bilingual parking Info) plus digit 2 Request a callback (action callback_request). Simulate A walks nested menus with DTMF; digit 0 returns to the parent or replays the root; language en|fr selects the spoken prompt. play_* leaves still speak then hang up with no ring. Digit 2 walks callback_request and posts POST /callback-requests when an owned number exists (same pattern as take-message → POST /messages). Simulate B reads ring_strategy (default single) and ring_targets from the owned B config. Cascade walks sequential ring attempts; ring_all is one parallel step; round_robin uses the index input (default 0). Whisper, skip-if-busy, and missed-call SMS still compose. Owner busy plus skip_if_busy jumps to take-message. Take-message posts POST /messages when an owned number exists; otherwise the form stays local and says an owned number is required. Missed-call SMS previews after take-message / busy / no-answer when that flag is on. Simulate private line assumes the PIN was already validated and walks answer → ring_owner (private_line) → take_message_if_no_answer → hangup, using the same owned-B ring strategy. Hours / holiday windows (or the Outside hours toggle, a holiday closed day, or a fake now) walk the after-hours plan — play_after_hours_message plus notify preview — when closed. Precedence is away > VIP / private line > hours > callback_request > open presets. If Away / vacation is on, every Simulate — including private line — walks the away greeting plus take-message plan instead.

PRESET A

DTMF menu

Play a spoken menu, collect digits, and route. A submenu may nest (max depth 3). Digit 0 returns to the parent or replays the root. Language en|fr selects bilingual prompts. Hours, address, and info leaves speak then hang up with no ring. Digit 2 Request a callback walks callback_request and may POST /callback-requests. Simulate walks the local call-flow plan. No carrier.

PRESET B

Ring then message

Ring the owner first; if unanswered, take a structured message (nom / callback / motif). Optional ring_strategy is single (default), cascade, ring_all, or round_robin. Extra E.164 targets are optional; the primary ring_target_e164 stays first. Whisper, skip-if-busy, and missed-call SMS still compose. Telephony still owns any real dialer.

PRESET C

After-hours

Skip the ring, play the after-hours prompt, and preview notify fan-out. Local IVR simulate · no carrier.

VIP NUMBERS

Whitelist bypass

Simulate VIP bypass uses the owned GET /vip-numbers list. Enter a caller E.164 that matches a loaded VIP row to walk ring then message and skip menu/hours. Whisper screens first when an enabled B preset has whisper_enabled, or when Screen VIP too is checked. Skip-if-busy, missed-call SMS, and ring_strategy / ring_targets are read from the owned B config (default single / one target). Owner busy plus skip-if-busy jumps to take-message. Missed-call SMS previews to the VIP caller after take-message / busy / no-answer when that flag is on. If Away / vacation is on, Simulate VIP walks the away plan and does not ring the owner. Private-line simulate is a separate button next to Away.

No VIP numbers. Add an E.164 caller with an optional label.

NOTIFY TARGETS

Fan-out destinations

Enabled targets receive the closed notify pack. Channels: email, sms, push. Events: missed_call_sms, after_hours_message, take_message, callback_request, away_message (missed_call_sms is caller SMS; the others are owner notify). Stubs stay delivered:false.

No notify targets. Add an email, SMS, or push destination with a label.

PROTOCOL

Events

    Local IVR simulate · no carrier

    Voice test

    Walks the same shallow plan as ringnoted-call-flow. This is not a phone call. No Twilio, no carrier.