Dialog - QiChat
Dialog - QiChat
Link-uri de care avem nevoie:
Resurse în limba engleză:
Lista de animații:
Exemple discutate:
Reguli, alegere [], optional {} , ^rand
Variabile
Proposal
Proposal cu taguri
Teorie
Topic
Un Topic este o tema, o idee principală despre care vrem să vorbim cu robotul. Tehnic vorbind, un Topic este un script(fișier) care conține o regulă (Rule), despre care vorbim mai târziu. Antetul său conține obligatoriu numele și limba Topic-ului.
Sintaxă:
Exemplu:
Pentru a crea primul topic, vezi Creating Dialog boxes. Alte referințe: name, language
Rule (Regulă)
O regulă asociază un Human input (ce spune omul) cu un Robot ouptut (ce raspunde robotul) corespunzător. Delimitatorii (Delimiters), Caracterele speciale (Special characters) și Funcțiie si proprietățile regulilor( Rule functions and properties) dau posibilitatea de a crea reguli puternice, care conțin într-o linie mai multe cazuri.
Există 3 tipuri de reguli:
Human input (ce spune omul)
Human input (ce spune omul) este o parte a User rule sau User subrule delimitată de paranteze, care conține mesajul ce va fi recunoscut de către robot. Cand un Human input se potrivește, adică mesajul este recunoscut, o Regulă (Rule) este acționată (triggered). Cand o regula este acționată, se întâmplă următoarele:
Robot output se execută (spus și/sau făcut).
Focusul este setat pe Tema(Topicul) ce conține regulile.
Robot output (ce spune robotul)
Este o parte a User rule, User subrule, sau Proposal, ce conține ce va spune sau face robotul cand regula este acționată.
Concept
Conceptul este o listă de cuvinte și/sau fraze care se referă la o idee.
Exemple:
Exemple:
Sintaxă:
Pentru a declara un concept static:
unde:
word1 și word2 sunt cuvinte izolate
“word3 word4” este o frază, adică un grup de câteva cuvinte
name este numele conceptului static
Exemplu:
Execuție:
Pentru a declara un concept dinamic:
Notă: un concept dinamic poate conține doar o listă de cuvinte sau fraze într-un singur Choice (alegere), notată cu [ ].
Exemple:
Referințe: Choice: [ ], Optional part: { }, Funcții (^rand , ^first ), Variable: $, Conditions: == > <> <
Activat/dezactivat
Topics si Rules trebuie să fie activate pentru a fi nu fi ignorate de către Dialog engine (Motorul de dialog). Este posibil sa activezi sau dezactivezi doar o parte din ele, pentru a crea un context conversațional și/sau să reduci numărul de reguli administrate (managed) în memorie.
Activarea unui Topic
In Choregraphe, un Topic se activează sau dezactivează când Dialog topic box este încărcat(loaded) și descărcat (unloaded)
Într-un script, poți de asemenea să folosești:
```
ALDialogProxy::activateTopic()
ALDialogProxy::deactivateTopic()
```
Activarea unei reguli
Toate Regulile unui Topic dezactivat sunt dezactivate.
Toate Regulile unui Topic activat sunt activate, cu excepția situațiilor în care:
este un User subrule și nu este atașată de ultima regula activată
este un Proposal deja executat
conține o eticheta(tag) dezactivată
conține funcția ^private, iar Topic nu are Focusul.
Focus
Mai multe Topicuri pot fi activate simultan, dar numai unul poate avea Focus. Focusul este dat Topicului care conține ultima regula activata. Cu excepția situației în care Topicul conține proprietatea ^noStay. Daca în diferite topicuri sunt reguli similare, atunci prioritate are Topicul ce are Focus. Daca nici un topic nu are focus, atunci alegerea este random(aleatorie). În unele cazuri, Dialog engine poate decide singur să dea Focusul unei Reguli și să spună primul ei Proposal. Funcția ^noPick face ca această selecție automată să nu se întâmple. Funcții și proprietăți importante:
^noPick ,
^noStay ,
^resetOnFocus ,
^fallback .
Recover section (Secțiunea de restabilire)
Regulile plasate după secțiunea de restabilire au o prioritate mai mică. Sintaxă:
Exemplu:
Execuție:
Prioritatea regulilor
Refolosirea Human input
Este posibil să salvezi o parte din Human input(ce spune omul) pentru a o folosi in răspunsul robotului (Robot output). Referințe: Input storing: _
Variabile și evenimente
ALDialog folosește ALMemory pentru a stoca și recupera datele. Orice date stocate pot fi văzute ca variabile sau evenimente. Referințe: variable , event
Skin
Un Skin este o meta regulă, ce definește transformările care vor fi aplicate pe Robot outputs deja definite. Un Skin poate fi plasat în orice Topic și este activat când un Robot output se potrivește. Referințe: Transformation rules
Anexe:
Rezumat:
Lista de limbi în care poate vorbi Nao:
Resurse utile:
Website oficial:
http://doc.aldebaran.com/2-1/naoqi/audio/dialog/dialog.html
Sintaxa:
http://doc.aldebaran.com/2-1/naoqi/audio/dialog/dialog-syntax_full.html
QiDialog CheatSheet:
http://doc.aldebaran.com/2-1/naoqi/audio/dialog/aldialog_syntax_cheat_sheet.html http://doc.aldebaran.com/2-1/naoqi/audio/dialog/aldialog_syntax_overview.html
Limbi disponibile:
http://doc.aldebaran.com/2-1/family/robots/languages.html#dialog-supported-languages
Tutorial YouTube:
Exerciții practice:
1.Creează un program ce folosește Dialog și poate avea o discuție despre tipuri de mâncare 2.Transformă-l pe Frank într-o persoană foarte amabilă care lucrează la serviciul clientelă pentru un operator de telefonie. El poate răspunde la următoarele întrebări:
Câți bani am în cont?
Care este numărul meu de telefon?
La ce ora a fost ultimul apel?
*Nivel de dificultate:
Folosește valori prestabilile de la început(de ex. u:(întrebare):3, 4.5, 203)
Folosește delimitatorul choice și random să aleagă dintr-o listă de răspunsuri
Folosește boxele random int si random float*
3.Creează un program ce folosește Dialog, astfel încît să poți întreba roboțica ce este Choregraphe și despre ce boxe ați învățat până acum.
Last updated