Înregistrare
Înregistrarea e oprită, iar tăcerea nu e acord
Ce se înregistrează, ce i se spune apelantului, unde ajunge audio-ul, cât rămâne și ce se schimbă dacă bucket-ul e al tău. Inclusiv partea pe care mai toți furnizorii o lasă deoparte: o înregistrare trece prin stocarea noastră înainte să ajungă la a ta.
Înregistrarea e oprită până o pornești tu. Iar când o pornești, nu o anunță nimic: setarea de anunț e implicit tăcută, iar o defecțiune face ca ea să nu vorbească nici dacă ar fi setată.
Ce cer legea română și cea europeană
Un apel telefonic înregistrat înseamnă date cu caracter personal de ambele părți ale liniei, iar înregistrarea lui e o prelucrare care are nevoie de un temei din articolul 6 — de obicei consimțământul apelantului, uneori un contract, ocazional un interes legitim care supraviețuiește scrierii și cântăririi. Care dintre ele se aplică e o întrebare despre afacerea ta, iar pagina asta nu îți va răspunde la ea.
Ce nu e serios pus la îndoială e jumătatea de transparență. Omul de pe linie trebuie să afle, înainte să înceapă înregistrarea, că ea are loc și de ce, și trebuie să afle destul de limpede încât decizia lui de a rămâne pe linie să însemne ceva. În practică asta e o propoziție la începutul apelului, iar în România autoritatea de supraveghere a fost constantă: o notă îngropată într-o politică de pe site nu ține loc de ea.
Două chestiuni practice care îi prind pe oameni pe picior greșit. Consimțământul trebuie să fie la fel de ușor de retras pe cât e de dat, ceea ce pentru un apel telefonic înseamnă că un apelant care spune „nu mă mai înregistra” trebuie să poată opri înregistrarea. Iar dacă apelul e cu un asistent cu inteligență artificială, aia e o a doua informare, separată — o singură propoziție le poate purta pe amândouă, dar niciuna nu ține loc de cealaltă.
Paginile astea descriu ce face acest program. Nu sunt consultanță juridică și nu decid dacă ce faci tu cu el e legal. Decizia aia e a ta și, în cazurile interesante, depinde de fapte despre afacerea ta pe care niciun program nu le poate vedea.
Oprită până o pornești
Înregistrarea se decide per asistent și per organizație, iar nimic nu înregistrează implicit. Când e pornită, audio-ul apelului e capturat de puntea vocală; planul de control nu atinge niciodată un cadru media, motiv pentru care fiecare decizie de mai jos e despre un fișier, nu despre un flux.
O înregistrare pornită poate fi pusă pe pauză și reluată în timpul apelului, iar un apel transferat la un operator uman produce o a doua înregistrare pentru acel capăt, adusă de la operatorul telecom după aceea, ca politica ta de păstrare să o guverneze în locul politicii lui.
| Implicit | Oprită. |
|---|---|
| Granularitate | Per asistent, în cadrul politicii organizației. |
| Cine o captează | Puntea vocală. Planul de control vede evidența, nu audio-ul. |
| După transfer | Capătul operatorului e adus de la operatorul telecom și stocat sub păstrarea ta, nu a lui. |
| Retragere | Un consimțământ refuzat pune înregistrarea pe pauză. Nu șterge ce s-a capturat deja. |
Cinci feluri de a-l anunța, iar implicit e niciunul
Produsul modelează lucrul ăsta cum trebuie. Există cinci moduri de anunț — să nu spună nimic, să redea un anunț standard, să îl spună asistentul, să redea un fișier audio al tău sau să rostească o formulare scrisă de tine — iar starea de consimțământ a unui apel e urmărită prin în așteptare, anunțat, acordat și refuzat, cu un comportament configurabil când un apelant refuză.
Și apoi două fapte desfac mai tot: amândouă își au locul pe pagina asta, nu într-o notă de versiune. Modul implicit e să nu spună nimic — în migrație, în politica de rezervă și în serviciul care o rezolvă. Iar în consolă și în API nu există nicio interfață prin care un client să schimbe politica de înregistrare la nivel de organizație — se setează din partea platformei.
Mai rău, și verificat chiar în timp ce se scria pagina asta: planul de la nivel de asistent se scrie în instantaneul apelului sub un nume și se citește sub altul, deci căutarea eșuează mereu, iar politica cade mereu pe valoarea implicită. Consecința practică e că azi nu se rostește niciun anunț în niciun apel, indiferent ce e configurat. E o eroare de program, e consemnată aici și e înaintea funcționalităților noi.
-
noneNu spune nimic. Valoarea implicită. Valoarea implicită -
announcementRedă anunțul standard înainte să vorbească asistentul. -
assistant_announcementÎl spune asistentul, cu vocea lui, ca parte din salut. -
custom_audioRedă un fișier audio încărcat de tine. -
custom_messageRostește o formulare scrisă de tine.
Audio-ul trece mai întâi prin bucket-ul nostru
Ăsta e paragraful pe care îl va găsi o analiză de rezidență a datelor, așa că stă în capul secțiunii, nu la coadă. Puntea vocală nu deține credențialele de stocare ale clienților — intenționat, fiindcă a da unui proces media cheile S3 ale unui client e un schimb mai prost — deci scrie înregistrarea terminată în bucket-ul platformei imediat ce se închide apelul. Dacă ți-ai configurat destinația ta, o sarcină din coadă copiază apoi obiectul și șterge sursa, și numai după ce copia e verificată.
Deci o înregistrare există în stocarea platformei atât cât îi ia acelei sarcini să ruleze. Dacă destinația ta e inaccesibilă, dezactivată sau greșit configurată atunci, obiectul rămâne în bucket-ul platformei în loc să se piardă, și rămâne acolo până când destinația funcționează.
Celelalte artefacte se poartă altfel și mai bine. Transcrierile, jurnalele de mesaje și exporturile de evenimente sunt scrise de planul de control, care are credențialele tale, deci merg direct în bucket-ul tău, fără copie intermediară. Și înregistrarea capătului de operator, adusă de la operatorul telecom, se scrie tot direct în bucket-ul tău.
| Înregistrarea asistentului | Întâi bucket-ul platformei, apoi mutată în al tău. Fereastra e o sarcină din coadă. |
|---|---|
| Înregistrarea operatorului | Adusă de la operatorul telecom și scrisă direct în bucket-ul tău. |
| Transcrieri și exporturi | Scrise direct în bucket-ul tău. Fără copie intermediară. |
| Dacă mutarea eșuează | Obiectul rămâne în bucket-ul platformei și se reîncearcă. Nu se șterge niciodată înainte ca copia să fie verificată. |
| Calea obiectului | Derivată din rândul apelului, niciodată din ceva ce furnizează un apelant. |
Cât trăiește audio-ul
O sarcină programată rulează în fiecare noapte la 03:15 și aplică politica de păstrare pentru fiecare organizație: tot ce a depășit fereastra se șterge din stocare, iar rândul rămâne marcat ca golit. Ferestrele de start sunt mai jos și sunt o valoare implicită de platformă, nu o recomandare — nouăzeci de zile de audio e mult, dacă nu ai motiv să îl ții.
„Zero data retention” e un mod separat, iar numele promite mai mult decât face. Golește conținutul unui apel — transcrieri, mesaje, argumente ale uneltelor, conținutul evenimentelor, rezumate — și șterge audio-ul, fie imediat la închiderea apelului, fie după o întârziere setată de tine. Ce nu face e să ceară ceva vreunui furnizor: audio-ul tot a ajuns la un furnizor de transcriere, iar textul tot a ajuns la un model, sub păstrarea lor, nu a noastră. Șterge copia noastră. Nimic mai mult, iar sursa o spune.
Ce supraviețuiește oricăreia dintre căile astea e forma apelului: identificatorii, ambele numere de telefon, marcajele de timp, durata, secundele facturabile, rândurile de cost și urma de audit. Numerele rămân în indexul de căutare, deci un apel poate fi găsit după număr și după ce conținutul lui a dispărut.
| Înregistrări | Implicit 90 de zile. |
|---|---|
| Transcrieri și rezultate structurate | Implicit 365 de zile. |
| Evenimente și jurnale | Implicit 90 de zile. |
| Analitice | Nu se aplică nicio fereastră. Se păstrează. |
| Urma de audit | Fără fereastră. Înregistrările nu pot fi șterse. |
| Zero data retention | Doar copia noastră. Niciun furnizor nu e rugat să nu păstreze nimic. |
Doar text, după apel, și implicit oprită
Mascarea datelor personale rescrie transcrierile, conținutul mesajelor și conținutul evenimentelor după un apel, înlocuind numerele de card — verificate cu Luhn, ca o referință de comandă de șaisprezece cifre să nu fie mascată degeaba — adresele de e-mail, numerele de telefon, codurile IBAN și identificatorii naționali, inclusiv CNP-ul. Marcajele de timp de la nivel de cuvânt se aruncă în același moment, fiindcă păstrarea lor ar desface mascarea cuvânt cu cuvânt.
Trei limite, și fiecare contează mai mult decât funcția însăși. E oprită până o pornești. Nu atinge niciodată audio-ul: un număr de card citit cu voce tare rămâne pe înregistrare, iar comutatorul care sugerează altceva nu e implementat de niciuna dintre părți. Și e o rescriere a datelor pe care le avem deja, aplicată după apel — textul nemascat a existat în baza de date și a ajuns la furnizorul de transcriere și la model înainte să existe măcar aici.
Dacă un apelant nu trebuie să rostească niciodată un număr de card către un asistent, mascarea nu e controlul potrivit. Controlul potrivit e să nu i se ceară unul.
Ce se schimbă când stocarea e a ta
Alegi furnizorul și regiunea, poți aplica propriile reguli de ciclu de viață, iar obiectul încetează să mai stea pe infrastructura noastră odată ce mutarea se încheie. Pentru o organizație ale cărei înregistrări sunt guvernate de politica altcuiva, aia e diferența care face produsul utilizabil.
Patru lucruri pe care nu le schimbă, enumerate fiindcă fiecare a surprins pe cineva. Înregistrarea tot trece prin bucket-ul platformei pe drum. Citirile tot merg prin adrese semnate de noi, care expiră în cincisprezece minute, deci rămânem pe traseul de acces. Credențialele tale sunt criptate cu o cheie separată de cheia aplicației, iar varianta cu rol AWS evită complet o pereche de chei de lungă durată. Și fereastra de păstrare de pe o destinație e stocată, dar nu e aplicată — păstrarea rulează din politica organizației tale, nu din bucket.
Încă unul, și e motivul pentru care pagina de stocare spune „suportat”, nu „dovedit”: niciun bucket de client nu a fost legat vreodată de o instalare vie. Sonda de scriere, citire, comparare și ștergere trece, iar aia e altă afirmație decât un an de trafic în producție.
O cale către un om, care e chiar rostul publicării
Un acord de prelucrare pe care nimeni nu îl poate întreba nimic e un PDF. Dacă analiza ta găsește ceva ce pagina nu acoperă sau ceva greșit, formularul ajunge la omul care a scris-o.
Celelalte documente europene
Niciunul dintre cele șapte documente din set nu a trecut pe la un avocat. Sunt declarații inginerești despre un sistem care rulează, publicate fiindcă o descriere greșită e mai rea decât una lipsă, și vor fi revizuite înainte să i se ceară cuiva să semneze ceva.
Note
-
1
Rularea nocturnă e
callagent:calls:apply-retention, programată la 03:15 înbootstrap/app.php. -
2
Sarcina de mutare e
app/Jobs/Storage/RelocateArtifactToStorageDestination.php; verifică scrierea la destinație înainte să șteargă sursa. - 3 Valorile implicite de păstrare sunt valori implicite de coloană pe tabelul organizațiilor: 90 de zile pentru înregistrări și evenimente, 365 pentru transcrieri.
-
4
Mascarea e
app/Services/Calls/PiiRedactionService.php, pornită din finalizatorul apelului și doar când o cere politica.