Filme porno

Categorii

Advertising

Arhitectura si interfete multimodale

Starea acestui document

Aceasta sectiune descrie starea acestui document in momentul publicarii acestuia. Alte documente pot inlocui acest document. O lista a publicatiilor curente W3C si cea mai recenta revizuire a acestui raport tehnic pot fi gasite in indexul rapoartelor tehnice W3C la http://www.w3.org/TR/.

Acest document este al saptelea proiect public de lucru al „Arhitecturii si interfetelor multimodale” publicat la 21 septembrie 2010 pentru revizuire de catre membrii W3C si alte parti interesate si a fost elaborat de Grupul de lucru pentru interactiune multimodala ca parte a activitatii de interactiune multimodala W3C. Principalele modificari normative fata de proiectul anterior sunt:

  • includerea graficelor de stat pentru componentele modalitatii.
  • adaugarea unui camp „confidential” la evenimentele din ciclul vietii.
  • eliminarea campului „media” din evenimentele ciclului de viata.

O versiune marcata de acest document este, de asemenea, disponibila in scopuri comparative. Va rugam sa retineti ca multe sectiuni au fost modificate din cauza modificarilor de mai sus, editorii ar dori ca cititorii sa citeasca cu atentie intregul document si sa ofere comentarii.

Comentariile pentru aceasta specificatie sunt binevenite si ar trebui sa aiba un subiect care incepe cu prefixul „[ARCH]”. Va rugam sa le trimiteti la [email protected], lista publica de e-mail pentru probleme legate de Multimodal. Aceasta lista este arhivata si acceptarea acestei politici de arhivare este solicitata automat la prima postare. Pentru a va abona la aceasta lista, trimiteti un e-mail la adresa [email protected]> cu cuvantul subscribe in linia subiectului.

Pentru mai multe informatii despre activitatea de interactiune multimodala, va rugam sa consultati declaratia privind activitatea de interactiune multimodala.

Acest document a fost produs de un grup care isi desfasoara activitatea in conformitate cu politica de brevete W3C din 5 februarie 2004. W3C mentine o lista publica a oricaror dezvaluiri de brevete facute in legatura cu livrabilele grupului; acea pagina include, de asemenea, instructiuni pentru dezvaluirea unui brevet. O persoana care are cunostinte reale despre un brevet despre care individul considera ca contine revendicari esentiale trebuie sa dezvaluie informatiile in conformitate cu sectiunea 6 din Politica W3C privind brevetele.

Publicarea ca proiect de lucru nu implica aprobarea de catre membrii W3C. Acesta este un proiect de document si poate fi actualizat, inlocuit sau invechit de alte documente in orice moment. Nu este adecvat sa citesti acest document ca altceva decat lucrarile in curs.

1 Rezumat

Acest document descrie o arhitectura slab cuplata pentru interfetele de utilizator multimodale, care permite implementari co-rezidente si distribuite, si se concentreaza pe rolul de markup si scripting si pe utilizarea interfetelor bine definite intre componentele sale.

2 Prezentare generala

Acest document descrie arhitectura cadrului de interactiune multimodala (MMI) [MMIF] si interfetele dintre componentele sale. Grupul de lucru MMI este constient de faptul ca interfetele multimodale sunt o zona de cercetare activa si ca implementarile comerciale abia incep sa apara. Prin urmare, nu consideram obiectivul nostru ca standardizarea unei practici comune ipotetice existente, ci mai degraba furnizarea unei platforme care sa faciliteze inovarea si dezvoltarea tehnica. Astfel, scopul acestui design este de a oferi un cadru general si flexibil care sa asigure interoperabilitatea intre componentele specifice modalitatii de la diferiti furnizori – de exemplu, recunoasterea vorbirii de la un furnizor si recunoasterea scrisului de mana de la altul. Acest cadru pune foarte putine restrictii asupra componentelor individuale sau asupra interactiunilor lor intre ele,

Cadrul nostru este motivat de mai multe obiective de baza de proiectare:

  • Incapsularea. Arhitectura nu ar trebui sa faca presupuneri cu privire la implementarea interna a componentelor, care vor fi tratate ca niste cutii negre.
  • Distributie. Arhitectura ar trebui sa accepte implementari distribuite si co-gazduite.
  • Extensibilitate. Arhitectura ar trebui sa faciliteze integrarea noilor componente de modalitate. De exemplu, avand in vedere o implementare existenta cu componente vocale si grafice, ar trebui sa fie posibila adaugarea unei noi componente (de exemplu, o componenta de securitate biometrica) fara a modifica componentele existente.
  • Recursivitate. Arhitectura ar trebui sa permita cuibarirea, astfel incat o instanta a cadrului format din mai multe componente sa poata fi impachetata pentru a aparea ca o singura componenta la o instanta de nivel superior a arhitecturii.
  • Modularitate. Arhitectura ar trebui sa prevada separarea datelor, controlul si prezentarea.

Chiar daca interfetele multimodale nu sunt inca comune, industria software in ansamblu are o experienta considerabila cu arhitecturi care pot indeplini aceste obiective. De exemplu, din anii 1980, sistemele distribuite bazate pe mesaje au fost comune. Acestea au fost utilizate pentru o gama larga de sarcini, inclusiv in special sistemele de telefonie high-end. In aceasta paradigma, sistemul general este impartit in componente individuale care comunica prin trimiterea de mesaje prin retea. Deoarece mesajele sunt singurul mijloc de comunicare, componentele interne ale componentelor sunt ascunse si sistemul poate fi implementat intr-o varietate de topologii, fie distribuite, fie co-localizate. O instanta specifica a acestui tip de sistem este DARPA Hub Architecture, cunoscuta si sub numele de Galaxy Communicator Software Infrastructure [Galaxy]. Acesta este un distribuit, bazat pe mesaje, infrastructura hub-and-vorbita conceputa pentru construirea sistemelor de dialog vorbit. A fost dezvoltat la sfarsitul anilor 1990 si inceputul anilor 2000, sub finantare de la DARPA. Aceasta infrastructura include un program numit Hub, impreuna cu servere care ofera functii precum recunoasterea vorbirii, procesarea limbajului natural si gestionarea dialogului. Serverele comunica cu Hub-ul si intre ele folosind structuri cheie-valoare numite cadre.

O alta arhitectura recenta care este relevanta pentru preocuparile noastre este paradigma model-view-controller (MVC). Acesta este un model de design bine cunoscut pentru interfetele utilizator in limbaje de programare orientate obiect si a fost utilizat pe scara larga cu limbaje precum Java, Smalltalk, C si C ++. Modelul de proiectare propune trei parti principale: un model de date care reprezinta structura logica a datelor si constrangerile de integritate asociate, una sau mai multe vizualizari care corespund obiectelor cu care utilizatorul interactioneaza direct si un controlercare se afla intre modelul de date si vizualizari. Separarea dintre date si interfata utilizator ofera o flexibilitate considerabila in modul in care sunt prezentate datele si modul in care utilizatorul interactioneaza cu acele date. In timp ce paradigma MVC a fost aplicata in mod traditional la interfetele grafice ale utilizatorului, se preteaza la contextul mai larg al interactiunii multimodale in care utilizatorul este capabil sa utilizeze o combinatie de modalitati vizuale, sonore si tactile.

3 Consideratii de proiectare versus timp de executie

In discutarea proiectarii sistemelor MMI, este important sa se tina cont de distinctia dintre vizualizarea timpului de proiectare (adica, marcajul) si vizualizarea timpului de rulare (software-ul care executa marcajul). La nivel de proiectare, presupunem ca aplicatiile multimodale vor lua forma mai multor documente din spatii de nume diferite. In multe cazuri, diferitele spatii de nume si limbaje de marcare vor corespunde unor modalitati diferite, dar nu avem nevoie de acest lucru. O singura limba poate acoperi mai multe modalitati si pot exista mai multe limbi pentru o singura modalitate.

In timpul rularii, arhitectura MMI prezinta elemente software cuplate slab, care pot fi fie co-rezidente pe un dispozitiv, fie distribuite pe o retea. In conformitate cu natura slab cuplata a arhitecturii, constituentii nu impartasesc contextul si comunica doar schimband evenimente. Natura acestor elemente constitutive si API-urile dintre ele este discutata mai detaliat in sectiunile 3-5 de mai jos. Desi nimic in arhitectura MMI nu necesita o corespondenta speciala intre vizualizarile in timp de proiectare si in timpul rularii, in multe cazuri, va exista o componenta software specifica responsabila pentru fiecare limbaj de markup (spatiu de nume).

3.1 Markup si vizualizarea timpului de proiectare

La nivel de markup, o aplicatie consta din mai multe documente. Un singur document poate contine marcaje din spatii de nume diferite daca interactiunea dintre aceste spatii de nume a fost definita (de exemplu, ca parte a Activitatii de formate de documente compuse [CDF].) Prin principiul incapsularii, totusi, structura interna a documentelor este invizibila nivelul MMI, care defineste doar modul in care comunica diferitele documente. Un document are un statut special, si anume Documentul Root sau Controler, care contine marcaje care definesc interactiunea dintre celelalte documente. Un astfel de markup se numeste Interaction Manager markup. Celelalte documente se numesc Documente de prezentare, deoarece contin marcaje pentru a interactiona direct cu utilizatorul. Documentul controlerului poate consta exclusiv din marcarea Interaction Manager (de exemplu, o masina de stare definita in CCXML [CCXML] sau SCXML [SCXML]) sau poate contine marcajul Interaction Manager combinat cu prezentarea sau alt markup. Ca exemplu al ultimului design, luati in considerare o aplicatie multimodala in care un document CCXML ofera functionalitate de control al apelurilor, precum si controlul fluxului pentru diferitele documente de prezentare. In mod similar, un document de control al fluxului SCXML ar putea contine marcaje de prezentare incorporate in plus fata de marcajul sau nativ de gestionare a interactiunilor. luati in considerare o aplicatie multimodala in care un document CCXML ofera functionalitati de control al apelurilor, precum si controlul fluxului pentru diferitele documente de prezentare. In mod similar, un document de control al fluxului SCXML ar putea contine marcaje de prezentare incorporate in plus fata de marcajul sau nativ de gestionare a interactiunilor. luati in considerare o aplicatie multimodala in care un document CCXML ofera functionalitati de control al apelurilor, precum si controlul fluxului pentru diferitele documente de prezentare. In mod similar, un document de control al fluxului SCXML ar putea contine marcaj de prezentare incorporat, in plus fata de marcajul sau nativ de gestionare a interactiunilor.

Aceste relatii sunt recursive, astfel incat orice document de prezentare poate servi drept document de control pentru un alt set de documente. Aceasta structura imbricata este similara cu modelul „Papusa Rusa” a componentelor de modalitate, descris mai jos in 3.2 Componente software si Vizualizarea timpului de rulare .

Diferitele documente sunt cuplate slab si coexista fara a interactiona direct. Retineti in special ca nu exista variabile partajate care ar putea fi utilizate pentru a transmite informatii intre ele. In schimb, toate comunicarile in timpul rularii sunt gestionate de evenimente, asa cum este descris mai jos in 5.1 Campuri comune de evenimente .

Mai mult, este important sa retineti ca asincronicitatea mecanismului de comunicare subiacent nu impune cerinta ca limbajele de markup sa prezinte dezvoltatorului un model de programare pur asincron. Avand in vedere principiul incapsularii, limbajele de marcare nu sunt necesare pentru a reflecta direct arhitectura si API-urile definite aici. De exemplu, luati in considerare o implementare care contine o componenta de modalitate care ofera functionalitate Text-to-Speech (TTS). Aceasta componenta trebuie sa comunice cu Managerul de interactiuni prin evenimente asincrone (vezi 3.2 Componente software si Vizualizarea timpului de rulare). Intr-o implementare tipica, ar exista probabil evenimente pentru a incepe o redare TTS si pentru a raporta sfarsitul redarii etc. Cu toate acestea, marcajul si scripturile care au fost utilizate pentru a crea acest sistem ar putea oferi doar un apel sincron „redare TTS” , sarcina implementarii de baza fiind convertirea acelui apel sincron in secventa adecvata de evenimente asincrone. De fapt, nu exista nicio cerinta ca resursa TTS sa fie accesibila individual. Ar fi foarte posibil ca marcajul sa prezinte doar un singur apel „reda TTS si sa recunoasca vorbirea”, pe care implementarea de baza l-ar realiza ca o serie de evenimente asincrone care implica mai multe componente.

Limbile existente, cum ar fi XHTML, pot fi utilizate fie ca documente de control, fie ca documente de prezentare. Alte exemple de componente potentiale de marcare sunt date in 4.2.7 Exemple

3.2 Componente software si vizualizarea timpului de rulare

La baza arhitecturii de rulare MMI se afla distinctia dintre Interaction Manager (IM) si Componentele de modalitate, care este similara cu distinctia dintre documentul controlerului si documentele de prezentare. Managerul de interactiuni interpreteaza documentul controlerului, in timp ce componentele individuale ale modalitatii sunt responsabile pentru sarcini specifice, in special gestionarea intrarilor si iesirilor in diferite modalitati, cum ar fi vorbirea, stiloul, videoclipul etc.

Managerul de interactiuni primeste toate evenimentele generate de diferitele componente ale modalitatii. Aceste evenimente pot fi comenzi sau raspunsuri la comenzi si este de competenta managerului de interactiuni sa decida ce sa faca cu ele, adica ce evenimente sa genereze ca raspuns la acestea.

Array

In general, arhitectura MMI urmeaza un model de eveniment „fara tinta”. Adica, componenta care genereaza un eveniment nu specifica destinatia acestuia. Mai degraba, il transmite catre Runtime Framework, care il va transmite Managerului de interactiuni. IM, la randul sau, decide daca sa redirectioneze evenimentul catre alte componente sau sa genereze un eveniment diferit etc.

Componentele Modality sunt cutii negre, necesare doar pentru a implementa API-ul Interface Component Modality, care este descris mai jos. Acest API permite Componentelor Modalitatii sa comunice cu IM si, prin urmare, unul cu celalalt, deoarece IM este responsabil pentru transmiterea evenimentelor / mesajelor intre Componente. Deoarece internele unei componente sunt ascunse, este posibil ca un manager de interactiuni si un set de componente sa se prezinte ca o componenta unui manager de interactiune de nivel superior. Tot ce este necesar este ca IM sa implementeze API-ul componentelor. Rezultatul este un model „Doll Doll” in care componentele pot fi cuibarite in interiorul altor componente la o adancime arbitrara. Cuibarirea componentelor in acest mod este o modalitate de a produce o componenta de moda „complexa”, si anume una care gestioneaza mai multe modalitati simultan. In orice caz,4.2.3 Componentele modalitatii .

Pe langa Managerul de interactiune si componentele modalitatii, exista un Runtime Framework care ofera suport pentru infrastructura, in special un strat de transport care ofera evenimente printre componente.

Deoarece folosim termenul „Componenta” pentru a ne referi la un set specific de entitati din arhitectura noastra, vom folosi termenul „Constituent” ca termen de acoperire pentru toate elementele din arhitectura noastra care ar putea fi numite in mod normal „componente software”.

3.3 Diferente fata de formatele de documente compuse

Activitatea W3C Compound Document Formats [CDF] se refera, de asemenea, la executarea interfetelor utilizator scrise in mai multe limbi. Cu toate acestea, grupul CDF se concentreaza pe definirea interactiunilor unor seturi specifice de limbi intr- un singur document, care poate fi definit prin includere sau prin referinta. Arhitectura MMI, pe de alta parte, defineste interactiunea seturilor arbitrare de limbaje in mai multedocumente. Din punct de vedere MMI, documentele mixte de marcare definite de specificatiile CDF sunt tratate ca orice alte documente si pot fi fie Controlor, fie Documente de prezentare. In cele din urma, retineti ca limbile strans cuplate gestionate de CDF vor impartasi de obicei contexte de date si scripturi, in timp ce arhitectura MMI se concentreaza pe o cuplare mai slaba, fara context partajat. Lipsa contextului partajat faciliteaza distribuirea aplicatiilor pe o retea si pune, de asemenea, constrangeri minime asupra limbilor din diversele documente. Ca urmare, autorii vor avea optiunea de a construi aplicatii multimodale intr-o mare varietate de limbi pentru o gama larga de scenarii de implementare. Credem ca aceasta flexibilitate este importanta pentru dezvoltarea in continuare a industriei.

3.4 Relatia cu EMMA

Limbajul de adnotare multimodala extinsa [EMMA], este un set de specificatii pentru sistemele multimodale si ofera detalii despre un limbaj de marcare XML pentru continerea si adnotarea interpretarii intrarilor utilizatorului. De exemplu, un utilizator al unei aplicatii multimodale poate folosi atat vorbirea pentru a exprima o comanda, cat si gestul de apasare a tastelor pentru a selecta sau a desena parametrii comenzii. Modalitatea de recunoastere a vorbirii ar exprima comanda utilizatorului folosind EMMA pentru a indica sursa de intrare (vorbire). Modalitatea gestului stiloului ar exprima parametrii de comanda folosind EMMA pentru a indica sursa de intrare (gesturile stiloului). Ambele modalitati pot include informatii de sincronizare in notatia EMMA. Folosind informatiile de sincronizare, un modul de fuziune combina informatiile despre gestul vorbirii si stiloului intr-o singura notatie EMMA reprezentand atat comanda, cat si parametrii sai.

4 Prezentare generala a arhitecturii

Iata o lista a elementelor constitutive ale arhitecturii MMI. Acestea sunt discutate mai detaliat mai jos.

  • Managerul de interactiuni, care coordoneaza diferitele modalitati. Este controlerul in paradigma MVC.
  • Componenta de date, care vizeaza modelul de date comun si reprezinta modelul in paradigma MVC.
  • Componentele modalitatii, care ofera capacitati de interactiune specifice modului. Ele sunt punctele de vedere din paradigma MVC.
  • Runtime Framework, care ofera infrastructura de baza si permite comunicarea intre ceilalti constituenti.

4.1 Diagrama arhitecturii in timp de executie

4.2 Constituentii

Aceasta sectiune prezinta responsabilitatile diferitilor constituenti ai arhitecturii MMI.

4.2.1 Managerul de interactiuni

Interaction Manager (IM) este responsabil pentru gestionarea tuturor evenimentelor generate de celelalte componente. In mod normal, va exista un markup specific asociat cu IM care ii va instrui cum sa raspunda la evenimente. Acest markup va contine astfel o multime de logica de interactiune de baza a unei aplicatii. Limbile existente, cum ar fi SMIL, CCXML, SCXML sau ECMAScript, pot fi utilizate pentru marcarea IM ca o alternativa la definirea limbajelor cu scop special destinate in mod special aplicatiilor multimodale. IM indeplineste mai multe functii. De exemplu, este responsabil pentru sincronizarea datelor si focalizarea etc., intre diferite componente ale modalitatii, precum si fluxul de aplicatii de nivel superior, care este independent de componentele modalitatii. De asemenea, mentine modelul de date la nivel inalt al aplicatiilor si poate gestiona comunicarea cu entitati externe si sisteme back-end. In viitor, putem imparti aceste functii si sa definim diferite componente pentru fiecare dintre ele. Cu toate acestea, pentru moment, le lasam infasurate intr-o singura componenta monolitica Interaction Manager. Observam ca limbajele masinilor de stare, cum ar fi SCXML, sunt o alegere buna pentru crearea unei astfel de componente multifunctionale, deoarece masinile de stare pot fi compuse. Astfel, este posibil sa se defineasca o masina de stare de nivel inalt care sa reprezinte fluxul general de aplicatie, cu masini de stare de nivel inferior imbricate in interiorul acesteia care gestioneaza sincronizarea modalitatii incrucisate la fiecare faza a fluxului de nivel superior. Observam ca limbajele masinilor de stare, cum ar fi SCXML, sunt o alegere buna pentru crearea unei astfel de componente multifunctionale, deoarece masinile de stare pot fi compuse. Astfel, este posibil sa se defineasca o masina de stare de nivel inalt care sa reprezinte fluxul general de aplicatie, cu masini de stare de nivel inferior imbricate in interiorul acesteia care gestioneaza sincronizarea modalitatii incrucisate la fiecare faza a fluxului de nivel superior. Observam ca limbajele masinilor de stare, cum ar fi SCXML, sunt o alegere buna pentru crearea unei astfel de componente multifunctionale, deoarece masinile de stare pot fi compuse. Astfel, este posibil sa se defineasca o masina de stare de nivel inalt care sa reprezinte fluxul general de aplicatie, cu masini de stare de nivel inferior imbricate in interiorul acesteia care gestioneaza sincronizarea modalitatii incrucisate la fiecare faza a fluxului de nivel superior.

Datorita modelului de papusa rusa, componentele pot contine proprii manageri de interactiune pentru a gestiona evenimentele lor interne. Cu toate acestea, acesti manageri de interactiune nu sunt vizibili pentru Runtime Framework sau Managerul de interactiuni de nivel superior.

Daca Interaction Manager nu contine un handler explicit pentru un eveniment, orice comportament implicit care a fost stabilit pentru eveniment va fi respectat. Daca nu exista un comportament implicit, evenimentul va fi ignorat. (De fapt, gestionarul implicit al managerului de interactiuni pentru toate evenimentele este de a le ignora.)

4.2.2 Componenta de date

Componenta de date este responsabila pentru stocarea datelor la nivel de aplicatie. Managerul de interactiuni este un client al componentei de date si trebuie sa aiba posibilitatea sa il acceseze si sa il actualizeze ca parte a logicii fluxului de control, dar componentele de modalitate nu au acces direct la aceasta. Deoarece Componentele de modalitate sunt cutii negre, acestea pot avea propriile componente de date interne si pot interactiona direct cu serverele backend. Cu toate acestea, singurul mod prin care componentele Modalitatii pot partaja date intre ele si mentine coerenta este prin intermediul interactiunii Manager. Prin urmare, este o buna practica de proiectare a aplicatiilor sa impartiti datele in doua clase logice: datele private, care sunt de interes numai pentru o anumita componenta de modalitate, si datele publice, care sunt de interes pentru Managerul de interactiuni sau pentru mai multe componente de modalitate.

Pentru versiunea initiala a acestei specificatii, nu definim o interfata intre componenta de date si Managerul de interactiuni. Acest lucru echivaleaza cu tratarea componentei de date ca parte a interactiunii Manager. (Retineti ca acest lucru inseamna ca limbajul de acces la date va fi oricare ar fi furnizat de IM.) Componenta de date este afisata cu un contur punctat in diagrama de mai sus, deoarece este distincta doar din punct de vedere logic. Cu toate acestea, la un moment dat in viitor, putem defini interfata dintre componenta de date si Managerul de interactiuni si vom solicita suport pentru un limbaj specific de acces la date, independent de Managerul de interactiuni.

4.2.3 Componentele modalitatii

Componentele modalitatii, asa cum ar indica numele lor, sunt responsabile pentru controlul diferitelor modalitati de intrare si iesire pe dispozitiv. Prin urmare, acestia sunt responsabili de gestionarea oricarei interactiuni cu utilizatorii. Singura lor responsabilitate este de a implementa interfata definita in 5 Interfata intre Managerul de interactiune si componentele Modalitatii. Orice alta definitie a responsabilitatilor lor trebuie sa fie foarte specifica domeniului si aplicatiei. In special, nu definim un set de modalitati standard sau evenimentele pe care acestea ar trebui sa le genereze sau sa le gestioneze. Furnizorii de platforme au permisiunea de a defini noi componente de modalitate si li se permite sa plaseze intr-o singura functionalitate componenta care ar putea parea in mod logic sa apartina a doua modalitati diferite. Astfel, o platforma ar putea furniza o componenta de modalitate de scriere si vorbire care sa accepte intrarea simultana de voce si stilou. Astfel de componente combinate permit o cuplare mult mai stransa intre cele doua modalitati decat interfata libera definita aici. In plus, componentele modalitatii pot fi utilizate pentru a efectua functii generale de procesare care nu sunt asociate direct cu nicio modalitate de interfata specifica, de exemplu,

In majoritatea cazurilor, va exista un markup specific in aplicatie corespunzator unei anumite modalitati, specificand modul in care ar trebui sa se desfasoare interactiunea cu utilizatorul. Cu toate acestea, nu avem nevoie de acest lucru si permitem in mod specific o componenta de modalitate fara markup al carei comportament este codat in software-ul sau.

4.2.4 Cadrul Runtime

Runtime Framework este un termen de acoperire pentru toate serviciile de infrastructura necesare pentru executarea cu succes a unei aplicatii multimodale. Aceasta include pornirea componentelor, gestionarea comunicatiilor si inregistrarea in jurnal, etc. componente.

4.2.4.1 Stratul de transport al evenimentelor

Stratul de transport al evenimentelor este responsabil pentru difuzarea evenimentelor intre IM si componentele Modalitatii. In mod clar, exista mai multe mecanisme de transport (protocoale) care pot fi utilizate pentru a implementa un strat de transport si diferite mecanisme pot fi utilizate pentru a comunica cu diferite componente de modalitate. Astfel, stratul de transport al evenimentului consta dintr-unul sau mai multe mecanisme de transport care leaga IM de diferitele componente ale modalitatii.

Punem urmatoarele cerinte pe toate mecanismele de transport:

  1. Evenimentele trebuie livrate in mod fiabil. In special, mecanismul de livrare a evenimentelor trebuie sa raporteze o eroare daca un eveniment nu poate fi livrat, de exemplu daca punctul final de destinatie nu este disponibil.
  2. Evenimentele trebuie livrate la destinatie in ordinea in care sursa le-a generat. Nu exista nicio garantie cu privire la comanda de livrare a evenimentelor generate de diferite surse. De exemplu, daca Componenta Modalitate M1 genereaza evenimente E1 si E2 in aceasta ordine, in timp ce Componenta Modalitate M2 genereaza E3 si apoi E4, avem nevoie ca E1 sa fie livrat in Runtime Framework inainte de E2 si ca E3 sa fie livrat inainte de E4, dar nu exista garantie la comanda E1 sau E2 fata de E3 sau E4.

Pentru o definitie mostra a unui strat de transport bazat pe HTTP, consultati Transportul E HTTP al evenimentelor ciclului de viata MMI . In proiectul actual, aceasta definitie este furnizata doar ca exemplu, dar in viitoarele proiecte este posibil sa avem nevoie de asistenta pentru aceasta si, eventual, pentru alte definitii ale stratului de transport.

4.2.4.1.1 Securitatea evenimentelor si a informatiilor

Evenimentele vor avea adesea informatii sensibile, cum ar fi numerele de cont bancar sau informatii despre ingrijirea sanatatii. In plus, evenimentele trebuie, de asemenea, sa fie fiabile pentru ambele parti ale tranzactiei: de exemplu, daca un eveniment este conform cu o tranzactie financiara, ambele parti ale tranzactiei trebuie sa se poata baza pe acest acord.

In prezent nu specificam mecanisme de livrare sau garantii de securitate interne utilizate de componentele modalitatii si de managerul de interactiuni. Cu toate acestea, credem ca orice sistem sigur va trebui sa indeplineasca cel putin urmatoarele cerinte:

Urmatoarele doua cerinte optionale pot fi indeplinite utilizand sintaxa semnaturii XML W3 si specificatia de procesare [XMLSig].

  1. Autentificare. Mecanismul de livrare a evenimentelor ar trebui sa fie capabil sa se asigure ca identitatea componentelor dintr-o interactiune este cunoscuta.
  2. Integritate. Mecanismul de livrare a evenimentelor ar trebui sa poata asigura ca continutul evenimentelor nu a fost modificat in timpul tranzitului.

    Restul de cerinte optionale pentru livrarea evenimentelor si securitatea informatiilor pot fi indeplinite urmand alte proceduri standard din industrie.

  3. Autorizare. O componenta ar trebui sa furnizeze o metoda pentru a se asigura ca numai componentele autorizate se pot conecta la aceasta.
  4. Confidentialitate. Mecanismul de livrare a evenimentelor ar trebui sa furnizeze o metoda pentru a pastra continutul mesajului in siguranta de orice acces neautorizat in timpul tranzitului.
  5. Non-repudierea. Mecanismul de livrare a evenimentelor, impreuna cu componentele, poate oferi o metoda pentru a se asigura ca, daca un mesaj este trimis de la un element constitutiv la altul, elementul constitutiv originar nu poate respinge mesajul pe care l-a trimis si ca elementul constitutiv receptor nu poate respinge faptul ca mesajul a fost trimis. primit.

Mai multe protocoale pot fi necesare pentru a implementa aceste cerinte. De exemplu, TCP / IP si HTTP asigura livrarea fiabila a evenimentelor, dar ar putea fi necesare protocoale suplimentare precum TLS sau HTTPS pentru a indeplini cerintele de securitate.

4.2.5 Securitatea sistemului si a sistemului de operare

Aceasta arhitectura nu specifica si nu va specifica cerintele de securitate interna ale unei componente de modalitate sau cadru de executie.

4.2.6 Gestionarea fluxului media

Fluxurile media nu sunt de obicei circulate prin Interaction Manager. Aceasta specificatie nu specifica modul in care sunt stabilite conexiunile media, deoarece principalul accent al acestei specificatii este fluxul de date de control. Cu toate acestea, toate datele de control trimise in mod logic intre componentele modalitatii TREBUIE sa curga prin Interaction Manager.

4.2.7 Exemple

Din motive de concretitate, iata cateva exemple de componente care ar putea fi implementate folosind limbajele existente. Retineti ca amestecam vizualizarile in timp de proiectare si in timp de executie aici, deoarece implementarea limbajului (browserul) serveste ca componenta de executie.

  • CCXML [CCXML] ar putea fi utilizat atat ca document al controlerului, cat si ca limba de interactiune, interpretorul CCXML servind ca Runtime Framework si Interaction Manager.
  • SCXML [SCXML] ar putea fi folosit ca limba a documentului controlerului si a Managerului de interactiuni
  • Intr-un browser multimodal integrat, limbajul de marcare care a furnizat eticheta radacina a documentului ar defini documentul controler, in timp ce limbajul de scriptare asociat ar putea servi ca Manager de interactiuni.
  • XHTML [XHTML] ar putea fi folosit ca marcaj pentru o componenta de modalitate.
  • VoiceXML [VoiceXML] ar putea fi folosit ca marcaj pentru o componenta de modalitate.
  • SVG [SVG] ar putea fi folosit ca marcaj pentru o componenta de modalitate.
  • SMIL [SMIL] ar putea fi folosit ca marcaj pentru o componenta de modalitate.

5 Interfata intre Managerul de interactiune si componentele Modalitatii

Cea mai importanta interfata din aceasta arhitectura este cea dintre Componentele Modalitatii si Managerul de interactiuni. Componentele Modalitatii comunica cu IM-ul prin evenimente asincrone. Componentele trebuie sa poata genera evenimente si sa gestioneze evenimente care le sunt livrate in mod asincron. Nu este necesar ca componentele sa utilizeze aceste evenimente intern, deoarece implementarea unei componente date este o cutie neagra pentru restul sistemului. In general, este de asteptat ca Componentele sa ridice evenimente atat in ​​mod automat (adica ca parte a implementarii lor), cat si sub control de majorare.

Majoritatea evenimentelor definite aici apar in perechi cerere / raspuns. Adica, o parte (fie IM, fie un MC) trimite o cerere, iar cealalta returneaza un raspuns. (Exceptia este evenimentul ExtensionNotification, care poate fi trimis de oricare dintre parti.) In fiecare caz, se specifica care parte trimite cererea si care parte returneaza raspunsul. Daca partea gresita trimite o cerere sau un raspuns, partea destinatara TREBUIE sa o ignore. In descrierile de mai jos, spunem ca partea originara „MAI” trimite cererea, deoarece depinde de logica interna a partii originare sa decida daca doreste sa invoce comportamentul pe care cererea l-ar declansa. Pe de alta parte, spunem ca partea care primeste „TREBUIE” trimiteti raspunsul, deoarece este obligatoriu sa trimiteti raspunsul daca si cand se primeste solicitarea.

5.1 Campuri de eveniment comune

Conceptul de „context” este de baza pentru aceste evenimente descrise mai jos. Un context reprezinta o singura interactiune extinsa cu unul (sau posibil mai multi) utilizatori. Intr-un caz simplu unimodal, un context poate fi la fel de simplu ca un apel telefonic sau o sesiune SSL. Cu toate acestea, cazurile multimodale sunt mai complexe, deoarece diferitele modalitati nu pot fi utilizate in acelasi timp. De exemplu, intr-o interactiune voce-plus-web, de exemplu, partajarea web cu un apel VoIP asociat, ar fi posibil sa incheiti partajarea web si sa continuati apelul vocal, sau sa renuntati la apelul vocal si sa continuati prin chat web. In aceste cazuri, un singur context persista in diferite configuratii de modalitati. In general, intentionam ca „context” sa acopere cea mai lunga perioada de interactiune pe care ar avea sens ca componentele sa stocheze starea sau informatiile.

Pentru exemple de sintaxa XML concreta pentru toate aceste evenimente, consultati Unele exemple de evenimente din ciclul de viata

Urmatoarele campuri comune sunt partajate de mai multe evenimente din ciclul de viata:

5.1.1 Context

Un URI unic in intregul sistem si utilizat pentru identificarea acestei interactiuni. Toate evenimentele legate de o anumita interactiune vor utiliza acelasi URI de context. Evenimentele care contin un context URI diferit vor face parte din alte interactiuni, fara legatura.

5.1.2 Sursa

Un URI care reprezinta adresa expeditorului evenimentului.

5.1.3 Tinta

Un URI care reprezinta adresa destinatiei evenimentului.

5.1.4 RequestID

Un identificator unic pentru o pereche Solicitare / Raspuns. Majoritatea evenimentelor din ciclul de viata apar in perechi de solicitari / raspunsuri care impartasesc un ID de solicitare comun. Pentru fiecare astfel de pereche, acest id trebuie sa fie unic in contextul dat.

5.1.5 Stare

O enumerare a „succesului” si „esecului”. Evenimentul Raspuns al unei perechi Cerere / Raspuns va utiliza acest camp pentru a raporta daca a reusit sa indeplineasca cererea.

5.1.6 StatusInfo

O valoare arbitrara care ofera informatii suplimentare despre erori in cazurile in care starea este „esec”.

5.1.7 Date

Un camp optional care contine date arbitrare. Formatul si semnificatia acestor date sunt specifice aplicatiei.

5.1.8 Confidential

Un camp optional care indica daca continutul acestui eveniment trebuie tratat ca fiind confidential. Valoarea implicita este „falsa”. In cazul in care valoarea este „adevarata”, implementarea Componentei Manager de interactiune si Modalitate TREBUIE sa nu inregistreze informatiile sau sa le puna la dispozitie in niciun fel pentru terti, cu exceptia cazului in care este instruit in mod explicit de catre autorul aplicatiei.

5.2 Evenimente standard ale ciclului de viata

Arhitectura multimodala defineste urmatoarele evenimente de baza ale ciclului de viata care trebuie sustinute de toate componentele modalitatii. Aceste evenimente permit Managerului de interactiuni sa invoce componente de modalitate si sa primeasca rezultate de la acestea. Acestea formeaza astfel interfata de baza intre componentele IM si Modalitate. Retineti ca evenimentul „Extensie” ofera extensibilitate, deoarece contine continut XML arbitrar si poate fi ridicat fie de IM, fie de Componentele Modalitatii in orice moment, odata ce contextul a fost stabilit. De exemplu, o aplicatie bazata pe recunoasterea vorbirii ar putea utiliza evenimentul „Extensie” pentru a comunica rezultatele recunoasterii sau faptul ca vorbirea a inceput, etc.

5.2.1 NewContextRequest / NewContextResponse

O componenta de modalitate POATE trimite o cerere NewContextR catre IM pentru a solicita crearea unui nou context. Daca acest eveniment este trimis, IM TREBUIE sa raspunda cu evenimentul NewContextResponse. Retineti ca IM POATE crea un nou context / interactiune fara o noua cerere NewContextRequest. Intr-un astfel de caz, IM va trimite un PrepareRequest sau StartRequest catre componentele de modalitate care contin un nou ID de context.

5.2.1.2 Proprietati NewContextResponse
  • RequestID. Vezi 5.1.4 RequestID . TREBUIE sa se potriveasca cu RequestID in evenimentul NewContextRequest.
  • Stare Vezi 5.1.5 Stare . Daca valoarea este Succes, NewContextRequest a fost acceptata si va fi inclus un nou identificator de context. (Vezi mai jos). Daca valoarea este Esec, nu va fi inclus niciun identificator de context si informatii suplimentare vor fi incluse in campul StatusInfo.
  • Context A se vedea 5.1.1 Context . Un identificator de context nou creat. Acest camp TREBUIE sa fie gol daca starea este Esec.
  • StatusInfo Consultati 5.1.6 StatusInfo .
  • Sursa A se vedea 5.1.2 Sursa .
  • Tinta Vezi 5.1.3 Tinta .
  • Date Vezi 5.1.7 Date .
  • Confidential Vezi 5.1.8 Confidential .

5.2.2 PrepareRequest / PrepareResponse

IM POATE trimite un PrepareRequest pentru a permite componentelor Modalitatii sa preincarca marcajul si sa se pregateasca pentru a rula. Componentele modalitatii nu sunt obligate sa ia nicio actiune speciala ca raspuns la acest eveniment, dar TREBUIE sa returneze un eveniment PrepareResponse. Componentele de modalitate care returneaza un eveniment PrepareResponse cu starea de „succes” TREBUIE sa fie gata sa ruleze cu o intarziere de aproape 0 la primirea cererii StartRequest.

O componenta data poate executa o singura StartRequest simultan (vezi 5.2.3 StartRequest / StartResponse ). Cu toate acestea, Managerul de interactiuni POATE trimite mai multe evenimente PrepareRequest catre o componenta de modalitate pentru acelasi context, fiecare facand referire la un ContentURL diferit sau continand continut diferit in linie, inainte de a trimite un StartRequest. In acest caz, Componenta Modalitatii TREBUIE sa se pregateasca pentru a rula oricare dintre continutul specificat. Evenimentul StartRequest ulterior va determina ce continut specific Componenta Modalitatii ar trebui sa execute.

5.2.2.1 Proprietati PrepareRequest
  • RequestID. Vezi 5.1.4 RequestID . Un identificator nou generat utilizat pentru a identifica aceasta solicitare.
  • Context A se vedea 5.1.1 Context . Retineti ca IM-ul poate reutiliza aceeasi valoare de context in apeluri succesive pentru a Prepara daca sunt toate in aceeasi sesiune / apel.
  • ContentURL Adresa URL optionala a continutului pe care ar trebui sa o execute Componenta Modalitate. Include parametri standard de preluare HTTP, cum ar fi varsta maxima, maximul invechit, preluarea timpului de preluare etc. Incompatibil cu continutul.
  • Continut Optional Marcare inline pentru executarea componentei Modalitate. Incompatibil cu contentURL. Retineti ca este legal ca atat contentURL, cat si continutul sa fie goale. Intr-un astfel de caz, Componenta Modalitate va reveni la comportamentul sau implicit codificat, care ar putea consta in returnarea unui eveniment de eroare sau in rularea unui script preconfigurat sau codat in mod dur.
  • Sursa A se vedea 5.1.2 Sursa .
  • Tinta Vezi 5.1.3 Tinta .
  • Date Vezi 5.1.7 Date .
  • Confidential Vezi 5.1.8 Confidential .

5.2.3 StartRequest / StartResponse

IM trimite o StartRequest pentru a invoca o componenta de modalitate. Componenta Modalitate TREBUIE sa returneze un eveniment StartResponse ca raspuns. Daca Runtime Framework a trimis un eveniment Prepare anterior, POATE lasa gol campurile contentURL si content si Componenta Modalitate TREBUIE sa utilizeze valorile din evenimentul Prepare. Daca IM include valori noi pentru aceste campuri, valorile din evenimentul Start le inlocuiesc pe cele din evenimentul Pregatiti.

Daca Interaction Manager trimite mai multe StartRequests catre o anumita componenta de modalitate inainte de a primi o notificare DoneNotification, fiecare astfel de cerere le inlocuieste pe cele anterioare. Astfel, daca o componenta de modalitate primeste o noua StartRequest in timp ce executa una anterioara, TREBUIE fie sa inceteze executarea StartRequest-ului anterior si sa inceapa sa execute continutul specificat in cea mai recenta StartRequest, fie sa respinga noua StartRequest, returnand un StartResponse cu starea egala catre esec’.

5.2.3.1 Proprietati StartRequest
  • RequestID. Vezi 5.1.4 RequestID . Un identificator nou generat utilizat pentru a identifica aceasta solicitare.
  • Context A se vedea 5.1.1 Context . Retineti ca IM-ul poate reutiliza aceeasi valoare de context in apeluri succesive pentru a incepe daca toate sunt in aceeasi sesiune / apel.
  • ContentURL Adresa URL optionala a continutului pe care ar trebui sa o execute Componenta Modalitate. Include parametri standard de preluare HTTP, cum ar fi varsta maxima, maximul invechit, preluarea timpului de preluare etc. Incompatibil cu continutul.
  • Continut Optional Marcare inline pentru executarea componentei Modalitate. Incompatibil cu contentURL. Retineti ca este legal ca atat contentURL, cat si continutul sa fie goale. Intr-un astfel de caz, componenta Modalitate va folosi fie valorile furnizate in cea mai recenta Pregatire, daca a fost trimisa, fie va reveni la comportamentul sau implicit codificat, care ar putea consta in returnarea unui eveniment de eroare sau in executarea unui program preconfigurat sau -script codat.
  • Sursa A se vedea 5.1.2 Sursa .
  • Tinta Vezi 5.1.3 Tinta .
  • Date Vezi 5.1.7 Date .
  • Confidential Vezi 5.1.8 Confidential .

5.2.4 Notificare Gata

Componenta Modalitate MAIreturneaza o notificare efectuata catre IM pentru a indica faptul ca a ajuns la sfarsitul procesarii sale. Evenimentul DoneNotification este destinat sa indice finalizarea procesarii care a fost initiata de Managerul de interactiuni cu o cerere Start. De exemplu, o componenta de modalitate vocala ar putea utiliza evenimentul DoneNotification pentru a indica finalizarea unei sarcini de recunoastere. In acest caz, evenimentul DoneNotification ar putea avea rezultatul recunoasterii exprimat folosind EMMA. Cu toate acestea, pot exista sarcini care nu au un scop specific. De exemplu, Interaction Manager poate trimite o StartRequest catre o componenta de modalitate grafica, solicitandu-i sa afiseze anumite informatii. O astfel de sarcina nu are neaparat un scop specific si astfel componenta de modalitate grafica nu ar putea trimite niciodata un eveniment DoneNotification catre Managerul de interactiuni.

5.2.5 Anulare cerere / Anulare raspuns

IM POATE trimite o solicitare CancelRop pentru a opri procesarea in componenta Modalitate. In acest caz, componenta Modalitate TREBUIE sa returneze un CancelResponse.

5.2.6 PauseRequest / PauseResponse

IM POATE trimite o solicitare PauseR pentru a suspenda procesarea de catre componenta Modalitate. Componentele de modalitate pot ignora aceasta comanda daca nu pot face pauza, dar TREBUIE sa returneze un raspuns Pause.

5.2.7 ResumeRequest / ResumeResponse

IM POATE trimite ResumeRequest pentru a relua procesarea care a fost intrerupta de o PauseRequest anterioara. Implementarile pot ignora aceasta comanda daca nu pot intrerupe, dar TREBUIE sa returneze un ResumeResponse.

5.2.8 Notificare extindere

Acest eveniment POATE fi generat fie de IM, fie de Componenta Modalitate. Este folosit pentru a incapsula evenimente specifice aplicatiei care sunt extensii la cadrul definit aici. De exemplu, daca o aplicatie care contine o modalitate de voce dorea ca acea componenta de modalitate sa notifice managerul de interactiuni atunci cand vorbirea a fost detectata, aceasta ar determina ca modalitatea de voce sa genereze un eveniment de extensie (cu un „nume” de genul „speechDetected”) la timpul potrivit.

5.2.9 ClearContextRequest / ClearContextResponse

IM POATE trimite o ClearContextRequest pentru a indica faptul ca contextul specificat nu mai este activ si ca orice resurse asociate acestuia pot fi eliberate. Componentele Modalitatii nu sunt obligate sa ia nicio actiune speciala ca raspuns la aceasta comanda, dar TREBUIE sa returneze un ClearContextResponse.

5.2.10 StatusRequest / StatusResponse

Mesajul StatusRequest si StatusResponse corespunzator sunt destinate sa ofere functionalitati de pastrare in viata, informand IM-ul despre prezenta diferitelor componente ale modalitatii. Retineti ca ambele mesaje pot fi fie legate de un anumit context, fie trimise catre serverul de baza independent de orice interactiune a utilizatorului. In primul caz, IM solicita informatii despre starea interactiunii specifice (adica contextul). In acest din urma caz, se intreaba efectiv serverul de baza daca ar putea porni un nou context daca i se solicita acest lucru.

Mesajul StatusRequest este trimis de la IM catre o componenta de modalitate. Asteptand o perioada de timp dependenta de implementare pentru un mesaj StatusResponse, IM poate determina daca Componenta Modalitate este activa. Daca actualizarile automate sunt activate, Componenta Modalitatii ar trebui sa trimita mai multe mesaje StatusResponse ca raspuns la un singur mesaj StatusRequest.

5.2.10.1 Proprietati cerere stare
  • RequestID. Vezi 5.1.4 RequestID . Un identificator nou generat utilizat pentru a identifica aceasta solicitare.
  • Context A se vedea 5.1.1 Context . Specificatie optionala a contextului pentru care este solicitat statutul. Daca nu este prezenta, cererea este directionata catre serverul de baza, si anume software-ul care ar gazdui un nou context daca s-ar crea unul.
  • RequestAutomaticUpdate. O valoare booleana care indica daca Componenta Modalitate ar trebui sa trimita mesaje StatusResponse in curs fara a astepta mesaje suplimentare StatusRequest din Runtime Framework.
  • Sursa A se vedea 5.1.2 Sursa .
  • Tinta Vezi 5.1.3 Tinta .
  • Date Vezi 5.1.7 Date .
  • Confidential Vezi 5.1.8 Confidential .
5.2.10.2 Proprietati StatusResponse
  • RequestID. Vezi 5.1.4 RequestID . TREBUIE sa se potriveasca cu RequestID in evenimentul StatusRequest.
  • Actualizare automata. Un boolean care indica daca Componenta Modalitatii va continua sa trimita mesaje StatusResponse in viitor fara a astepta un alt mesaj StatusRequest.
  • Context A se vedea 5.1.1 Context . O specificatie optionala a contextului pentru care se returneaza starea. Daca nu este prezent, raspunsul reprezinta starea serverului de baza.
  • Stare O enumerare a „Viu” sau „Moart”. Semnificatia acestor valori depinde daca parametrul „context” este prezent. Daca este, starea este „In viata” inseamna ca sesiunea specificata este inca activa si capabila sa gestioneze noi evenimente din ciclul de viata. Starea „Dead” inseamna ca contextul s-a incheiat si nu mai este disponibila nicio interactiune cu utilizatorul. Daca parametrul „context” nu este furnizat, starea se refera la serverul de baza. O valoare „In viata” indica faptul ca componenta Modalitate este capabila sa gestioneze mesajele de pregatire si pornire ulterioare. Daca starea este „Moarta”, nu poate gestiona astfel de solicitari. Astfel, starea „Dead” indica faptul ca componenta de modalitate se deconecteaza. Daca IM primeste un mesaj StatusResponse cu starea „
  • Sursa A se vedea 5.1.2 Sursa .
  • Tinta Vezi 5.1.3 Tinta .
  • Date Vezi 5.1.7 Date .
  • Confidential Vezi 5.1.8 Confidential .

5.3 Statele componente ale modalitatii

Intr-un context stabilit, o componenta de modalitate functioneaza intr-una din cele trei stari: Inactiv, Rularea sau Intrerupta. Solicitarea evenimentelor din ciclul de viata primite de la Interaction Manager implica actiuni specifice si tranzitii intre state. Tabelul de mai jos defineste actiunile MC, tranzitiile de stare si continutul raspunsului pentru fiecare eveniment de solicitare posibil trimis de IM catre un MC intr-o anumita stare.

Un esec: adnotarea ErrorMessage indica faptul ca evenimentul Cerere specificat este fie invalid sau redundant in starea specificata. In acest caz, componenta Modalitate trebuie sa raspunda prin trimiterea unui eveniment de raspuns corespunzator cu Status = Failure si StatusInfo = ErrorMessage. In toate celelalte cazuri, Modalitatea ar trebui sa efectueze actiunea solicitata, eventual trecand la un alt stat asa cum este indicat.

eveniment / stare Inactiv Rulare Intrerupt Prepare-solicitare Preincarca sau actualizeaza continut preincarca sau actualizeaza continut preincarca sau actualizeaza continut StartRequest Tranzitie: Se ruleaza

utilizati continut nou daca este furnizat, altfel utilizati ultimul continut disponibil

opriti procesarea continutului curent, reporniti ca in tranzitia inactiva : ruleaza

opriti procesarea continutului curent, reporniti ca in modul Repaus

Esec: Nu Continut daca MC necesita continutul pentru a rula si nu a fost furnizat niciunul Anulare Solicitare esec: Nu se executa tranzitia: tranzitie inactiva : pauza inactiva Solicita esec: nu se executa tranzitie: esueaza intrerupt : deja esueaza intrerupt : Cant pauza daca MC nu este in masura sa intrerupa esueaza reluarea solicitarii : nu se executa deja Tranzitie: rulare StatusRequest trimitere stare trimitere stare trimitere stare ClearContextRequest inchidere sesiune inchidere sesiune inchidere sesiune inchidere

Iata o reprezentare in grafic de stare a acestor tranzitii:

Un exemplu de evenimente din ciclul de viata

A.1 newContextRequest (de la MC la IM)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: newContextRequest source = “someURI” target = “someOtherURI” requestID = ” request-1 “> </ mmi: newContextRequest> </ mmi: mmi>

A.2 newContextResponse (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: newContextResponse source = “someURI” target = “someOtherURI” requestID = ” request-1 “status =” success “context =” URI-1 “> </ mmi: newContextResponse> </ mmi: mmi>

A.3 prepareRequest (de la IM la MC, cu marcaj extern)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: prepareRequest source = “someURI” target = “someOtherURI” context = ” URI-1 “requestID =” request-1 “> <mmi: contentURL href =” someContentURI “max-age =” “fetchtimeout =” 1s “/> </ mmi: prepareRequest> </ mmi: mmi>

A.4 prepareRequest (de la IM la MC, marcaj VoiceXML in linie)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0” xmlns: vxml = “http://www.w3.org/2001/vxml “> <mmi: prepareRequest source =” someURI “target =” someOtherURI “context =” URI-1 “requestID =” request-1 “> <mmi: content> <vxml: vxml version =” 2.0 “> <vxml: form > <vxml: block> Hello World! </ vxml: block> </ vxml: form> </ vxml: vxml> </ mmi: content> </ mmi: prepareRequest> </ mmi: mmi>

A.5 prepareResponse (de la MC la IM, succes)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: prepareResponse source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-1 “status =” success “/> </ mmi: mmi>

A.6 prepareResponse (de la MC la IM, esec)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: prepareResponse source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-1 “status =” failure “> <mmi: statusInfo> NotAuthorized </ mmi: statusInfo> </ mmi: prepareResponse> </ mmi: mmi>

A.7 startRequest (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: startRequest source = “someURI” target = “someOtherURI” context = ” URI-1 “requestID =” request-1 “> <mmi: contentURL href =” someContentURI “max-age =” “fetchtimeout =” 1s “/> </ mmi: startRequest> </ mmi: mmi>

A.8 startResponse (de la MC la IM)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: startResponse source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-1 “status =” failure “> <mmi: statusInfo> NotAuthorized </ mmi: statusInfo> </ mmi: startResponse> </ mmi: mmi>

A.9 facut Notificare (de la MC la IM, cu rezultatul EMMA)

Acest ID de cerere corespunde ID-ului de cerere al evenimentului „startRequest” care a pornit-o.

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0” xmlns: emma = “http://www.w3.org/2003/04 / emma “> <mmi: doneNotification source =” someURI “target =” someOtherURI “context =” someURI “status =” success “requestID =” request-1 “confidential =” true “> <mmi: data> <emma: emma version = “1.0”> <emma: interpretare id = “int1” emma: mediu = “acustic” emma: incredere = “. 75” emma: mode = “voce” emma: token = “zboruri de la Boston la Denver”> < origine> Boston </origin> <destination> Denver </destination> </ emma: interpretare> </ emma: emma> </ mmi: data> </ mmi: doneNotification> </ mmi: mmi>

A.10 facut Notificare (de la MC la IM, cu rezultatul EMMA „fara intrare”)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: doneNotification source = “someURI” target = “someOtherURI” context = ” someURI “status =” success “requestID =” request-1 “> <mmi: data> <emma: emma version =” 1.0 “> <emma: interpretare id =” int1 “emma: no-input =” true “/> </ emma: emma> </ mmi: data> </ mmi: doneNotification> </ mmi: mmi>

A.11 Anuleaza cererea (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: cancelRequest source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-1 “/> </ mmi: mmi>

A.12 anuleaza raspunsul (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: cancelResponse source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-1 “status =” success “/> </ mmi: mmi>

A.13 pauseRequest (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: pauseRequest context = “someURI” source = “someURI” target = ” someOtherURI “imediat =” adevarat “requestID =” request-1 “/> </ mmi: mmi>

A.14 pauza Raspuns (de la MC la IM)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: pauseResponse source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-1 “status =” success “/> </ mmi: mmi>

A.15 CVCere (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: resumeRequest context = “someURI” source = “someURI” target = ” someOtherURI “requestID =” request-1 “/> </ mmi: mmi>

A.16 CV Raspuns (de la MC la IM)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: resumeResponse source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-2 “status =” success “/> </ mmi: mmi>

A.17 Extensie Notificare (anterior evenimentul de date, trimis in ambele directii)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: extensionNotification name = “appEvent” source = “someURI” target = ” someOtherURI “context =” someURI “requestID =” request-1 “> <applicationdata /> </ mmi: extensionNotification> </ mmi: mmi>

A.18 clearContextRequest (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: clearContextRequest source = “someURI” target = “someOtherURI” context = ” someURI “requestID =” request-2 “/> </ mmi: mmi>

A.19 cerere de stare (de la IM la MC)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: statusRequest requestAutomaticUpdate = “true” source = “someURI” target = ” someOtherURI “requestID =” request-3 “context =” aToken “/> </ mmi: mmi>

A.20 statusRaspuns (de la MC la IM)

<mmi: mmi xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” version = “1.0”> <mmi: statusResponse automaticUpdate = “true” status = “viu” source = ” someURI “target =” someOtherURI “requestID =” request-3 “context =” aToken “/> </ mmi: mmi>

B Scheme de evenimente

B.1 mmi.xsd

<? xml version = “1.0” encoding = “UTF-8”?> <xs: schema xmlns: mmi = “http://www.w3.org/2008/04/mmi-arch” xmlns: xs = “http : //www.w3.org/2001/XMLSchema “targetNamespace =” http://www.w3.org/2008/04/mmi-arch “> <xs: annotation> <xs: documentation xml: lang =” ro “> Definitia schemei pentru evenimentele ciclului de viata MMI versiunea 1.0 </ xs: documentation> </ xs: annotation> <xs: include schemaLocation =” mmi-attribs.xsd “/> <xs: include schemaLocation =” NewContextRequest.xsd “/ > <xs: include schemaLocation = “NewContextResponse.xsd” /> <xs: include schemaLocation = “ClearContextRequest.xsd” /> <xs: include schemaLocation = “ClearContextResponse.xsd” /> <xs: include schemaLocation = “CancelRequest.xsd “/> <xs:include schemaLocation = “CancelResponse.xsd” /> <xs: include schemaLocation = “DoneNotification.xsd” /> <xs: include schemaLocation = “ExtensionNotification.xsd” /> <xs: include schemaLocation = “PauseRequest.xsd” /> < xs: include schemaLocation = “PauseResponse.xsd” /> <xs: include schemaLocation = “PrepareRequest.xsd” /> <xs: include schemaLocation = “PrepareResponse.xsd” /> <xs: include schemaLocation = “ResumeRequest.xsd” / > <xs: include schemaLocation = “ResumeResponse.xsd” /> <xs: include schemaLocation = “StartRequest.xsd” /> <xs: include schemaLoc

Video Description:

Starea acestui document Aceasta sectiune descrie starea acestui document in momentul publicarii acestuia. Alte documente pot inlocui acest document. O lista a publicatiilor curente W3C si cea mai recenta revizuire a acestui raport tehnic pot fi gasite in indexul rapoartelor tehnice W3C la http://www.w3.org/TR/. Acest document este al saptelea proiect public de lucru al „Arhitecturii si interfetelor multimodale” publicat la 21 septembrie 2010 pentru revizuire de catre membrii W3C si alte parti interesate si a fost elaborat de Grupul de lucru pentru interactiune multimodala ca parte a activitatii de interactiune multimodala W3C. Principalele modificari normative fata de proiectul anterior sunt: includerea graficelor de stat pentru componentele modalitatii. adaugarea unui camp „confidential” la evenimentele din ciclul vietii. eliminarea campului „media” din evenimentele ciclului de viata. O versiune marcata de acest document este, de asemenea, disponibila in scopuri comparative. Va rugam sa retineti ca multe sectiuni au fost modificate din cauza modificarilor de mai sus, editorii ar dori ca cititorii sa citeasca cu atentie intregul document si sa ofere comentarii. Comentariile pentru aceasta specificatie sunt binevenite si ar trebui sa aiba un subiect care incepe cu prefixul „[ARCH]”. Va rugam sa le trimiteti la [email protected], lista publica de e-mail pentru probleme legate de Multimodal. Aceasta lista este arhivata si acceptarea acestei politici de arhivare este solicitata automat la prima postare. Pentru a va abona la aceasta lista, trimiteti un e-mail la adresa [email protected]> cu cuvantul subscribe in linia subiectului. Pentru mai multe informatii despre activitatea de interactiune multimodala, va rugam sa consultati declaratia privind activitatea de interactiune multimodala. Acest document a fost produs de un grup care isi desfasoara activitatea in conformitate cu politica de brevete W3C din 5 februarie 2004. W3C mentine o lista publica a oricaror dezvaluiri de brevete facute in legatura cu livrabilele grupului; acea pagina include, de asemenea, instructiuni pentru dezvaluirea unui brevet. O persoana care are cunostinte reale despre un brevet despre care individul considera ca contine revendicari esentiale trebuie sa dezvaluie informatiile in conformitate cu sectiunea 6 din Politica W3C privind brevetele. Publicarea ca proiect de lucru nu implica aprobarea de catre membrii W3C. Acesta este un proiect de document si poate fi actualizat, inlocuit sau invechit de alte documente in orice moment. Nu este adecvat sa citesti acest document ca altceva decat lucrarile in curs. 1 Rezumat Acest document descrie o arhitectura slab cuplata pentru interfetele de utilizator multimodale, care permite implementari co-rezidente si distribuite, si se concentreaza pe rolul de markup si scripting si pe utilizarea interfetelor bine definite intre componentele sale. 2 Prezentare generala Acest document descrie arhitectura cadrului de interactiune multimodala (MMI) [MMIF] si interfetele dintre componentele sale. Grupul de lucru MMI este constient de faptul ca interfetele multimodale sunt o zona de cercetare activa si ca implementarile comerciale abia incep sa apara. Prin urmare, nu consideram obiectivul nostru ca standardizarea unei practici comune ipotetice existente, ci mai degraba furnizarea unei platforme care sa faciliteze inovarea si dezvoltarea tehnica. Astfel, scopul acestui design este de a oferi un cadru general si flexibil care sa asigure interoperabilitatea intre componentele specifice modalitatii de la diferiti furnizori - de exemplu, recunoasterea vorbirii de la un furnizor si recunoasterea scrisului de mana de la altul. Acest cadru pune foarte putine restrictii asupra componentelor individuale sau asupra interactiunilor lor intre ele, Cadrul nostru este motivat de mai multe obiective de baza de proiectare: Incapsularea. Arhitectura nu ar trebui sa faca presupuneri cu privire la implementarea interna a componentelor, care vor fi tratate ca niste cutii negre. Distributie. Arhitectura ar trebui sa accepte implementari distribuite si co-gazduite. Extensibilitate. Arhitectura ar trebui sa faciliteze integrarea noilor componente de modalitate. De exemplu, avand in vedere o implementare existenta cu componente vocale si grafice, ar trebui sa fie posibila adaugarea unei noi componente (de exemplu, o componenta de securitate biometrica) fara a modifica componentele existente. Recursivitate. Arhitectura ar trebui sa permita cuibarirea, astfel incat o instanta a cadrului format din mai multe componente sa poata fi impachetata pentru a aparea ca o singura componenta la o instanta de nivel superior a arhitecturii. Modularitate. Arhitectura ar trebui sa prevada separarea datelor, controlul si prezentarea. Chiar daca interfetele multimodale nu sunt inca comune, industria software in ansamblu are o experienta considerabila cu arhitecturi care pot indeplini aceste obiective. De exemplu, din anii 1980, sistemele distribuite bazate pe mesaje au fost comune. Acestea au fost utilizate pentru o gama larga de sarcini, inclusiv in special sistemele de telefonie high-end. In aceasta paradigma, sistemul general este impartit in componente individuale care comunica prin trimiterea de mesaje prin retea. Deoarece mesajele sunt singurul mijloc de comunicare, componentele interne ale componentelor sunt ascunse si sistemul poate fi implementat intr-o varietate de topologii, fie distribuite, fie co-localizate. O instanta specifica a acestui tip de sistem este DARPA Hub Architecture, cunoscuta si sub numele de Galaxy Communicator Software Infrastructure [Galaxy]. Acesta este un distribuit, bazat pe mesaje, infrastructura hub-and-vorbita conceputa pentru construirea sistemelor de dialog vorbit. A fost dezvoltat la sfarsitul anilor 1990 si inceputul anilor 2000, sub finantare de la DARPA. Aceasta infrastructura include un program numit Hub, impreuna cu servere care ofera functii precum recunoasterea vorbirii, procesarea limbajului natural si gestionarea dialogului. Serverele comunica cu Hub-ul si intre ele folosind structuri cheie-valoare numite cadre. O alta arhitectura recenta care este relevanta pentru preocuparile noastre este paradigma model-view-controller (MVC). Acesta este un model de design bine cunoscut pentru interfetele utilizator in limbaje de programare orientate obiect si a fost utilizat pe scara larga cu limbaje precum Java, Smalltalk, C si C ++. Modelul de proiectare propune trei parti principale: un model de date care reprezinta structura logica a datelor si constrangerile de integritate asociate, una sau mai multe vizualizari care corespund obiectelor cu care utilizatorul interactioneaza direct si un controlercare se afla intre modelul de date si vizualizari. Separarea dintre date si interfata utilizator ofera o flexibilitate considerabila in modul in care sunt prezentate datele si modul in care utilizatorul interactioneaza cu acele date. In timp ce paradigma MVC a fost aplicata in mod traditional la interfetele grafice ale utilizatorului, se preteaza la contextul mai larg al interactiunii multimodale in care utilizatorul este capabil sa utilizeze o combinatie de modalitati vizuale, sonore si tactile. 3 Consideratii de proiectare versus timp de executie In discutarea proiectarii sistemelor MMI, este important sa se tina cont de distinctia dintre vizualizarea timpului de proiectare (adica, marcajul) si vizualizarea timpului de rulare (software-ul care executa marcajul). La nivel de proiectare, presupunem ca aplicatiile multimodale vor lua forma mai multor documente din spatii de nume diferite. In multe cazuri, diferitele spatii de nume si limbaje de marcare vor corespunde unor modalitati diferite, dar nu avem nevoie de acest lucru. O singura limba poate acoperi mai multe modalitati si pot exista mai multe limbi pentru o singura modalitate. In timpul rularii, arhitectura MMI prezinta elemente software cuplate slab, care pot fi fie co-rezidente pe un dispozitiv, fie distribuite pe o retea. In conformitate cu natura slab cuplata a arhitecturii, constituentii nu impartasesc contextul si comunica doar schimband evenimente. Natura acestor elemente constitutive si API-urile dintre ele este discutata mai detaliat in sectiunile 3-5 de mai jos. Desi nimic in arhitectura MMI nu necesita o corespondenta speciala intre vizualizarile in timp de proiectare si in timpul rularii, in multe cazuri, va exista o componenta software specifica responsabila pentru fiecare limbaj de markup (spatiu de nume). 3.1 Markup si vizualizarea timpului de proiectare La nivel de markup, o aplicatie consta din mai multe documente. Un singur document poate contine marcaje din spatii de nume diferite daca interactiunea dintre aceste spatii de nume a fost definita (de exemplu, ca parte a Activitatii de formate de documente compuse [CDF].) Prin principiul incapsularii, totusi, structura interna a documentelor este invizibila nivelul MMI, care defineste doar modul in care comunica diferitele documente. Un document are un statut special, si anume Documentul Root sau Controler, care contine marcaje care definesc interactiunea dintre celelalte documente. Un astfel de markup se numeste Interaction Manager markup. Celelalte documente se numesc Documente de prezentare, deoarece contin marcaje pentru a interactiona direct cu utilizatorul. Documentul controlerului poate consta exclusiv din marcarea Interaction Manager (de exemplu, o masina de stare definita in CCXML [CCXML] sau SCXML [SCXML]) sau poate contine marcajul Interaction Manager combinat cu prezentarea sau alt markup. Ca exemplu al ultimului design, luati in considerare o aplicatie multimodala in care un document CCXML ofera functionalitate de control al apelurilor, precum si controlul fluxului pentru diferitele documente de prezentare. In mod similar, un document de control al fluxului SCXML ar putea contine marcaje de prezentare incorporate in plus fata de marcajul sau nativ de gestionare a interactiunilor. luati in considerare o aplicatie multimodala in care un document CCXML ofera functionalitati de control al apelurilor, precum si controlul fluxului pentru diferitele documente de prezentare. In mod similar, un document de control al fluxului SCXML ar putea contine marcaje de prezentare incorporate in plus fata de marcajul sau nativ de gestionare a interactiunilor. luati in considerare o aplicatie multimodala in care un document CCXML ofera functionalitati de control al apelurilor, precum si controlul fluxului pentru diferitele documente de prezentare. In mod similar, un document de control al fluxului SCXML ar putea contine marcaj de prezentare incorporat, in plus fata de marcajul sau nativ de gestionare a interactiunilor. Aceste relatii sunt recursive, astfel incat orice document de prezentare poate servi drept document de control pentru un alt set de documente. Aceasta structura imbricata este similara cu modelul „Papusa Rusa” a componentelor de modalitate, descris mai jos in 3.2 Componente software si Vizualizarea timpului de rulare . Diferitele documente sunt cuplate slab si coexista fara a interactiona direct. Retineti in special ca nu exista variabile partajate care ar putea fi utilizate pentru a transmite informatii intre ele. In schimb, toate comunicarile in timpul rularii sunt gestionate de evenimente, asa cum este descris mai jos in 5.1 Campuri comune de evenimente . Mai mult, este important sa retineti ca asincronicitatea mecanismului de comunicare subiacent nu impune cerinta ca limbajele de markup sa prezinte dezvoltatorului un model de programare pur asincron. Avand in vedere principiul incapsularii, limbajele de marcare nu sunt necesare pentru a reflecta direct arhitectura si API-urile definite aici. De exemplu, luati in considerare o implementare care contine o componenta de modalitate care ofera functionalitate Text-to-Speech (TTS). Aceasta componenta trebuie sa comunice cu Managerul de interactiuni prin evenimente asincrone (vezi 3.2 Componente software si Vizualizarea timpului de rulare). Intr-o implementare tipica, ar exista probabil evenimente pentru a incepe o redare TTS si pentru a raporta sfarsitul redarii etc. Cu toate acestea, marcajul si scripturile care au fost utilizate pentru a crea acest sistem ar putea oferi doar un apel sincron „redare TTS” , sarcina implementarii de baza fiind convertirea acelui apel sincron in secventa adecvata de evenimente asincrone. De fapt, nu exista nicio cerinta ca resursa TTS sa fie accesibila individual. Ar fi foarte posibil ca marcajul sa prezinte doar un singur apel „reda TTS si sa recunoasca vorbirea”, pe care implementarea de baza l-ar realiza ca o serie de evenimente asincrone care implica mai multe componente. Limbile existente, cum ar fi XHTML, pot fi utilizate fie ca documente de control, fie ca documente de prezentare. Alte exemple de componente potentiale de marcare sunt date in 4.2.7 Exemple 3.2 Componente software si vizualizarea timpului de rulare La baza arhitecturii de rulare MMI se afla distinctia dintre Interaction Manager (IM) si Componentele de modalitate, care este similara cu distinctia dintre documentul controlerului si documentele de prezentare. Managerul de interactiuni interpreteaza documentul controlerului, in timp ce componentele individuale ale modalitatii sunt responsabile pentru sarcini specifice, in special gestionarea intrarilor si iesirilor in diferite modalitati, cum ar fi vorbirea, stiloul, videoclipul etc. Managerul de interactiuni primeste toate evenimentele generate de diferitele componente ale modalitatii. Aceste evenimente pot fi comenzi sau raspunsuri la comenzi si este de competenta managerului de interactiuni sa decida ce sa faca cu ele, adica ce evenimente sa genereze ca raspuns la acestea. Array In general, arhitectura MMI urmeaza un model de eveniment „fara tinta”. Adica, componenta care genereaza un eveniment nu specifica destinatia acestuia. Mai degraba, il transmite catre Runtime Framework, care il va transmite Managerului de interactiuni. IM, la randul sau, decide daca sa redirectioneze evenimentul catre alte componente sau sa genereze un eveniment diferit etc. Componentele Modality sunt cutii negre, necesare doar pentru a implementa API-ul Interface Component Modality, care este descris mai jos. Acest API permite Componentelor Modalitatii sa comunice cu IM si, prin urmare, unul cu celalalt, deoarece IM este responsabil pentru transmiterea evenimentelor / mesajelor intre Componente. Deoarece internele unei componente sunt ascunse, este posibil ca un manager de interactiuni si un set de componente sa se prezinte ca o componenta unui manager de interactiune de nivel superior. Tot ce este necesar este ca IM sa implementeze API-ul componentelor. Rezultatul este un model „Doll Doll” in care componentele pot fi cuibarite in interiorul altor componente la o adancime arbitrara. Cuibarirea componentelor in acest mod este o modalitate de a produce o componenta de moda „complexa”, si anume una care gestioneaza mai multe modalitati simultan. In orice caz,4.2.3 Componentele modalitatii . Pe langa Managerul de interactiune si componentele modalitatii, exista un Runtime Framework care ofera suport pentru infrastructura, in special un strat de transport care ofera evenimente printre componente. Deoarece folosim termenul „Componenta” pentru a ne referi la un set specific de entitati din arhitectura noastra, vom folosi termenul „Constituent” ca termen de acoperire pentru toate elementele din arhitectura noastra care ar putea fi numite in mod normal „componente software”. 3.3 Diferente fata de formatele de documente compuse Activitatea W3C Compound Document Formats [CDF] se refera, de asemenea, la executarea interfetelor utilizator scrise in mai multe limbi. Cu toate acestea, grupul CDF se concentreaza pe definirea interactiunilor unor seturi specifice de limbi intr- un singur document, care poate fi definit prin includere sau prin referinta. Arhitectura MMI, pe de alta parte, defineste interactiunea seturilor arbitrare de limbaje in mai multedocumente. Din punct de vedere MMI, documentele mixte de marcare definite de specificatiile CDF sunt tratate ca orice alte documente si pot fi fie Controlor, fie Documente de prezentare. In cele din urma, retineti ca limbile strans cuplate gestionate de CDF vor impartasi de obicei contexte de date si scripturi, in timp ce arhitectura MMI se concentreaza pe o cuplare mai slaba, fara context partajat. Lipsa contextului partajat faciliteaza distribuirea aplicatiilor pe o retea si pune, de asemenea, constrangeri minime asupra limbilor din diversele documente. Ca urmare, autorii vor avea optiunea de a construi aplicatii multimodale intr-o mare varietate de limbi pentru o gama larga de scenarii de implementare. Credem ca aceasta flexibilitate este importanta pentru dezvoltarea in continuare a industriei. 3.4 Relatia cu EMMA Limbajul de adnotare multimodala extinsa [EMMA], este un set de specificatii pentru sistemele multimodale si ofera detalii despre un limbaj de marcare XML pentru continerea si adnotarea interpretarii intrarilor utilizatorului. De exemplu, un utilizator al unei aplicatii multimodale poate folosi atat vorbirea pentru a exprima o comanda, cat si gestul de apasare a tastelor pentru a selecta sau a desena parametrii comenzii. Modalitatea de recunoastere a vorbirii ar exprima comanda utilizatorului folosind EMMA pentru a indica sursa de intrare (vorbire). Modalitatea gestului stiloului ar exprima parametrii de comanda folosind EMMA pentru a indica sursa de intrare (gesturile stiloului). Ambele modalitati pot include informatii de sincronizare in notatia EMMA. Folosind informatiile de sincronizare, un modul de fuziune combina informatiile despre gestul vorbirii si stiloului intr-o singura notatie EMMA reprezentand atat comanda, cat si parametrii sai. 4 Prezentare generala a arhitecturii Iata o lista a elementelor constitutive ale arhitecturii MMI. Acestea sunt discutate mai detaliat mai jos. Managerul de interactiuni, care coordoneaza diferitele modalitati. Este controlerul in paradigma MVC. Componenta de date, care vizeaza modelul de date comun si reprezinta modelul in paradigma MVC. Componentele modalitatii, care ofera capacitati de interactiune specifice modului. Ele sunt punctele de vedere din paradigma MVC. Runtime Framework, care ofera infrastructura de baza si permite comunicarea intre ceilalti constituenti. 4.1 Diagrama arhitecturii in timp de executie 4.2 Constituentii Aceasta sectiune prezinta responsabilitatile diferitilor constituenti ai arhitecturii MMI. 4.2.1 Managerul de interactiuni Interaction Manager (IM) este responsabil pentru gestionarea tuturor evenimentelor generate de celelalte componente. In mod normal, va exista un markup specific asociat cu IM care ii va instrui cum sa raspunda la evenimente. Acest markup va contine astfel o multime de logica de interactiune de baza a unei aplicatii. Limbile existente, cum ar fi SMIL, CCXML, SCXML sau ECMAScript, pot fi utilizate pentru marcarea IM ca o alternativa la definirea limbajelor cu scop special destinate in mod special aplicatiilor multimodale. IM indeplineste mai multe functii. De exemplu, este responsabil pentru sincronizarea datelor si focalizarea etc., intre diferite componente ale modalitatii, precum si fluxul de aplicatii de nivel superior, care este independent de componentele modalitatii. De asemenea, mentine modelul de date la nivel inalt al aplicatiilor si poate gestiona comunicarea cu entitati externe si sisteme back-end. In viitor, putem imparti aceste functii si sa definim diferite componente pentru fiecare dintre ele. Cu toate acestea, pentru moment, le lasam infasurate intr-o singura componenta monolitica Interaction Manager. Observam ca limbajele masinilor de stare, cum ar fi SCXML, sunt o alegere buna pentru crearea unei astfel de componente multifunctionale, deoarece masinile de stare pot fi compuse. Astfel, este posibil sa se defineasca o masina de stare de nivel inalt care sa reprezinte fluxul general de aplicatie, cu masini de stare de nivel inferior imbricate in interiorul acesteia care gestioneaza sincronizarea modalitatii incrucisate la fiecare faza a fluxului de nivel superior. Observam ca limbajele masinilor de stare, cum ar fi SCXML, sunt o alegere buna pentru crearea unei astfel de componente multifunctionale, deoarece masinile de stare pot fi compuse. Astfel, este posibil sa se defineasca o masina de stare de nivel inalt care sa reprezinte fluxul general de aplicatie, cu masini de stare de nivel inferior imbricate in interiorul acesteia care gestioneaza sincronizarea modalitatii incrucisate la fiecare faza a fluxului de nivel superior. Observam ca limbajele masinilor de stare, cum ar fi SCXML, sunt o alegere buna pentru crearea unei astfel de componente multifunctionale, deoarece masinile de stare pot fi compuse. Astfel, este posibil sa se defineasca o masina de stare de nivel inalt care sa reprezinte fluxul general de aplicatie, cu masini de stare de nivel inferior imbricate in interiorul acesteia care gestioneaza sincronizarea modalitatii incrucisate la fiecare faza a fluxului de nivel superior. Datorita modelului de papusa rusa, componentele pot contine proprii manageri de interactiune pentru a gestiona evenimentele lor interne. Cu toate acestea, acesti manageri de interactiune nu sunt vizibili pentru Runtime Framework sau Managerul de interactiuni de nivel superior. Daca Interaction Manager nu contine un handler explicit pentru un eveniment, orice comportament implicit care a fost stabilit pentru eveniment va fi respectat. Daca nu exista un comportament implicit, evenimentul va fi ignorat. (De fapt, gestionarul implicit al managerului de interactiuni pentru toate evenimentele este de a le ignora.) 4.2.2 Componenta de date Componenta de date este responsabila pentru stocarea datelor la nivel de aplicatie. Managerul de interactiuni este un client al componentei de date si trebuie sa aiba posibilitatea sa il acceseze si sa il actualizeze ca parte a logicii fluxului de control, dar componentele de modalitate nu au acces direct la aceasta. Deoarece Componentele de modalitate sunt cutii negre, acestea pot avea propriile componente de date interne si pot interactiona direct cu serverele backend. Cu toate acestea, singurul mod prin care componentele Modalitatii pot partaja date intre ele si mentine coerenta este prin intermediul interactiunii Manager. Prin urmare, este o buna practica de proiectare a aplicatiilor sa impartiti datele in doua clase logice: datele private, care sunt de interes numai pentru o anumita componenta de modalitate, si datele publice, care sunt de interes pentru Managerul de interactiuni sau pentru mai multe componente de modalitate. Pentru versiunea initiala a acestei specificatii, nu definim o interfata intre componenta de date si Managerul de interactiuni. Acest lucru echivaleaza cu tratarea componentei de date ca parte a interactiunii Manager. (Retineti ca acest lucru inseamna ca limbajul de acces la date va fi oricare ar fi furnizat de IM.) Componenta de date este afisata cu un contur punctat in diagrama de mai sus, deoarece este distincta doar din punct de vedere logic. Cu toate acestea, la un moment dat in viitor, putem defini interfata dintre componenta de date si Managerul de interactiuni si vom solicita suport pentru un limbaj specific de acces la date, independent de Managerul de interactiuni. 4.2.3 Componentele modalitatii Componentele modalitatii, asa cum ar indica numele lor, sunt responsabile pentru controlul diferitelor modalitati de intrare si iesire pe dispozitiv. Prin urmare, acestia sunt responsabili de gestionarea oricarei interactiuni cu utilizatorii. Singura lor responsabilitate este de a implementa interfata definita in 5 Interfata intre Managerul de interactiune si componentele Modalitatii. Orice alta definitie a responsabilitatilor lor trebuie sa fie foarte specifica domeniului si aplicatiei. In special, nu definim un set de modalitati standard sau evenimentele pe care acestea ar trebui sa le genereze sau sa le gestioneze. Furnizorii de platforme au permisiunea de a defini noi componente de modalitate si li se permite sa plaseze intr-o singura functionalitate componenta care ar putea parea in mod logic sa apartina a doua modalitati diferite. Astfel, o platforma ar putea furniza o componenta de modalitate de scriere si vorbire care sa accepte intrarea simultana de voce si stilou. Astfel de componente combinate permit o cuplare mult mai stransa intre cele doua modalitati decat interfata libera definita aici. In plus, componentele modalitatii pot fi utilizate pentru a efectua functii generale de procesare care nu sunt asociate direct cu nicio modalitate de interfata specifica, de exemplu, In majoritatea cazurilor, va exista un markup specific in aplicatie corespunzator unei anumite modalitati, specificand modul in care ar trebui sa se desfasoare interactiunea cu utilizatorul. Cu toate acestea, nu avem nevoie de acest lucru si permitem in mod specific o componenta de modalitate fara markup al carei comportament este codat in software-ul sau. 4.2.4 Cadrul Runtime Runtime Framework este un termen de acoperire pentru toate serviciile de infrastructura necesare pentru executarea cu succes a unei aplicatii multimodale. Aceasta include pornirea componentelor, gestionarea comunicatiilor si inregistrarea in jurnal, etc. componente. 4.2.4.1 Stratul de transport al evenimentelor Stratul de transport al evenimentelor este responsabil pentru difuzarea evenimentelor intre IM si componentele Modalitatii. In mod clar, exista mai multe mecanisme de transport (protocoale) care pot fi utilizate pentru a implementa un strat de transport si diferite mecanisme pot fi utilizate pentru a comunica cu diferite componente de modalitate. Astfel, stratul de transport al evenimentului consta dintr-unul sau mai multe mecanisme de transport care leaga IM de diferitele componente ale modalitatii. porno up pubkicks.com devenir acteur porno image.google.ba xxl porno gratuit wisepayroll.com porno 1000 www.graciousgoodness.com film sex porno greathorsedesigns.com rue porno 3xh.probil.net videos porno free iyfhjdi.com porno sur netflix www.makiarismedia.net porno harry potter catalinaferries.com telecharger film porno www.askexperts.com sibel kekilli porno www.reservations-page.com porno a la ferme nuevobancoentrerios.net porno interdit dasso.abinitiopress.com porno stepmom demunoid.com porno camerounaise moviesforfree.tv porno ivoirienne billoni.com culotte porno noticesposted.info film porno hard westfieldnj.biz porno belle fille exit41.com acteur porno gay www.toxxictoyz.com Punem urmatoarele cerinte pe toate mecanismele de transport: Evenimentele trebuie livrate in mod fiabil. In special, mecanismul de livrare a evenimentelor trebuie sa raporteze o eroare daca un eveniment nu poate fi livrat, de exemplu daca punctul final de destinatie nu este disponibil. Evenimentele trebuie livrate la destinatie in ordinea in care sursa le-a generat. Nu exista nicio garantie cu privire la comanda de livrare a evenimentelor generate de diferite surse. De exemplu, daca Componenta Modalitate M1 genereaza evenimente E1 si E2 in aceasta ordine, in timp ce Componenta Modalitate M2 genereaza E3 si apoi E4, avem nevoie ca E1 sa fie livrat in Runtime Framework inainte de E2 si ca E3 sa fie livrat inainte de E4, dar nu exista garantie la comanda E1 sau E2 fata de E3 sau E4. Pentru o definitie mostra a unui strat de transport bazat pe HTTP, consultati Transportul E HTTP al evenimentelor ciclului de viata MMI . In proiectul actual, aceasta definitie este furnizata doar ca exemplu, dar in viitoarele proiecte este posibil sa avem nevoie de asistenta pentru aceasta si, eventual, pentru alte definitii ale stratului de transport. 4.2.4.1.1 Securitatea evenimentelor si a informatiilor Evenimentele vor avea adesea informatii sensibile, cum ar fi numerele de cont bancar sau informatii despre ingrijirea sanatatii. In plus, evenimentele trebuie, de asemenea, sa fie fiabile pentru ambele parti ale tranzactiei: de exemplu, daca un eveniment este conform cu o tranzactie financiara, ambele parti ale tranzactiei trebuie sa se poata baza pe acest acord. In prezent nu specificam mecanisme de livrare sau garantii de securitate interne utilizate de componentele modalitatii si de managerul de interactiuni. Cu toate acestea, credem ca orice sistem sigur va trebui sa indeplineasca cel putin urmatoarele cerinte: Urmatoarele doua cerinte optionale pot fi indeplinite utilizand sintaxa semnaturii XML W3 si specificatia de procesare [XMLSig]. Autentificare. Mecanismul de livrare a evenimentelor ar trebui sa fie capabil sa se asigure ca identitatea componentelor dintr-o interactiune este cunoscuta. Integritate. Mecanismul de livrare a evenimentelor ar trebui sa poata asigura ca continutul evenimentelor nu a fost modificat in timpul tranzitului.Restul de cerinte optionale pentru livrarea evenimentelor si securitatea informatiilor pot fi indeplinite urmand alte proceduri standard din industrie. Autorizare. O componenta ar trebui sa furnizeze o metoda pentru a se asigura ca numai componentele autorizate se pot conecta la aceasta. Confidentialitate. Mecanismul de livrare a evenimentelor ar trebui sa furnizeze o metoda pentru a pastra continutul mesajului in siguranta de orice acces neautorizat in timpul tranzitului. Non-repudierea. Mecanismul de livrare a evenimentelor, impreuna cu componentele, poate oferi o metoda pentru a se asigura ca, daca un mesaj este trimis de la un element constitutiv la altul, elementul constitutiv originar nu poate respinge mesajul pe care l-a trimis si ca elementul constitutiv receptor nu poate respinge faptul ca mesajul a fost trimis. primit. Mai multe protocoale pot fi necesare pentru a implementa aceste cerinte. De exemplu, TCP / IP si HTTP asigura livrarea fiabila a evenimentelor, dar ar putea fi necesare protocoale suplimentare precum TLS sau HTTPS pentru a indeplini cerintele de securitate. 4.2.5 Securitatea sistemului si a sistemului de operare Aceasta arhitectura nu specifica si nu va specifica cerintele de securitate interna ale unei componente de modalitate sau cadru de executie. 4.2.6 Gestionarea fluxului media Fluxurile media nu sunt de obicei circulate prin Interaction Manager. Aceasta specificatie nu specifica modul in care sunt stabilite conexiunile media, deoarece principalul accent al acestei specificatii este fluxul de date de control. Cu toate acestea, toate datele de control trimise in mod logic intre componentele modalitatii TREBUIE sa curga prin Interaction Manager. 4.2.7 Exemple Din motive de concretitate, iata cateva exemple de componente care ar putea fi implementate folosind limbajele existente. Retineti ca amestecam vizualizarile in timp de proiectare si in timp de executie aici, deoarece implementarea limbajului (browserul) serveste ca componenta de executie. CCXML [CCXML] ar putea fi utilizat atat ca document al controlerului, cat si ca limba de interactiune, interpretorul CCXML servind ca Runtime Framework si Interaction Manager. SCXML [SCXML] ar putea fi folosit ca limba a documentului controlerului si a Managerului de interactiuni Intr-un browser multimodal integrat, limbajul de marcare care a furnizat eticheta radacina a documentului ar defini documentul controler, in timp ce limbajul de scriptare asociat ar putea servi ca Manager de interactiuni. XHTML [XHTML] ar putea fi folosit ca marcaj pentru o componenta de modalitate. VoiceXML [VoiceXML] ar putea fi folosit ca marcaj pentru o componenta de modalitate. SVG [SVG] ar putea fi folosit ca marcaj pentru o componenta de modalitate. SMIL [SMIL] ar putea fi folosit ca marcaj pentru o componenta de modalitate. 5 Interfata intre Managerul de interactiune si componentele Modalitatii Cea mai importanta interfata din aceasta arhitectura este cea dintre Componentele Modalitatii si Managerul de interactiuni. Componentele Modalitatii comunica cu IM-ul prin evenimente asincrone. Componentele trebuie sa poata genera evenimente si sa gestioneze evenimente care le sunt livrate in mod asincron. Nu este necesar ca componentele sa utilizeze aceste evenimente intern, deoarece implementarea unei componente date este o cutie neagra pentru restul sistemului. In general, este de asteptat ca Componentele sa ridice evenimente atat in ​​mod automat (adica ca parte a implementarii lor), cat si sub control de majorare. Majoritatea evenimentelor definite aici apar in perechi cerere / raspuns. Adica, o parte (fie IM, fie un MC) trimite o cerere, iar cealalta returneaza un raspuns. (Exceptia este evenimentul ExtensionNotification, care poate fi trimis de oricare dintre parti.) In fiecare caz, se specifica care parte trimite cererea si care parte returneaza raspunsul. Daca partea gresita trimite o cerere sau un raspuns, partea destinatara TREBUIE sa o ignore. In descrierile de mai jos, spunem ca partea originara „MAI” trimite cererea, deoarece depinde de logica interna a partii originare sa decida daca doreste sa invoce comportamentul pe care cererea l-ar declansa. Pe de alta parte, spunem ca partea care primeste „TREBUIE” trimiteti raspunsul, deoarece este obligatoriu sa trimiteti raspunsul daca si cand se primeste solicitarea. 5.1 Campuri de eveniment comune Conceptul de „context” este de baza pentru aceste evenimente descrise mai jos. Un context reprezinta o singura interactiune extinsa cu unul (sau posibil mai multi) utilizatori. Intr-un caz simplu unimodal, un context poate fi la fel de simplu ca un apel telefonic sau o sesiune SSL. Cu toate acestea, cazurile multimodale sunt mai complexe, deoarece diferitele modalitati nu pot fi utilizate in acelasi timp. De exemplu, intr-o interactiune voce-plus-web, de exemplu, partajarea web cu un apel VoIP asociat, ar fi posibil sa incheiti partajarea web si sa continuati apelul vocal, sau sa renuntati la apelul vocal si sa continuati prin chat web. In aceste cazuri, un singur context persista in diferite configuratii de modalitati. In general, intentionam ca „context” sa acopere cea mai lunga perioada de interactiune pe care ar avea sens ca componentele sa stocheze starea sau informatiile. Pentru exemple de sintaxa XML concreta pentru toate aceste evenimente, consultati Unele exemple de evenimente din ciclul de viata Urmatoarele campuri comune sunt partajate de mai multe evenimente din ciclul de viata: 5.1.1 Context Un URI unic in intregul sistem si utilizat pentru identificarea acestei interactiuni. Toate evenimentele legate de o anumita interactiune vor utiliza acelasi URI de context. Evenimentele care contin un context URI diferit vor face parte din alte interactiuni, fara legatura. 5.1.2 Sursa Un URI care reprezinta adresa expeditorului evenimentului. 5.1.3 Tinta Un URI care reprezinta adresa destinatiei evenimentului. 5.1.4 RequestID Un identificator unic pentru o pereche Solicitare / Raspuns. Majoritatea evenimentelor din ciclul de viata apar in perechi de solicitari / raspunsuri care impartasesc un ID de solicitare comun. Pentru fiecare astfel de pereche, acest id trebuie sa fie unic in contextul dat. 5.1.5 Stare O enumerare a „succesului” si „esecului”. Evenimentul Raspuns al unei perechi Cerere / Raspuns va utiliza acest camp pentru a raporta daca a reusit sa indeplineasca cererea. 5.1.6 StatusInfo O valoare arbitrara care ofera informatii suplimentare despre erori in cazurile in care starea este „esec”. 5.1.7 Date Un camp optional care contine date arbitrare. Formatul si semnificatia acestor date sunt specifice aplicatiei. 5.1.8 Confidential Un camp optional care indica daca continutul acestui eveniment trebuie tratat ca fiind confidential. Valoarea implicita este „falsa”. In cazul in care valoarea este „adevarata”, implementarea Componentei Manager de interactiune si Modalitate TREBUIE sa nu inregistreze informatiile sau sa le puna la dispozitie in niciun fel pentru terti, cu exceptia cazului in care este instruit in mod explicit de catre autorul aplicatiei. 5.2 Evenimente standard ale ciclului de viata Arhitectura multimodala defineste urmatoarele evenimente de baza ale ciclului de viata care trebuie sustinute de toate componentele modalitatii. Aceste evenimente permit Managerului de interactiuni sa invoce componente de modalitate si sa primeasca rezultate de la acestea. Acestea formeaza astfel interfata de baza intre componentele IM si Modalitate. Retineti ca evenimentul „Extensie” ofera extensibilitate, deoarece contine continut XML arbitrar si poate fi ridicat fie de IM, fie de Componentele Modalitatii in orice moment, odata ce contextul a fost stabilit. De exemplu, o aplicatie bazata pe recunoasterea vorbirii ar putea utiliza evenimentul „Extensie” pentru a comunica rezultatele recunoasterii sau faptul ca vorbirea a inceput, etc. 5.2.1 NewContextRequest / NewContextResponse O componenta de modalitate POATE trimite o cerere NewContextR catre IM pentru a solicita crearea unui nou context. Daca acest eveniment este trimis, IM TREBUIE sa raspunda cu evenimentul NewContextResponse. Retineti ca IM POATE crea un nou context / interactiune fara o noua cerere NewContextRequest. Intr-un astfel de caz, IM va trimite un PrepareRequest sau StartRequest catre componentele de modalitate care contin un nou ID de context. 5.2.1.2 Proprietati NewContextResponse RequestID. Vezi 5.1.4 RequestID . TREBUIE sa se potriveasca cu RequestID in evenimentul NewContextRequest. Stare Vezi 5.1.5 Stare . Daca valoarea este Succes, NewContextRequest a fost acceptata si va fi inclus un nou identificator de context. (Vezi mai jos). Daca valoarea este Esec, nu va fi inclus niciun identificator de context si informatii suplimentare vor fi incluse in campul StatusInfo. Context A se vedea 5.1.1 Context . Un identificator de context nou creat. Acest camp TREBUIE sa fie gol daca starea este Esec. StatusInfo Consultati 5.1.6 StatusInfo . Sursa A se vedea 5.1.2 Sursa . Tinta Vezi 5.1.3 Tinta . Date Vezi 5.1.7 Date . Confidential Vezi 5.1.8 Confidential . 5.2.2 PrepareRequest / PrepareResponse IM POATE trimite un PrepareRequest pentru a permite componentelor Modalitatii sa preincarca marcajul si sa se pregateasca pentru a rula. Componentele modalitatii nu sunt obligate sa ia nicio actiune speciala ca raspuns la acest eveniment, dar TREBUIE sa returneze un eveniment PrepareResponse. Componentele de modalitate care returneaza un eveniment PrepareResponse cu starea de „succes” TREBUIE sa fie gata sa ruleze cu o intarziere de aproape 0 la primirea cererii StartRequest. O componenta data poate executa o singura StartRequest simultan (vezi 5.2.3 StartRequest / StartResponse ). Cu toate acestea, Managerul de interactiuni POATE trimite mai multe evenimente PrepareRequest catre o componenta de modalitate pentru acelasi context, fiecare facand referire la un ContentURL diferit sau continand continut diferit in linie, inainte de a trimite un StartRequest. In acest caz, Componenta Modalitatii TREBUIE sa se pregateasca pentru a rula oricare dintre continutul specificat. Evenimentul StartRequest ulterior va determina ce continut specific Componenta Modalitatii ar trebui sa execute. 5.2.2.1 Proprietati PrepareRequest RequestID. Vezi 5.1.4 RequestID . Un identificator nou generat utilizat pentru a identifica aceasta solicitare. Context A se vedea 5.1.1 Context . Retineti ca IM-ul poate reutiliza aceeasi valoare de context in apeluri succesive pentru a Prepara daca sunt toate in aceeasi sesiune / apel. ContentURL Adresa URL optionala a continutului pe care ar trebui sa o execute Componenta Modalitate. Include parametri standard de preluare HTTP, cum ar fi varsta maxima, maximul invechit, preluarea timpului de preluare etc. Incompatibil cu continutul. Continut Optional Marcare inline pentru executarea componentei Modalitate. Incompatibil cu contentURL. Retineti ca este legal ca atat contentURL, cat si continutul sa fie goale. Intr-un astfel de caz, Componenta Modalitate va reveni la comportamentul sau implicit codificat, care ar putea consta in returnarea unui eveniment de eroare sau in rularea unui script preconfigurat sau codat in mod dur. Sursa A se vedea 5.1.2 Sursa . Tinta Vezi 5.1.3 Tinta . Date Vezi 5.1.7 Date . Confidential Vezi 5.1.8 Confidential . 5.2.3 StartRequest / StartResponse IM trimite o StartRequest pentru a invoca o componenta de modalitate. Componenta Modalitate TREBUIE sa returneze un eveniment StartResponse ca raspuns. Daca Runtime Framework a trimis un eveniment Prepare anterior, POATE lasa gol campurile contentURL si content si Componenta Modalitate TREBUIE sa utilizeze valorile din evenimentul Prepare. Daca IM include valori noi pentru aceste campuri, valorile din evenimentul Start le inlocuiesc pe cele din evenimentul Pregatiti. Daca Interaction Manager trimite mai multe StartRequests catre o anumita componenta de modalitate inainte de a primi o notificare DoneNotification, fiecare astfel de cerere le inlocuieste pe cele anterioare. Astfel, daca o componenta de modalitate primeste o noua StartRequest in timp ce executa una anterioara, TREBUIE fie sa inceteze executarea StartRequest-ului anterior si sa inceapa sa execute continutul specificat in cea mai recenta StartRequest, fie sa respinga noua StartRequest, returnand un StartResponse cu starea egala catre esec'. 5.2.3.1 Proprietati StartRequest RequestID. Vezi 5.1.4 RequestID . Un identificator nou generat utilizat pentru a identifica aceasta solicitare. Context A se vedea 5.1.1 Context . Retineti ca IM-ul poate reutiliza aceeasi valoare de context in apeluri succesive pentru a incepe daca toate sunt in aceeasi sesiune / apel. ContentURL Adresa URL optionala a continutului pe care ar trebui sa o execute Componenta Modalitate. Include parametri standard de preluare HTTP, cum ar fi varsta maxima, maximul invechit, preluarea timpului de preluare etc. Incompatibil cu continutul. Continut Optional Marcare inline pentru executarea componentei Modalitate. Incompatibil cu contentURL. Retineti ca este legal ca atat contentURL, cat si continutul sa fie goale. Intr-un astfel de caz, componenta Modalitate va folosi fie valorile furnizate in cea mai recenta Pregatire, daca a fost trimisa, fie va reveni la comportamentul sau implicit codificat, care ar putea consta in returnarea unui eveniment de eroare sau in executarea unui program preconfigurat sau -script codat. Sursa A se vedea 5.1.2 Sursa . Tinta Vezi 5.1.3 Tinta . Date Vezi 5.1.7 Date . Confidential Vezi 5.1.8 Confidential . 5.2.4 Notificare Gata Componenta Modalitate MAIreturneaza o notificare efectuata catre IM pentru a indica faptul ca a ajuns la sfarsitul procesarii sale. Evenimentul DoneNotification este destinat sa indice finalizarea procesarii care a fost initiata de Managerul de interactiuni cu o cerere Start. De exemplu, o componenta de modalitate vocala ar putea utiliza evenimentul DoneNotification pentru a indica finalizarea unei sarcini de recunoastere. In acest caz, evenimentul DoneNotification ar putea avea rezultatul recunoasterii exprimat folosind EMMA. Cu toate acestea, pot exista sarcini care nu au un scop specific. De exemplu, Interaction Manager poate trimite o StartRequest catre o componenta de modalitate grafica, solicitandu-i sa afiseze anumite informatii. O astfel de sarcina nu are neaparat un scop specific si astfel componenta de modalitate grafica nu ar putea trimite niciodata un eveniment DoneNotification catre Managerul de interactiuni. 5.2.5 Anulare cerere / Anulare raspuns IM POATE trimite o solicitare CancelRop pentru a opri procesarea in componenta Modalitate. In acest caz, componenta Modalitate TREBUIE sa returneze un CancelResponse. 5.2.6 PauseRequest / PauseResponse IM POATE trimite o solicitare PauseR pentru a suspenda procesarea de catre componenta Modalitate. Componentele de modalitate pot ignora aceasta comanda daca nu pot face pauza, dar TREBUIE sa returneze un raspuns Pause. 5.2.7 ResumeRequest / ResumeResponse IM POATE trimite ResumeRequest pentru a relua procesarea care a fost intrerupta de o PauseRequest anterioara. Implementarile pot ignora aceasta comanda daca nu pot intrerupe, dar TREBUIE sa returneze un ResumeResponse. 5.2.8 Notificare extindere Acest eveniment POATE fi generat fie de IM, fie de Componenta Modalitate. Este folosit pentru a incapsula evenimente specifice aplicatiei care sunt extensii la cadrul definit aici. De exemplu, daca o aplicatie care contine o modalitate de voce dorea ca acea componenta de modalitate sa notifice managerul de interactiuni atunci cand vorbirea a fost detectata, aceasta ar determina ca modalitatea de voce sa genereze un eveniment de extensie (cu un „nume” de genul „speechDetected”) la timpul potrivit. 5.2.9 ClearContextRequest / ClearContextResponse IM POATE trimite o ClearContextRequest pentru a indica faptul ca contextul specificat nu mai este activ si ca orice resurse asociate acestuia pot fi eliberate. Componentele Modalitatii nu sunt obligate sa ia nicio actiune speciala ca raspuns la aceasta comanda, dar TREBUIE sa returneze un ClearContextResponse. 5.2.10 StatusRequest / StatusResponse Mesajul StatusRequest si StatusResponse corespunzator sunt destinate sa ofere functionalitati de pastrare in viata, informand IM-ul despre prezenta diferitelor componente ale modalitatii. Retineti ca ambele mesaje pot fi fie legate de un anumit context, fie trimise catre serverul de baza independent de orice interactiune a utilizatorului. In primul caz, IM solicita informatii despre starea interactiunii specifice (adica contextul). In acest din urma caz, se intreaba efectiv serverul de baza daca ar putea porni un nou context daca i se solicita acest lucru. Mesajul StatusRequest este trimis de la IM catre o componenta de modalitate. Asteptand o perioada de timp dependenta de implementare pentru un mesaj StatusResponse, IM poate determina daca Componenta Modalitate este activa. Daca actualizarile automate sunt activate, Componenta Modalitatii ar trebui sa trimita mai multe mesaje StatusResponse ca raspuns la un singur mesaj StatusRequest. 5.2.10.1 Proprietati cerere stare RequestID. Vezi 5.1.4 RequestID . Un identificator nou generat utilizat pentru a identifica aceasta solicitare. Context A se vedea 5.1.1 Context . Specificatie optionala a contextului pentru care este solicitat statutul. Daca nu este prezenta, cererea este directionata catre serverul de baza, si anume software-ul care ar gazdui un nou context daca s-ar crea unul. RequestAutomaticUpdate. O valoare booleana care indica daca Componenta Modalitate ar trebui sa trimita mesaje StatusResponse in curs fara a astepta mesaje suplimentare StatusRequest din Runtime Framework. Sursa A se vedea 5.1.2 Sursa . Tinta Vezi 5.1.3 Tinta . Date Vezi 5.1.7 Date . Confidential Vezi 5.1.8 Confidential . 5.2.10.2 Proprietati StatusResponse RequestID. Vezi 5.1.4 RequestID . TREBUIE sa se potriveasca cu RequestID in evenimentul StatusRequest. Actualizare automata. Un boolean care indica daca Componenta Modalitatii va continua sa trimita mesaje StatusResponse in viitor fara a astepta un alt mesaj StatusRequest. Context A se vedea 5.1.1 Context . O specificatie optionala a contextului pentru care se returneaza starea. Daca nu este prezent, raspunsul reprezinta starea serverului de baza. Stare O enumerare a „Viu” sau „Moart”. Semnificatia acestor valori depinde daca parametrul „context” este prezent. Daca este, starea este „In viata” inseamna ca sesiunea specificata este inca activa si capabila sa gestioneze noi evenimente din ciclul de viata. Starea „Dead” inseamna ca contextul s-a incheiat si nu mai este disponibila nicio interactiune cu utilizatorul. Daca parametrul „context” nu este furnizat, starea se refera la serverul de baza. O valoare „In viata” indica faptul ca componenta Modalitate este capabila sa gestioneze mesajele de pregatire si pornire ulterioare. Daca starea este „Moarta”, nu poate gestiona astfel de solicitari. Astfel, starea „Dead” indica faptul ca componenta de modalitate se deconecteaza. Daca IM primeste un mesaj StatusResponse cu starea „ Sursa A se vedea 5.1.2 Sursa . Tinta Vezi 5.1.3 Tinta . Date Vezi 5.1.7 Date . Confidential Vezi 5.1.8 Confidential . 5.3 Statele componente ale modalitatii Intr-un context stabilit, o componenta de modalitate functioneaza intr-una din cele trei stari: Inactiv, Rularea sau Intrerupta. Solicitarea evenimentelor din ciclul de viata primite de la Interaction Manager implica actiuni specifice si tranzitii intre state. Tabelul de mai jos defineste actiunile MC, tranzitiile de stare si continutul raspunsului pentru fiecare eveniment de solicitare posibil trimis de IM catre un MC intr-o anumita stare. Un esec: adnotarea ErrorMessage indica faptul ca evenimentul Cerere specificat este fie invalid sau redundant in starea specificata. In acest caz, componenta Modalitate trebuie sa raspunda prin trimiterea unui eveniment de raspuns corespunzator cu Status = Failure si StatusInfo = ErrorMessage. In toate celelalte cazuri, Modalitatea ar trebui sa efectueze actiunea solicitata, eventual trecand la un alt stat asa cum este indicat.eveniment / stare Inactiv Rulare Intrerupt Prepare-solicitare Preincarca sau actualizeaza continut preincarca sau actualizeaza continut preincarca sau actualizeaza continut StartRequest Tranzitie: Se ruleaza utilizati continut nou daca este furnizat, altfel utilizati ultimul continut disponibilopriti procesarea continutului curent, reporniti ca in tranzitia inactiva : ruleaza opriti procesarea continutului curent, reporniti ca in modul Repaus Esec: Nu Continut daca MC necesita continutul pentru a rula si nu a fost furnizat niciunul Anulare Solicitare esec: Nu se executa tranzitia: tranzitie inactiva : pauza inactiva Solicita esec: nu se executa tranzitie: esueaza intrerupt : deja esueaza intrerupt : Cant pauza daca MC nu este in masura sa intrerupa esueaza reluarea solicitarii : nu se executa deja Tranzitie: rulare StatusRequest trimitere stare trimitere stare trimitere stare ClearContextRequest inchidere sesiune inchidere sesiune inchidere sesiune inchidere Iata o reprezentare in grafic de stare a acestor tranzitii: Un exemplu de evenimente din ciclul de viata A.1 newContextRequest (de la MC la IM) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: newContextRequest source = "someURI" target = "someOtherURI" requestID = " request-1 "> </ mmi: newContextRequest> </ mmi: mmi> A.2 newContextResponse (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: newContextResponse source = "someURI" target = "someOtherURI" requestID = " request-1 "status =" success "context =" URI-1 "> </ mmi: newContextResponse> </ mmi: mmi> A.3 prepareRequest (de la IM la MC, cu marcaj extern) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: prepareRequest source = "someURI" target = "someOtherURI" context = " URI-1 "requestID =" request-1 "> <mmi: contentURL href =" someContentURI "max-age =" "fetchtimeout =" 1s "/> </ mmi: prepareRequest> </ mmi: mmi> A.4 prepareRequest (de la IM la MC, marcaj VoiceXML in linie) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0" xmlns: vxml = "http://www.w3.org/2001/vxml "> <mmi: prepareRequest source =" someURI "target =" someOtherURI "context =" URI-1 "requestID =" request-1 "> <mmi: content> <vxml: vxml version =" 2.0 "> <vxml: form > <vxml: block> Hello World! </ vxml: block> </ vxml: form> </ vxml: vxml> </ mmi: content> </ mmi: prepareRequest> </ mmi: mmi> A.5 prepareResponse (de la MC la IM, succes) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: prepareResponse source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-1 "status =" success "/> </ mmi: mmi> A.6 prepareResponse (de la MC la IM, esec) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: prepareResponse source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-1 "status =" failure "> <mmi: statusInfo> NotAuthorized </ mmi: statusInfo> </ mmi: prepareResponse> </ mmi: mmi> A.7 startRequest (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: startRequest source = "someURI" target = "someOtherURI" context = " URI-1 "requestID =" request-1 "> <mmi: contentURL href =" someContentURI "max-age =" "fetchtimeout =" 1s "/> </ mmi: startRequest> </ mmi: mmi> A.8 startResponse (de la MC la IM) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: startResponse source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-1 "status =" failure "> <mmi: statusInfo> NotAuthorized </ mmi: statusInfo> </ mmi: startResponse> </ mmi: mmi> A.9 facut Notificare (de la MC la IM, cu rezultatul EMMA) Acest ID de cerere corespunde ID-ului de cerere al evenimentului „startRequest” care a pornit-o. <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0" xmlns: emma = "http://www.w3.org/2003/04 / emma "> <mmi: doneNotification source =" someURI "target =" someOtherURI "context =" someURI "status =" success "requestID =" request-1 "confidential =" true "> <mmi: data> <emma: emma version = "1.0"> <emma: interpretare id = "int1" emma: mediu = "acustic" emma: incredere = ". 75" emma: mode = "voce" emma: token = "zboruri de la Boston la Denver"> < origine> Boston </origin> <destination> Denver </destination> </ emma: interpretare> </ emma: emma> </ mmi: data> </ mmi: doneNotification> </ mmi: mmi> A.10 facut Notificare (de la MC la IM, cu rezultatul EMMA „fara intrare”) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: doneNotification source = "someURI" target = "someOtherURI" context = " someURI "status =" success "requestID =" request-1 "> <mmi: data> <emma: emma version =" 1.0 "> <emma: interpretare id =" int1 "emma: no-input =" true "/> </ emma: emma> </ mmi: data> </ mmi: doneNotification> </ mmi: mmi> A.11 Anuleaza cererea (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: cancelRequest source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-1 "/> </ mmi: mmi> A.12 anuleaza raspunsul (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: cancelResponse source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-1 "status =" success "/> </ mmi: mmi> A.13 pauseRequest (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: pauseRequest context = "someURI" source = "someURI" target = " someOtherURI "imediat =" adevarat "requestID =" request-1 "/> </ mmi: mmi> A.14 pauza Raspuns (de la MC la IM) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: pauseResponse source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-1 "status =" success "/> </ mmi: mmi> A.15 CVCere (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: resumeRequest context = "someURI" source = "someURI" target = " someOtherURI "requestID =" request-1 "/> </ mmi: mmi> A.16 CV Raspuns (de la MC la IM) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: resumeResponse source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-2 "status =" success "/> </ mmi: mmi> A.17 Extensie Notificare (anterior evenimentul de date, trimis in ambele directii) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: extensionNotification name = "appEvent" source = "someURI" target = " someOtherURI "context =" someURI "requestID =" request-1 "> <applicationdata /> </ mmi: extensionNotification> </ mmi: mmi> A.18 clearContextRequest (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: clearContextRequest source = "someURI" target = "someOtherURI" context = " someURI "requestID =" request-2 "/> </ mmi: mmi> A.19 cerere de stare (de la IM la MC) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: statusRequest requestAutomaticUpdate = "true" source = "someURI" target = " someOtherURI "requestID =" request-3 "context =" aToken "/> </ mmi: mmi> A.20 statusRaspuns (de la MC la IM) <mmi: mmi xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" version = "1.0"> <mmi: statusResponse automaticUpdate = "true" status = "viu" source = " someURI "target =" someOtherURI "requestID =" request-3 "context =" aToken "/> </ mmi: mmi> B Scheme de evenimente B.1 mmi.xsd <? xml version = "1.0" encoding = "UTF-8"?> <xs: schema xmlns: mmi = "http://www.w3.org/2008/04/mmi-arch" xmlns: xs = "http : //www.w3.org/2001/XMLSchema "targetNamespace =" http://www.w3.org/2008/04/mmi-arch "> <xs: annotation> <xs: documentation xml: lang =" ro "> Definitia schemei pentru evenimentele ciclului de viata MMI versiunea 1.0 </ xs: documentation> </ xs: annotation> <xs: include schemaLocation =" mmi-attribs.xsd "/> <xs: include schemaLocation =" NewContextRequest.xsd "/ > <xs: include schemaLocation = "NewContextResponse.xsd" /> <xs: include schemaLocation = "ClearContextRequest.xsd" /> <xs: include schemaLocation = "ClearContextResponse.xsd" /> <xs: include schemaLocation = "CancelRequest.xsd "/> <xs:include schemaLocation = "CancelResponse.xsd" /> <xs: include schemaLocation = "DoneNotification.xsd" /> <xs: include schemaLocation = "ExtensionNotification.xsd" /> <xs: include schemaLocation = "PauseRequest.xsd" /> < xs: include schemaLocation = "PauseResponse.xsd" /> <xs: include schemaLocation = "PrepareRequest.xsd" /> <xs: include schemaLocation = "PrepareResponse.xsd" /> <xs: include schemaLocation = "ResumeRequest.xsd" / > <xs: include schemaLocation = "ResumeResponse.xsd" /> <xs: include schemaLocation = "StartRequest.xsd" /> <xs: include schemaLoc

Categorie:
Taguri:
Data adaugarii: