Early Access · Clienți centraletelefonice.ro

Apelurile ratate de toată echipa, nu doar pe o extensie

Smart Missed Calls vede diferența — un apel transferat printr-un queue care a sunat la 6 extensii și niciuna n-a răspuns e UN singur apel pierdut, nu șase. Și când cineva re-apelează sau apelantul revine și răspunde un coleg, intrarea iese singură din listă. Totul cu audit log complet. Pentru FreePBX și VitalPBX.

smart-missed-calls · auto-refresh
AP
Andrei Popescu ×3
+40 745 123 456 · DID 0376443322
Deschis
Coadă Vânzări · Ext: 101, 102, 103, 104 acum 8 min
DP
Dental Plus SRL
+40 311 555 333 · DID 0311555000
Deschis
IVR → 2 · Ext: 205 acum 22 min
MI
Maria Ionescu ×2
+40 769 444 222 · DID 0376443322
Închis
Recepție · Ext: 101, 102 acum 1 h
↩ Re-apelat de ext. 102 — entry închis automat
1 entry
per apelant — nu N pe queue
auto
lista se curăță singură
<5 min
instalare pe PBX
Captură reală

Tabloul de bord — date live

Trend apeluri ratate, distribuție rezolvări, ora din zi, ziua săptămânii, numere apelate frecvent — vezi imediat unde pierzi clienți.

portal.pbxtools.ro/client/smart-missed-calls
Smart Missed Calls — Tablou de bord cu trend apeluri ratate, distribuție rezolvări și statistici live

Captură live din portalul nostru — date demonstrative.

Același apel, două rapoarte — vezi cum diferă

Un apelant intră pe coada „Vânzări". Telefonul sună la 4 extensii fără răspuns. A 5-a extensie ridică și vorbește 3 minute. Iată cum vede situația raportul standard versus Smart Missed Calls.

Raport CDR standard
Ext 101 NO ANSWER
Ext 102 NO ANSWER
Ext 103 NO ANSWER
Ext 104 NO ANSWER
Ext 105 ANSWERED 3:14
→ 4 apeluri „ratate" în raport
Pare un dezastru. Manager-ul trimite mesaj de plâns echipei. În realitate, apelul a fost rezolvat — ext 105 a vorbit cu clientul.
Smart Missed Calls
Algoritm aplicat
SUM(ANSWERED ∧ Dial ∧ ext) = 1 → cineva a răspuns
Concluzie: NU e ratat
→ 0 apeluri ratate, 1 răspuns
Apelul nu apare în lista de „ratate" pentru că logic NU e ratat — clientul a fost servit. Lista rămâne curată și acțională.

Acelaşi principiu se aplică pentru ring groups, IVR-uri, transfer-uri în lanţ. Smart Missed Calls evaluează apelul COMPLET înainte să decidă „ratat" sau „nu".

Diferența care contează: „ratat pe o extensie" vs „ratat de toată echipa"

Orice raport CDR din FreePBX/VitalPBX îți arată că extensia 102 nu a răspuns. Adevărata întrebare e însă alta: a răspuns CINEVA până la urmă? Sau apelul a căzut prin queue, IVR și ring group fără să-l prindă nimeni?

1

Raportul standard te induce în eroare

Un apel pe queue-ul „Vânzări" sună la 5 extensii. În CDR vezi 5 rânduri „NO ANSWER" — pare un dezastru. Dar a 6-a extensie a răspuns. Apel rezolvat, nu pierdut. Smart Missed Calls aplică logica corectă: 0 răspunsuri din toată echipa = pierdut.

2

Liste statice care îmbătrânesc

Raportul de azi-dimineață are 47 de apeluri ratate. Pe parcursul zilei colegii rezolvă 30 dintre ele — dar lista rămâne neschimbată în PDF, în Excel, în orice raport static. SMC e dinamic: când Maria îl re-apelează pe Andrei, intrarea iese singură.

3

Aceiași apelanți apar de 5 ori

Un client insistent sună de 6 ori în 10 minute. În raportul brut vezi 6 entry-uri. SMC îl aglomerează automat per `(apelant, DID)`: UN entry cu `missed_count=6` și extensiile care au sunat. Mult mai citibil, mult mai actionable.

4

Nimeni nu știe cine ce-a făcut

Cu lista pe email și fără audit log, managerul nu poate verifica dacă apelul a fost re-apelat sau dacă cineva a marcat fals „rezolvat". SMC scrie tot: cine a închis intrarea, cum (re-apel, răspuns ulterior, marcare manuală sau retenție), când, de pe ce extensie.

Cum funcționează — algoritmul real

Trei pași pentru a porni, dar mecanismul intern e ce face diferența. Nu căutăm „NO ANSWER" în CDR. Verificăm dacă apelul a fost răspuns DE CINEVA, oriunde în dialplan.

1

Instalezi agentul It4All pe centrală

O comandă pe FreePBX sau VitalPBX. Agentul rulează systemd, comunică cu portalul prin WebSocket peste HTTPS/443. Niciun port expus, nicio modificare în dialplan, nicio interferență cu MixMonitor sau alte servicii native.

2

Algoritmul: „a răspuns CINEVA?"

Pentru fiecare apel inbound, query-ul agregează toate rândurile CDR cu același `linkedid`. Reguli simultane: ZERO rânduri cu `disposition='ANSWERED' AND lastapp='Dial' AND dst='extensie internă'` (= nimeni n-a vorbit) ȘI cel puțin un rând `NO ANSWER` sau `lastapp='missed_calls'` (= există dovadă de ratare). Doar atunci e missed real.

3

Aglomerare + auto-clear

Detecția e per `(client, apelant, DID)`. Același apelant care insistă incrementează `missed_count`, nu duplică entry-uri. Când agentul detectează un outbound answered către același număr SAU un nou inbound answered de la el — entry-ul trece automat la `cleared`, fără intervenție umană.

Lista se curăță singură — fără click, fără bifă, fără export

Trei căi automate prin care un entry trece de la „deschis" la „închis". Fiecare e detectată din CDR la următorul ciclu de keepalive (5 min) și înregistrată în audit log cu motivul exact.

cleared_by
returned

Un agent re-apelează

Andrei din ext. 102 formează numărul apelantului. Agentul detectează apelul outbound answered și marchează entry-ul `cleared_by=returned`, salvând extensia 102 în audit.

cleared_by
answered_later

Apelantul revine

Apelantul sună din nou peste 30 de minute, de data asta răspunde Maria din ext. 105. Entry-ul se închide automat cu `cleared_by=answered_later`.

cleared_by
manual

Manager bifează manual

Pentru cazuri tratate offline (whatsapp, email, vizită fizică), un user cu permisiune bifează „Rezolvat". Audit-ul reține user-id-ul, ora și nota lui.

Plus: retenție automată după N zile (`cleared_by=expired`, opțional per client) și `reopened` automat dacă apelantul sună din nou după close. Toate cu audit complet.

Ce face SMC diferit de orice raport CDR

Cinci mecanisme pe care raportul nativ FreePBX sau VitalPBX nu le are. Toate sunt centrale pe lista corectă, scurtă și acțională.

🧠

Detecție „echipa" vs „extensie"

Un apel pe queue care sună la 5 extensii și a 6-a răspunde NU e missed. Un apel direct la 102 fără răspuns ESTE missed. Distincția se face pe baza `linkedid` din CDR — toate evenimentele aceluiași apel agregate, NU câte un rând per ring.

🔄

Lista se curăță singură

Trei căi automate de close: (1) un agent re-apelează numărul dintr-o extensie internă → `cleared_by=returned`. (2) Apelantul revine și răspunde cineva → `cleared_by=answered_later`. (3) Manager bifează manual din dashboard → `cleared_by=manual`. Plus retenție automată după N zile.

📑

Audit log per intrare

Fiecare entry are jurnal complet: created, incremented, notified, cleared (cu motivul), reopened. Cu actor (agent / user-cu-id / cron) și timestamp. Managerul poate verifica dacă „rezolvat manual" a fost legitim sau forțat.

🔔

5 frecvențe de notificare + dedupe

Off / realtime / hourly / daily / weekly / monthly — la nivel de client, configurabil per portal. Realtime are dedupe per `(apelant, DID)` (default 5 min) și rate-limit hard 50 email/oră ca să nu sature inbox-ul când un apelant insistă.

📞

Contextul complet al apelului

Pentru fiecare entry vezi: numărul + numele apelantului (din CRM/agendă), DID-ul pe care a intrat, label-ul rutei (queue/IVR/ring group), TOATE extensiile care au sunat (lista), de câte ori a încercat, prima și ultima încercare. Restul îl decizi cu context.

🛡️

Numai metadata pleacă de pe PBX

Recording-urile, transcrierile, conținutul conversațional — NU părăsesc niciodată centrala ta. La portal ajung doar: caller ID, DID, oră, durată, extensiile chemate, status. Atât. Pentru clienți enterprise oferim self-hosted: nici metadata nu pleacă.

Calculator — câte din apelurile tale sunt cu adevărat ratate?

Setează numerele tale reale. Folosim o rată de pierdere realistă (3-8% pentru o echipă bine acoperită, 10-15% pentru un call center în vârf). Vezi cât din venit poți recupera cu re-apel coerent.

Venit potențial pierdut / lună
Recuperabil cu re-apel coerent (~60%)

Estimare orientativă. Numerele reale depind de domeniu (B2B SaaS, retail telefonic, suport tehnic — toate au profile diferite). Folosește datele tale efective.

Centralele suportate

Lucrăm cu majoritatea centralelor IP. Detecția se face direct din CDR-ul nativ al centralei — fără modificări în dialplan, fără pluginuri instalate pe PBX. Acoperire validată pe FreePBX și VitalPBX; alte sisteme — în dezvoltare sau integrare la cerere.

Activat by-default

centraletelefonice.ro (gazduit la noi)

Activat by-default pe platforma noastră de telefonie ca serviciu. Clienții centraletelefonice.ro îl primesc fără setup — modulul rulează deja pe centralele administrate de noi.

🟢 Public 2026

FreePBX (self-hosted)

FreePBX 14, 15, 16, 17. Detectare bazată pe asteriskcdrdb cu marker missed_calls. Suport pentru queue-uri, ring groups, IVR. Disponibilitate publică în 2026.

🔴 Multi-tenant

VitalPBX (multi-tenant)

VitalPBX 4.x cu suport per-tenant. Fiecare tenant are propriul dashboard, digest separat, retenție configurabilă. Disponibilitate publică în 2026.

În roadmap

Alte sisteme

FusionPBX, Issabel și alte distribuții IP — pe roadmap. Pentru orice alt PBX SIP putem evalua o integrare la cerere.

Privacy by design

Datele apelurilor sunt sacre. Smart Missed Calls e conceput astfel încât conținutul (recording-uri, transcrieri, conversații) NU părăsește centrala ta.

Doar metadata

Trimitem la portal: caller ID, DID, label-ul rutei, lista extensiilor chemate, ora și durata. Atât. Nicio conversație, nicio voce, niciun mesaj.

Comunicare TLS pe 443

Agentul vorbește cu portalul prin WebSocket peste HTTPS pe portul 443. Niciun port deschis pe centrală — funcționează prin orice firewall corporate, fără port forwarding, fără VPN.

Audit log immutable

Tabelul `smart_missed_calls_audit` e append-only. Fiecare event (creat, incrementat, notificat, închis, redeschis) e înregistrat cu actor și timestamp. Nimeni nu poate „șterge istoria".

Retenție controlată

Setezi câte zile rămân entry-urile `open` (ulterior închise automat cu `cleared_by=expired` și audit). Setarea este per client. Lipsa retenției = mod „forever" — entry-urile rămân deschise până la close real.

Self-hostable + GDPR

Pentru enterprise, deployment self-hosted al portalului în VPC-ul tău — nici metadata nu pleacă din infrastructura ta. DPA la cerere, subprocesori publicați, right-to-be-forgotten implementat per caller.

Prețuri simple, fără surprize

Plătești o singură dată pe lună, per centrală conectată. Trial 30 zile pe planul Pro, fără card.

Free

0€

Pentru centrale mici sau testare.

  • 1 PBX conectat
  • Dashboard live
  • Digest zilnic pe email (1 destinatar)
  • Retenție 7 zile
  • Suport comunitate
Solicită Early Access
Popular

Pro

9€ /lună

Pentru firme cu volume reale de apeluri.

  • 1 PBX conectat (sau 1 tenant VitalPBX)
  • Toate frecvențele digest (orar / zilnic / săpt / lunar)
  • Destinatari nelimitați pe digest
  • Retenție 90 zile
  • Webhook & integrare CRM (Odoo, HubSpot, Salesforce)
Cere ofertă

Enterprise

Custom

Pentru call centers și grupuri multi-PBX.

  • PBX-uri nelimitate
  • Multi-tenant VitalPBX cu izolare strictă
  • Retenție configurabilă (până la 7 ani)
  • Self-hosted portal opțional
  • SLA 99.9% & suport dedicat 24/7
Cere ofertă

Întrebări frecvente

Răspunsuri detaliate la cele mai importante întrebări despre Smart Missed Calls.

Care e diferența reală dintre Smart Missed Calls și raportul „missed calls" din FreePBX/VitalPBX?
Raportul nativ FreePBX listează FIECARE rând CDR cu disposition='NO ANSWER'. Pentru un apel intrat pe queue care sună la 5 extensii și a 6-a îl prinde, vezi 5 entry-uri „ratate" — informație tehnic corectă, dar profund înșelătoare ca decizie de business. Smart Missed Calls agregă toate evenimentele unui apel pe `linkedid`, verifică simultan condițiile (ZERO `disposition='ANSWERED' AND lastapp='Dial' AND dst=extensie internă` PLUS dovadă de ratare) și abia atunci marchează ratat. În plus, dacă același apelant insistă, NU primești 6 entry-uri — primești 1 entry cu `missed_count=6`. Și entry-ul iese SINGUR din listă când cineva re-apelează sau apelantul revine și răspunde.
Cum se „curăță singură" lista? Concret, ce trebuie să fac eu?
Nu trebuie să faci nimic special. Sunt trei căi automate prin care un entry trece de la `open` la `cleared`: (1) **returned** — un agent al tău formează numărul apelantului dintr-o extensie internă, agentul detectează apelul outbound answered și marchează entry-ul `cleared_by=returned` cu extensia care a făcut re-apelul; (2) **answered_later** — apelantul revine și de data asta răspunde cineva, agentul detectează inbound answered de la același caller+DID și marchează `cleared_by=answered_later`; (3) **manual** — manager bifează „rezolvat" din dashboard (audit-ul reține user-ul). În plus există close prin retenție (dacă setezi N zile inactivitate) și `reopened` automat dacă apelantul sună din nou după ce s-a închis. Toată povestea fiecărui entry e în audit log.
Ce înseamnă că „nu interferați cu FreePBX/VitalPBX nativ"?
Agentul nostru NU modifică dialplan-ul, nu adaugă AMI nou, nu deschide port-uri suplimentare, nu atinge fișierele de recording native. Pe FreePBX citim asteriskcdrdb (read-only). Pe VitalPBX iterăm tenanții și citim baza per-tenant (read-only). Comunicarea cu portalul nostru se face prin WebSocket peste HTTPS pe portul 443 — același port pe care îl folosește orice browser. UCP, Sonata Recording, Call Reports, MixMonitor — toate funcționează cum le știe VitalPBX/FreePBX. Noi suntem strict observatori.
Cât de des se actualizează lista? Cu ce latență văd un apel nou ratat?
Default: 5 minute (intervalul de keepalive al agentului). Adică la fiecare 5 minute agentul rulează query-ul, găsește apelurile noi care se califică, și le trimite la portal printr-un endpoint REST. Pentru un dashboard de business e perfect — destul de rapid pentru re-apel coerent, dar fără să încarce CPU-ul centralei. Pentru clienți enterprise care vor sub 30 secunde oferim modul push bazat pe AMI listening. Pentru majoritatea cazurilor (vânzări, recepție, suport), 5 minute e exact echilibrul corect.
Cum se face re-apelul? Există buton „call" în dashboard?
Re-apelul se face DIN telefonul agentului — softphone (Blureon Phone, MicroSIP, Zoiper, etc.) sau telefon IP fizic. Smart Missed Calls NU e o aplicație de telefonie, e un dashboard de raportare/monitorizare. Magia e că **NU trebuie să faci nimic special** ca să marchezi entry-ul rezolvat: dacă agentul tău formează numărul apelantului dintr-o extensie cunoscută, agentul nostru detectează în următorul ciclu CDR că s-a re-apelat și închide entry-ul automat cu `cleared_by=returned`. Lista se actualizează singură. Plus, dacă ai click-to-call configurat pe extensia ta, poți copy-paste numărul direct în softphone-ul tău.
Cum funcționează aglomerarea — un client care insistă apare o dată sau de N ori?
O singură intrare. Cheia de aglomerare e `(client, caller_number, did)`. Primul apel ratat creează entry-ul cu `missed_count=1`. Următoarele apeluri ale aceluiași apelant pe același DID incrementează `missed_count`, actualizează `last_missed_at` și adaugă orice extensie nouă chemată în array-ul `extensions[]` (max 10, dedup). Asta îți permite să vezi instantaneu „Andrei a încercat de 6 ori, a sunat la 4 extensii diferite" — context util, nu zgomot. Plus, dacă entry-ul s-a închis și apelantul sună din nou ulterior, e re-deschis automat cu audit `reopened`.
Funcționează cu CRM-ul meu?
Pe lista entry-urilor, numele apelantului apare îmbogățit din CRM dacă ai configurat integrare (Odoo, HubSpot, Salesforce, Zoho — pe Pro/Enterprise). Pentru CRM-uri custom există webhook generic (portal POST-ează JSON la URL-ul tău cu retry exponential la fiecare event nou sau cleared). Pe planul Free, contextul vine doar din agenda companiei și caller ID brut. Important: SMC nu CREEAZĂ contacte automat în CRM — doar le citește pentru afișare. Dacă vrei activitate/task automat la fiecare apel ratat, asta se face prin webhook + workflow în CRM-ul tău.
Pot să verific dacă echipa închide cinstit entry-urile sau le marchează abuziv „rezolvat"?
Da, ăsta e exact rolul tabelului `smart_missed_calls_audit`. Append-only, scrie cu actor și timestamp fiecare event: created, incremented, notified, cleared (cu motivul exact — returned/answered_later/manual/expired), reopened. Pentru intrările `cleared_by=manual` ai user-ul care a făcut acțiunea, ora și nota lui. Ca admin poți redeschide o intrare suspectă cu `reopen` (audit-ul reține și asta). În practică, dacă un agent marchează manual „rezolvat" fără să fi re-apelat real, vei vedea: „cleared_manual de user 12, fără audit `cleared_returned` ulterior" — semnal clar.
Ce versiuni de FreePBX și VitalPBX sunt suportate? Și ce date pleacă de pe PBX?
FreePBX 14, 15, 16, 17 — citim asteriskcdrdb cu fallback dual: marker explicit `lastapp='missed_calls'` (handler-ul nativ FreePBX) SAU agregare CDR custom pe `linkedid`. VitalPBX 4.x cu suport multi-tenant — fiecare tenant izolat în propriul dashboard, propriul digest, propriul DPA. Datele care pleacă: caller_number, caller_name (dacă există în CDR), DID, route_label (queue/IVR/ring group), extensions[], missed_count, first_missed_at, last_missed_at, status, cleared_*. Fără audio, fără transcrieri, fără conținut conversațional. Vreodată.
Cum activez modulul pe centrala mea?
Trei pași: (1) cont pe portal.pbxtools.ro și adaugi PBX-ul (client + pbx_server config); (2) descarci agentul It4All cu cheia API generată — o linie copy-paste pe FreePBX/VitalPBX, instalează systemd service și pornește; (3) la nivel de Client activezi flag-ul `smart_missed_calls_enabled=true`, configurezi retention_days, allow_manual_resolve, frecvența de notificare și destinatarii. La următorul ciclu de keepalive (5 minute) vezi primul backfill de apeluri ratate din ultimele 24h. Pentru centralele cu volum mare, recomandăm să intri în dashboard în prima zi și să verifici că aglomerarea + auto-clear-ul lucrează cum te aștepți.

Vrei Smart Missed Calls pe centrala ta?

În prezent activăm modulul exclusiv pentru clienții centraletelefonice.ro. Spune-ne despre centrala ta și te punem pe lista de Early Access — niciun apel ratat nu mai trece neobservat.

💡 Ai o idee de funcționalitate sau integrare?

Ajută-ne să construim produsul ideal pentru afacerea ta.

Sugerează o funcționalitate

📬 Rămâi la curent

Abonează-te la newsletter-ul PBXTools și află primul când lansăm funcționalități noi.