Infrastructură pentru pronunții

De la dexonline wiki
Versiunea din 9 septembrie 2015 17:53, autor: Cătălin.Frâncu (discuție | contribuții) (→‎Metoda 1 (recomandată))
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)
Sari la navigare Sari la căutare

Acesta este un document de design pentru adăugarea pronunțiilor la dexonline. El discută strict pronunția umană, nu cu un sintetizator de voce.

Acest proiect începe printr-un parteneriat cu o fundație și o agenție de media. Scenariul este:

  • Fundația derulează o campanie umanitară, dezvoltată împreună cu agenția de media;
  • Utilizatorii sunt rugați să doneze bani prin SMS;
  • Donatorii capătă dreptul de a înregistra pronunția unui cuvânt pe dexonline.

Pasul 1: Autentificarea donatorilor

Trebuie ca numai donatorii să aibă dreptul de a introduce o pronunție. Presupunem existența unui dispecer care înregistrează SMS-urile primite (dexonline nu are controlul asupra acestui pas). Dexonline trebuie să comunice cu dispecerul pentru a afla dacă un utilizator al site-ului are sau nu dreptul de a înregistra o pronunție.

Metoda 1 (recomandată)

  • Dispecerul creează un serviciu web pe care dexonline îl poate folosi pentru a valida un număr de telefon, de exemplu http://dispecer.ro/api/validareNumar?nr=0720123456.
  • Pentru utilizatorii care au donat de mai multe ori, serviciul raportează și „creditul”: câte pronunții mai are dreptul să înregistreze donatorul.
  • Dispecerul primește un SMS de la un donator.
  • Dispecerul salvează numărul de telefon într-o bază de date.
  • Donatorul vizitează pagina dexonline de înregistrare a pronunției și introduce numărul său de telefon.
  • Dexonline accesează serviciul dispecerului pentru a valida numărul.

Metoda 2

  • Dexonline creează un serviciu web pe care dispecerul îl poate folosi pentru a semnala un număr de telefon de la care s-a donat, de exemplu `http://dexonline.ro/api/numarValid?cod=09fe28dce4e3`
  • Dispecerul primește un SMS de la un donator
  • Dispecerul accesează serviciul dexonline pentru a semnala numărul donatorului
  • Donatorul vizitează pagina dexonline de înregistrare a pronunției și introduce numărul său de telefon
  • Pentru utilizatorii care au donat de mai multe ori, dexonline ține minte „creditul”: câte pronunții mai are dreptul să înregistreze donatorul
  • Dexonline verifică dacă numărul introdus are credit

Metoda 3

  • Dispecerul creează un serviciu web pe care dexonline îl poate folosi pentru a verifica validitatea unui cod, de exemplu `http://dispecer.ro/api/validareCod?cod=XIALSLQSLE`
  • Dispecerul primește un SMS de la un donator
  • Dispecerul generează un cod unic pe care îl salvează într-o bază de date
  • Dispecerul îi trimite codul donatorului
  • Donatorul vizitează pagina dexonline de înregistrare a pronunției și introduce codul
  • Dexonline accesează serviciul dispecerului pentru a valida codul

Metoda 4

  • Dexonline creează un serviciu web pe care dispecerul îl poate folosi pentru a semnala un cod valid, de exemplu `http://dexonline.ro/api/codValid?cod=XIALSLQSLE`
  • Dispecerul primește un SMS de la un donator
  • Dispecerul generează un cod unic pe care îl salvează într-o bază de date
  • Dispecerul îi trimite codul donatorului
  • Dispecerul accesează serviciul dexonline pentru a semnala emiterea unui nou cod
  • Donatorul vizitează pagina dexonline de înregistrare a pronunției și introduce codul
  • Dexonline verifică dacă codul introdus a fost într-adevăr emis

Înregistrarea pronunției

După autentificare, donatorul vede o pagină cu următoarele elemente:

  • o modalitate de selectare a cuvântului pe care dorește să-l pronunțe;
  • o modalitate de introducere a unei capturi de microfon;
  • un câmp unde introduce numele sub care vrea să apară;
  • informații despre sisteme compatibile, recomandări pentru o înregistrare bună etc.

El trebuie să poată asculta înregistrarea sa și să o poată repeta până când este mulțumit de rezultat.

După ce ne trimite formularul, donatorul primește o pagină de mulțumire și informații despre procesul de moderare.

Captura de microfon

Acest aspect este de departe cel mai spinos. Nu există un standard bine definit, portabil pe toate browserele majore și implementabil cu tehnologii libere.

  • nu dorim să folosim Flash sau Silverlight, căci nu sunt tehnologii libere
  • în HTML 4 nu este posibil ca o pagină să preia controlul microfonului
  • în HTML 5 este posibil cu `getUserMedia()`, care însă este suportat numai în Chrome, Firefox și Opera (NU în IE sau Safari)

Vom investiga.

Moderarea

Pronunția nu devine activă până când nu este editată și aprobată de un moderator. Interfața noastră de moderare va permite următoarele operații:

  • eliminarea zgomotului de fond
  • eliminarea tăcerii de la începutul / sfârșitul pronunției
  • opțional, editarea și decuparea în format grafic (undă de sunet)

Avem nevoie de o modalitate de a-i comunica donatorului aprobarea sau respingerea înregistrării.

Metoda 1 (recomandată)

La trimitere, donatorul furnizează și adresa de e-mail. La aprobarea sau la respingerea înregistrării, sistemul îi trimite un mesaj autogenerat. Dacă înregistrarea a fost respinsă, utilizatorul poate încerca din nou. Această metodă este mai naturală, dar presupune divulgarea adresei de e-mail.

Metoda 2

Donatorul poate vizita periodic o pagină cu informații despre starea moderării. Accesul la pagină se face pe baza numărului de telefon. Dezavantajul este că oricine poate verifica numărul de telefon al altcuiva.

Metoda 3

După ce trimite înregistrarea, donatorul primește un cod unic. Pe baza acestui cod, el poate vizita periodic o pagină cu informații despre starea moderării.


Limitări și avertismente

Metodele 3 și 4 de autentificare suferă de un neajuns. Ele cer ca dispecerul să-i comunice un cod unic donatorului. Înțelegem că acest pas este problematic. Campaniile umanitare sunt în general configurate să răspundă cu un SMS generic de mulțumire, dar nu pot să răspundă cu un SMS personalizat cu un cod unic.

Metoda 1 presupune ca dexonline să aibă acces la numerele de telefon ale donatorilor, pe care aceștia le introduc pe pagina de întâmpinare. Evident, dexonline se angajează să nu salveze aceste numere și să nu facă nimic altceva cu ele decât să le verifice.

Metoda 2 presupune ca dexonline să salveze date despre fiecare număr (cel puțin creditul). Pentru a nu avea de-a face cu date personale, dexonline va salva o funcție one-way a numărului de telefon (md5, de exemplu).

Este bine să permitem o singură înregistrare pentru un cuvânt, sau el poate fi revendicat de mai mulți donatori? Noi nu avem o preferință în acest sens. Din punct de vedere tehnic, pronunțiile multiple sunt mai simplu de implementat, căci nu trebuie programat un mecanism de excludere pe durata moderării. Dacă vom permite mai multe pronunții, le vom roti aleator.