Diferență între revizuiri ale paginii „Infrastructură pentru pronunții”

fără descrierea modificării
(Pagină nouă: Acesta este un document de design pentru adăugarea pronunțiilor la DEX online. El discută strict pronunția umană, nu cu un sintetizator de voce. Acest proiect începe printr-...)
 
Linia 1: Linia 1:
Acesta este un document de design pentru adăugarea pronunțiilor la DEX online. El discută strict pronunția umană, nu cu un sintetizator de voce.
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:
Acest proiect începe printr-un parteneriat cu o fundație și o agenție de media. Scenariul este:
Linia 5: Linia 5:
* Fundația derulează o campanie umanitară, dezvoltată împreună cu agenția de media;
* Fundația derulează o campanie umanitară, dezvoltată împreună cu agenția de media;
* Utilizatorii sunt rugați să doneze bani prin SMS;
* Utilizatorii sunt rugați să doneze bani prin SMS;
* Donatorii capătă dreptul de a înregistra pronunția unui cuvânt pe DEX online
* Donatorii capătă dreptul de a înregistra pronunția unui cuvânt pe ''dexonline''.


== Pasul 1: Autentificarea donatorilor ==
== 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 (DEX online nu are controlul asupra acestui pas). DEX online trebuie să comunice cu dispecerul pentru a afla dacă un utilizator al site-ului are sau nu dreptul de a înregistra o pronunție.
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ă) ===
=== Metoda 1 (recomandată) ===


* Dispecerul creează un serviciu web pe care DEX online îl poate folosi pentru a valida un număr de telefon, de exemplu `http://dispecer.ro/api/validareNumar?nr=0720123456`
* 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
* 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 primește un SMS de la un donator
* Dispecerul salvează numărul de telefon într-o bază de date
* Dispecerul salvează numărul de telefon într-o bază de date
* Donatorul vizitează pagina DEX online de înregistrare a pronunției și introduce numărul său de telefon
* Donatorul vizitează pagina ''dexonline'' de înregistrare a pronunției și introduce numărul său de telefon
* DEX online accesează serviciul dispecerului pentru a valida numărul
* ''Dexonline'' accesează serviciul dispecerului pentru a valida numărul


=== Metoda 2 ===
=== Metoda 2 ===


* DEX online 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`
* ''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 primește un SMS de la un donator
* Dispecerul accesează serviciul DEX online pentru a semnala numărul donatorului
* Dispecerul accesează serviciul ''dexonline'' pentru a semnala numărul donatorului
* Donatorul vizitează pagina DEX online de înregistrare a pronunției și introduce numărul său de telefon
* 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, DEX online ține minte „creditul”: câte pronunții mai are dreptul să înregistreze donatorul
* Pentru utilizatorii care au donat de mai multe ori, ''dexonline'' ține minte „creditul”: câte pronunții mai are dreptul să înregistreze donatorul
* DEX online verifică dacă numărul introdus are credit
* ''Dexonline'' verifică dacă numărul introdus are credit


=== Metoda 3 ===
=== Metoda 3 ===


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


=== Metoda 4 ===
=== Metoda 4 ===


* DEX online 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`
* ''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 primește un SMS de la un donator
* Dispecerul generează un cod unic pe care îl salvează într-o bază de date
* Dispecerul generează un cod unic pe care îl salvează într-o bază de date
* Dispecerul îi trimite codul donatorului
* Dispecerul îi trimite codul donatorului
* Dispecerul accesează serviciul DEX online pentru a semnala emiterea unui nou cod
* Dispecerul accesează serviciul ''dexonline'' pentru a semnala emiterea unui nou cod
* Donatorul vizitează pagina DEX online de înregistrare a pronunției și introduce codul
* Donatorul vizitează pagina ''dexonline'' de înregistrare a pronunției și introduce codul
* DEX online verifică dacă codul introdus a fost într-adevăr emis
* ''Dexonline'' verifică dacă codul introdus a fost într-adevăr emis


== Înregistrarea pronunției ==
== Înregistrarea pronunției ==
Linia 98: Linia 98:
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.
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 DEX online să aibă acces la numerele de telefon ale donatorilor, pe care aceștia le introduc pe pagina de întâmpinare. Evident, DEX online se angajează să nu salveze aceste numere și să nu facă nimic altceva cu ele decât să le verifice.
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 DEX online să salveze date despre fiecare număr (cel puțin creditul). Pentru a nu avea de-a face cu date personale, DEX online va salva o funcție one-way a numărului de telefon (md5, de exemplu).
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.
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.