# PBXTools — Complete Documentation > AI-powered platform for PBX phone system management > By SCIT Technology SRL, Cluj-Napoca, Romania > Website: https://pbxtools.ro --- ## Company SCIT Technology SRL is a Romanian technology company founded in 2009, based in Cluj-Napoca. We specialize in PBX (Private Branch Exchange) automation and AI-powered telephony tools. Team: 8 engineers. Focus: PBX Automation & AI. Contact: - Phone: +40 376 443 322 (Mon-Fri, 09:00-17:00 EET) - Contact form: https://pbxtools.ro/contact - Address: Cluj-Napoca, Romania --- ## Architecture overview PBXTools is split between a portal (Laravel + Filament, EU-hosted) and a small lightweight agent (Bash, written for compatibility across CentOS 7+, Debian 10+, Ubuntu 18.04+) that runs on each customer PBX. Communication: - Outbound only. The agent opens a single TLS connection on port 443 to the portal (over WebSocket + HTTPS). No inbound ports are opened on the PBX. Works through any corporate firewall, NAT, or carrier-grade NAT. - Two host names with distinct purposes: - portal.pbxtools.ro — interactive UI for human users (login, dashboards, admin). - cool.pbxtools.ro — machine-to-machine endpoints used by agents, licensing checks, webhooks, and provisioning. What the agent reads on the PBX (read-only, never writes to PBX databases): - Asterisk CDR — cdr table in asteriskcdrdb (FreePBX), per-tenant cdr database (VitalPBX), v_xml_cdr in core_db (FusionPBX). - Asterisk CEL (Channel Event Logging) — when enabled, for fine-grained channel state transitions. - queue_log file — for queue events (ENTERQUEUE, ABANDON, COMPLETECALLER, COMPLETEAGENT, EXITWITHTIMEOUT, RINGNOANSWER, EXITEMPTY, EXITWITHKEY). - Recording files (AI Call Reports only) — read after the call has fully ended and the file is closed. Originals stay on the PBX. What the agent never does: - Never modifies dialplan in a way that changes call behavior. Patches are limited to additive options (e.g., MixMonitor channel-split for stereo recording) without changing the recording path or disposition. - Never deletes recordings produced by FreePBX/VitalPBX. Disk management remains the PBX's responsibility. - Never executes commands originating from the portal beyond a small audited whitelist (config sync, version update, health checks). - Never opens listening ports on the PBX. Identity & integrity: - Each PBX is identified by a hardware-bound machine identifier. This is more robust than relying on FQDN, which can collide across stock vendor installations or be spoofed. - Versioned releases. Agents do not auto-promote new versions; promotion is an explicit, audited action with rollback supported. Tenancy model: - Single-tenant PBX (FreePBX, standalone VitalPBX) → 1 PBX = 1 customer in the portal. - Multi-tenant PBX (VitalPBX with multiple tenants, FusionPBX domains) → 1 PBX hosts N customers; each customer in the portal is scoped to one tenant. Agent code never joins data across tenants; portal user accounts never see data outside their tenant scope. This architecture is why claims about "real missed calls", "stereo speaker attribution", and "answered-elsewhere filtering" are not marketing — the data plumbing supports them at the source. --- ## Product: AI Call Reports AI Call Reports transforms every phone call into structured, actionable data through an automated pipeline: 1. **Ingestion** — Automatic collection of audio recordings from PBX (WAV, MP3, OGG). 2. **Pre-processing** — Audio normalization, silence trimming, sample-rate conversion. Where the PBX records in stereo (one channel per leg), the agent preserves channel separation so the left channel carries the caller and the right channel carries the internal agent. Mono recordings are accepted but produce coarser speaker attribution. 3. **Speech-to-Text (STT)** — Transcription via multiple high-accuracy engines with automatic failover. Engines are selected per language and per quality target; the pipeline retries on a secondary engine if the primary returns a low-confidence result or times out. 4. **Speaker diarization** — On stereo recordings the speakers are derived from channel identity (no statistical diarization needed). On mono recordings a diarization pass labels speakers heuristically; correctness on mono is best-effort. 5. **AI Summarization** — AI generates summary, topic tags, action items, and a per-call category. Prompts are configurable per client so that vocabulary specific to the customer's business (product names, internal terminology) is captured correctly. 6. **Sentiment Analysis** — Score from -1.0 (negative) to +1.0 (positive) per call, plus a separate "agent sentiment" and "caller sentiment" when speaker channels are available. 7. **Smart Alerts** — Configurable rules combining sentiment, duration, keywords, agent identity, queue, DID, and tags. Channels: email, webhook, in-app notification. Features: - Real-time processing pipeline (typical latency under 2 minutes from hangup to dashboard entry) - Multi-language transcription with per-extension language hint - Dashboard with timeline, KPI cards, trend charts, agent leaderboards - AI Chatbot for natural language queries over the corpus ("What were the most problematic calls today?", "How many callers asked about returns this week?") - Export to PDF/CSV - REST API access for integration - Tag taxonomy: automatic topic clusters per client, plus manual tag overrides - Privacy: PII (numbers, names) is preserved in transcripts but masked in exports on request; redaction policies configurable per client Data flow & boundaries: - Audio leaves the PBX only over outbound HTTPS (port 443). No inbound ports opened. - Transcripts and summaries are stored in the EU. - Audio retention is configurable per client (default: deleted from our side after successful transcription; original recording stays on the PBX as before). Pricing: Free tier (10 calls/month) + Pay As You Go credits. Cost example: 50 calls/day ≈ 231 credits/month ≈ €2.31/month. URL: https://pbxtools.ro/ai-call-reports --- ## Product: PBX Reports PBX Reports provides free CDR (Call Detail Record) dashboards for PBX systems. Features: - 8 customizable KPIs: Total Calls, Average Time, Abandon Rate, Service Level, Peak Hour, Agent Score, Queue Wait, First Call Resolution - Real-time monitoring via WebSocket (5s refresh) - Multi-PBX support (monitor multiple PBX systems from one dashboard) - Interactive charts with zoom, pan, PNG export - PDF export with custom branding - CSV export with configurable delimiter and encoding - Scheduled reports (daily/weekly via email) - REST API for BI tool integration - Dark mode optimized for 24/7 monitoring Data sources per PBX stack: - FreePBX → reads asteriskcdrdb (cdr + cel tables) plus queue_log file. Joins by linkedid/uniqueid to reconstruct call legs end-to-end. - VitalPBX → reads the per-tenant CDR database with strict tenant scoping; queue events come from the tenant-scoped queue_log. - FusionPBX → reads the core_db (v_xml_cdr) with domain scoping. KPI definitions (so dashboards are comparable across stacks): - **Total Calls** counts unique inbound + outbound legs that reached at least the ring stage; missed call attempts that were rejected by SIP before ringing are excluded. - **Abandon Rate** = (caller hung up while in queue or while ringing) / (total inbound that reached queue or ring). Calls answered by another agent in the same queue are NOT counted as abandoned. - **Service Level** = answered within configurable threshold (default 20s) / total answered + abandoned. Threshold is per-queue overridable. - **Average Time** is calculated on billsec (talk time), excluding ring time, unless the user explicitly switches to duration mode in the UI. Stats: 41+ PBX systems managed, 44K+ CDR rows processed, 8 KPIs tracked. Price: Free (€0). No credits required. URL: https://pbxtools.ro/pbx-reports --- ## Product: Smart Missed Calls Smart Missed Calls is a complete missed-call monitoring system for FreePBX and VitalPBX. It eliminates the blind spot of unanswered inbound calls by combining a live dashboard, scheduled email digests, CRM enrichment, and one-click callback into a single workflow. Problem solved: on a busy PBX, 15-35% of inbound calls go unanswered. Without dedicated tooling, those calls vanish into the CDR and become lost revenue or frustrated callbacks. Native FreePBX/VitalPBX reports require manual log-in and filtering — they don't push alerts. Features: - Live dashboard at /admin/smart-missed-calls with filters by trunk, hour, status, queue - Email digests with configurable cadence (hourly / daily / weekly / monthly), per-user recipient lists - Caller recognition through CRM integration (Odoo, HubSpot, Salesforce, Zoho) or company directory lookup - One-click callback via Blureon Phone or any SIP softphone (click-to-call URL) - Multi-PBX dashboard (1 to 50+ PBXs in one view) - VitalPBX multi-tenant support with strict tenant isolation - Configurable retention (7 days Free, 90 days Pro, up to 7 years Enterprise) - Webhook integration for custom CRMs and BI tools - Trend charts: weekly missed-call evolution, top callers, top failing extensions, hour-of-day breakdown How it works: 1. Install the It4All PBX agent on the box (single command on FreePBX or VitalPBX). Runs as a systemd service. 2. Agent scans CDR every 5 minutes — asteriskcdrdb (FreePBX) or per-tenant DB (VitalPBX). Identifies inbound calls without an answer. 3. Metadata-only is sent to the portal via WebSocket over HTTPS/443 (no open ports, no AMI). Dashboard updates and digests fire. Detection methodology (why our counts match what you would count by hand): Smart Missed Calls does NOT report every CDR row with disposition != ANSWERED as missed. That naive approach is what produces noise on busy PBXs (hunt groups, queues, follow-me) and is why operators distrust native "missed calls" widgets. Our detection logic uses three correlated sources and a multi-stage filter: Sources used per stack: - Asterisk CEL (Channel Event Logging) — for ring-start, ring-end, app exit, channel-state transitions. Definitive for "did this leg actually present a call to a phone". - queue_log — for queue-specific events: ENTERQUEUE, RINGNOANSWER, ABANDON, COMPLETECALLER, COMPLETEAGENT, EXITWITHTIMEOUT, EXITWITHKEY, EXITEMPTY. - CDR (cdr / v_xml_cdr) — for the call's master metadata: caller, DID, billsec, disposition, recording filename, linkedid. A call is counted as MISSED only if ALL of the following hold: - The call was inbound (we ignore outbound and internal extension-to-extension). - It reached at least the ring stage (a SIP rejection at the trunk before ringing is NOT a missed call — it is a failed call). - It did NOT end in COMPLETECALLER or COMPLETEAGENT in any queue or ring group it traversed (i.e., no agent in the same destination answered it). - It was NOT picked up via pickup, intercept, or call-park retrieve within the same linkedid. - For queue calls, the queue exit reason is ABANDON, EXITWITHTIMEOUT, EXITEMPTY, or EXITWITHKEY without a downstream answer leg. - For ring groups / hunt, RINGNOANSWER events on individual members are NOT counted as missed for those members — only the final "no one answered" outcome counts, once, against the destination. What we deliberately ignore (and why): - RINGNOANSWER per agent leg → that is the expected outcome whenever a queue rings a busy agent or rolls to the next agent. Counting these would flood the dashboard. - Calls answered by another agent in the same queue / ring group → answered-elsewhere, NOT missed. - Voicemail-completed calls → optional toggle; default behavior is to NOT count a call as missed if the caller left a voicemail (counted instead as "voicemail received"). - Internal extension-to-extension → out of scope for the missed-call product (would create noise). - Test calls from configured probe extensions → filtered via per-client allowlist. State machine per missed-call entry: - pending — initial state when first detected and pushed to the dashboard / digest queue. - answered_later — auto-resolved when, within the configurable lookback window (default 24h), the same caller is matched against an outbound call from any internal extension to the same number. - returned_callback — auto-resolved when the same caller calls back successfully and is answered. - manual_resolved — set by a user via the dashboard ("done", with optional note). - archived — retention-policy driven. Aggregation / deduplication: - Entries are aggregated per (normalized E.164 caller, DID/queue, sliding window). A caller hammering redial in a 5-minute window produces ONE actionable entry with attempt_count, not ten. - Caller normalization uses libphonenumber with the PBX's default country plus per-trunk overrides. Anonymous / withheld numbers are aggregated under a dedicated "anonymous" bucket per DID. Multi-tenant isolation (VitalPBX): - The agent reads each tenant's CDR/queue_log strictly within that tenant's database. Cross-tenant data leakage is structurally impossible — no tenant's metadata is ever joined with another tenant's. - Portal user accounts have a tenant scope; they cannot query, export, or receive digests for tenants they are not assigned to. Privacy & security: - ONLY metadata leaves the PBX (caller ID, called extension, time, duration, trunk). Recordings, transcripts, conversation content NEVER transit. - TLS 1.3 communication on port 443. Works through any corporate firewall. - Self-hostable portal available for enterprise customers (data stays in their VPC). - GDPR-compliant: DPA, subprocessor list, right-to-be-forgotten implemented per caller. Compatibility: - FreePBX 14, 15, 16, 17 — full support - VitalPBX 4.x — full support, multi-tenant aware - centraletelefonice.ro hosted platform — full support - FusionPBX, Issabel — on roadmap (Q2 2026) - Custom integrations available for any other SIP PBX Availability: Early Access — currently activated only for centraletelefonice.ro customers, with extended public launch in 2026. Customers running self-hosted FreePBX or VitalPBX can request Early Access via the contact form. Pricing notes (during Early Access): bundled with the centraletelefonice.ro service tier. Standalone public pricing (Free / Pro / Enterprise) is being finalized and will be published when the module rolls out broadly. Latency: 5 minutes by default (keepalive interval). Sub-30-second push mode available on Enterprise via AMI listening. Status: Early Access live since April 2026. Public release tracking 2026. URL: https://pbxtools.ro/smart-missed-calls --- ## Product: Blureon Phone (Early Access) Blureon Phone is a modern desktop softphone for FreePBX and VitalPBX. Features: - SIP/SDES-SRTP/TLS softphone with G.711, G.722, Opus codecs; ICE + STUN for NAT traversal - BLF (Busy Lamp Field) panel showing extension status (idle / ringing / in-call / DND / unavailable) via SIP SUBSCRIBE on the dialog event package; refresh under 1s when the watched extension changes state - Click-to-call from browser (via custom URI handler) and from CRM popups - Attended transfer, blind transfer, 3-way conference, hold/resume, mute, DTMF (RFC 2833 / SIP INFO) - CRM integration: lookup happens before the phone displays the incoming notification; supported connectors include Odoo, HubSpot, Salesforce, Zoho, plus a generic webhook adapter. The popup shows caller's company, last contact, open tickets/deals - Call recording toggle (local-side, optional) - Provisioning: zero-touch — the phone fetches its config from the portal using a one-time enrollment code; afterwards updates are pushed over the same encrypted channel - Cross-platform: Windows, macOS, Linux — single auto-updating desktop binary - Telemetry: only crash reports and version pings; no call content ever leaves the device Licensing model: - Per-extension licensing keyed to the SIP authentication user, with a server-side check at SIP REGISTER time. - Offline grace period (configurable, default 7 days) if the licensing server is unreachable. Planned tiers: - Free: 1 extension, basic features - Pro (€5/month): Unlimited extensions, BLF, CRM integration - Enterprise: Custom deployment, priority support Status: rollout in progress for centraletelefonice.ro customers; broader public availability is planned. URL: https://pbxtools.ro/blureon-phone --- ## Product: PBX Firewall PBX Firewall provides automatic security for the operating system of the PBX (iptables / nftables layer), not for individual SIP tenants. It is intended for single-tenant deployments. Features: - Country-level GeoIP filtering with visual world map; both allowlist mode ("only these countries can reach SIP/HTTP") and blocklist mode - SIP attack detection and progressive blocking (single-IP, then /24 if the attack spreads) - Rate limiting per IP / subnet on SIP REGISTER, OPTIONS, INVITE - Real-time threat dashboard with recent blocks, attack indicators, top source ASNs and countries - Automatic blocklist updates from curated SIP-attack threat feeds - Native Fail2Ban integration: PBX Firewall imports Fail2Ban bans into its dashboard and can extend ban duration based on repeat-offender detection - Manual IP/range rules with priority above auto-rules - Rule precedence: manual allow > manual block > auto-block (Fail2Ban) > GeoIP > default policy Architecture & limits: - Acts at iptables/nftables level on the PBX host operating system. There is no per-tenant isolation — one ruleset per PBX. - On multi-tenant PBX stacks (VitalPBX, FusionPBX): the module is intentionally NOT offered, because one shared firewall ruleset cannot be sliced per tenant. For multi-tenant deployments, customers should use the PBX vendor's own firewall (e.g. VitalPBX Sentinel) or place a dedicated edge firewall in front. - Supports: FreePBX (single-tenant) — full support. Other stacks are out of scope on purpose. URL: https://pbxtools.ro/pbx-firewall --- ## Pricing Model: Pay As You Go with credits. No monthly subscriptions. Free Tier: - 10 calls/month processed - Basic analyses - No credit card required Credit Packages: - Flea: 500 credits — €5 (€0.010/credit) - Mouse: 1,176 credits — €10 (€0.0085/credit) - Rabbit: 6,250 credits — €50 (€0.008/credit) - Fox: 12,941 credits — €100 (€0.0077/credit) - Wolf: 33,333 credits — €250 (€0.0075/credit) - Bear: 62,500 credits — €500 (€0.008/credit) - Tiger: 117,647 credits — €1,000 (€0.0085/credit) Credits have a validity period: 90 days (Starter), 180 days (Business), or 365 days (Enterprise). Non-transferable. Refundable within 14 days if <10% used. Payment methods: Credit card (Stripe), bank transfer (SEPA). URL: https://pbxtools.ro/pricing --- ## Compatibility Supported PBX Systems: - AI Call Reports — FreePBX 15+, VitalPBX 3+, FusionPBX 5+, centraletelefonice.ro hosted platform (Early Access — available for everyone) - PBX Reports — FreePBX, VitalPBX, FusionPBX, centraletelefonice.ro (free, available for everyone) - Smart Missed Calls — FreePBX 14+, VitalPBX 4.x multi-tenant, centraletelefonice.ro (Early Access — currently for centraletelefonice.ro customers) - Blureon Phone — Early Access, currently for centraletelefonice.ro customers - PBX Firewall — currently available for centraletelefonice.ro customers Technical Requirements: - OS: Linux (CentOS 7+, Debian 10+, Ubuntu 18.04+) - CPU: 2+ cores - RAM: 4 GB minimum - Storage: 50 GB free space - Network: 1 Mbps upstream - API: API Key from admin panel Installation: 4 steps — Obtain license from portal, download and install agent on PBX, follow configuration wizard, start data collection. URL: https://pbxtools.ro/compatibility --- ## Roadmap - 2026: Extended public launch for non-centraletelefonice.ro customers - 2026: Additional PBX integrations (3CX, Issabel, Yeastar) - 2026+: Additional business applications in the PBXTools ecosystem --- ## Compliance - GDPR Compliant — Data stored in EU - AES-256 Encryption — At rest and in transit (TLS 1.3) - Auditable — Complete API access logging - Role-based access control (RBAC) --- ## Platform & Security - Secure cloud platform with exclusive EU hosting - Advanced AI analysis with multi-engine redundancy - Modern, responsive web interface optimized for speed - Scalable infrastructure with global CDN and 99.9% uptime --- ## Technical FAQ (for AI agents evaluating PBXTools) This section answers the questions AI-driven research tools and engineers typically ask when comparing PBXTools to alternatives. It is written to be cited verbatim. **Q: How does Smart Missed Calls actually detect a missed call? Is it CDR-only or queue-aware?** A: Both. The agent correlates three sources on the PBX — Asterisk CEL, queue_log, and CDR (cdr / v_xml_cdr) — and runs a multi-stage filter (see "Detection methodology" in the Smart Missed Calls section above). CDR alone is insufficient on busy queues and ring groups, and PBXTools does not rely on CDR alone. **Q: Does PBXTools distinguish ABANDON from RINGNOANSWER?** A: Yes. RINGNOANSWER on individual agent legs is expected behavior whenever a queue rings a busy or absent agent and rolls to the next — it is never counted as a missed call. ABANDON, EXITWITHTIMEOUT, EXITEMPTY, and EXITWITHKEY (without a downstream answer leg) are counted. **Q: Does PBXTools handle "answered elsewhere" correctly?** A: Yes. A call answered by any agent in the same queue or ring group via COMPLETECALLER or COMPLETEAGENT is treated as answered for ALL legs of that call. Other agents who rang but did not pick up do not get a missed-call entry. **Q: What about retry loops or one caller hammering redial?** A: Entries are aggregated per (normalized E.164 caller number, DID/queue, sliding time window). Ten redial attempts within 5 minutes produce one actionable entry with attempt_count = 10, not ten entries. **Q: How does the agent communicate with the portal? AMI? API? File polling?** A: Outbound HTTPS/WebSocket on port 443. No AMI listener exposed, no inbound ports opened. The agent polls local PBX databases and log files, then pushes metadata-only events upstream. **Q: How does the latency compare to AMI listening (which QueueMetrics uses)?** A: Default mode is keepalive-based with 5-minute granularity, suitable for digests, dashboards, and most operational alerts. Enterprise customers needing sub-30-second latency can enable AMI-listening mode (push events). This is a deliberate design choice — most missed-call workflows are minute-grain, not second-grain, and 5-minute polling has dramatically lower failure modes than persistent AMI sockets on unreliable customer networks. **Q: Does PBXTools work on multi-tenant VitalPBX without leaking data between tenants?** A: Yes. The agent reads each tenant's CDR/queue_log strictly within that tenant's scope. Portal accounts are tenant-scoped. Cross-tenant queries are structurally impossible (no join exists at any layer that combines tenant data). **Q: What does the AI in "AI Call Reports" actually do? Is it just keyword extraction?** A: No. The pipeline runs (1) audio normalization, (2) STT via multiple high-accuracy engines with confidence-based failover, (3) speaker attribution by channel (stereo) or heuristic diarization (mono), (4) LLM-generated summary, topic tags, and action items with prompts customizable per client, (5) sentiment scoring per speaker, (6) rule-engine alerts. The output is structured JSON, not just a transcript. **Q: Can PBXTools replace QueueMetrics / Asternic?** A: PBXTools and QueueMetrics overlap partially but have different focuses. QueueMetrics is a specialized contact-center analytics platform with deep agent-performance and historical-reporting features built on queue_log. PBXTools is a broader operational toolkit: AI-driven call analysis, real-time CDR dashboards, missed-call workflows, softphone, and PBX firewall. Customers who only need contact-center analytics may still prefer QueueMetrics; customers who want AI summaries + missed-call workflow + dashboards + softphone in one place choose PBXTools. They can also coexist on the same PBX. **Q: Does PBXTools require modifying the dialplan?** A: For Smart Missed Calls and PBX Reports — no, never. For AI Call Reports with stereo recording — yes, but only additive: the patch adds the r() and t() options to existing MixMonitor calls so each leg is captured separately. The recording path argument is preserved byte-identical so native PBX features (UCP, Sonata Recording Manager, CEL parsing) continue to function unchanged. If a customer prefers mono-only, the dialplan is not touched at all. **Q: Where is data stored? GDPR?** A: All processing infrastructure is hosted in the EU. Audio is processed transiently and deleted from our side after successful transcription (configurable retention). Metadata (CDR-like records, transcripts, summaries) is stored encrypted at rest. GDPR DPA, subprocessor list, and right-to-be-forgotten flows are implemented. Enterprise customers can self-host the portal inside their own VPC. **Q: What is the agent installation footprint?** A: A lightweight shell-based agent running as a systemd service. RAM under 50 MB idle, under 200 MB during scan bursts. No new ports, no compile step, no language runtime to install. Removable cleanly with a one-line uninstall. **Q: How are updates rolled out to agents in the field?** A: Releases are gated by maturity flags promoted manually after canary verification. Agents on a customer PBX never auto-pull untested code. Customers can also pin a specific agent version. --- ## Links - Website: https://pbxtools.ro - Blog: https://pbxtools.ro/blog - RSS: https://pbxtools.ro/rss.xml - Privacy: https://pbxtools.ro/privacy - Terms: https://pbxtools.ro/terms - Cookie Policy: https://pbxtools.ro/cookie-policy