+ Parser Protokolle

Allgemein

Die hier beschriebenen Protokolle arbeiten textbasiert.

Schnittstelle zum Spracherkenner

Beschreibung

Beim ersten Connect wird ein einzeiliges Banner geschickt.

Als Eingabe werden Wortlisten der Form "[geh,wohin,der,pfeffer,waechst]" oder das Wort "close" erwartet, Leerzeichen werden ignoriert.

Die Antworten erfolgen generell in der Form "123 Meldung", wobei "123" ein Statuscode ist und "Meldung" die eigentliche Meldung (also ein auszuführender Befehl oder eine Fehlermeldung).

Statuscode Bedeutung
0 Syntaxfehler (Eingabe ist kein Prolog-Konstrukt)
1 Eingabe verstanden, der auszuführende Befehl wird als Meldung mitgeschickt
2 wie 1, der Befehl wird jedoch nicht sofort ausgefuehrt werden koennen
5 Der Befehl in der Meldung konnte nicht ausgefuehrt werden
6 Eingabe konnte nicht geparst werden, Meldung enthaelt u.U. Fehlergrund
7 Queue wurde gerade geloescht
8 Aborted wurde als Rueckgabe zurueckgegeben

Ausser bei Statuscode 5 werden alle Meldungen sofort als Antwort auf die letzte Eingabe gesendet. Eine Meldung mit Statuscode 5 wird dann gesendet, wenn der Roboter an den Parser eine failure-Meldung gesendet hat.

Schnittstelle zum Roboter

Beschreibung

Der Roboter nimmt die Verbindung zum Parser auf, empfaengt das Begruessungsbanner und wartet auf Befehle. Nachdem der Roboter einen Befehl empfangen hat, wird der naechste Befehl erst an ihn geschickt, wenn er failure oder success zurueckgemeldet hat.

Befehle

Die Befehle haben die Form "aktion(id123, arg [, arg ...])". "id123" ist eine eindeutige Auftrags-ID, die immer an erster Stelle steht. Danach folgen Argumente für den Befehl.

Befehl Bedeutung
goto(id, ort) Das zweite Argument ist der Zielort. Angegeben wird der eindeutige Bezeichner für den jeweiligen Raum (siehe EindeutigeRaumBezeichner).
abort(id) Abruch des schon angegebenen Befehls.

Rueckmeldungen vom Roboter

Meldung Bedeutung
ack(id) Arbeitsauftrag mit der Id "id" wurde angenommen
success(id) Der Arbeitsauftrag mit der ID "id" konnte erfolgreich ausgefuehrt werden
failure(id) Fehlschlag
aborted(id) Der Abbruch vom Arbeitsauftrag mit der ID "id"

Beispieldialog

Beteiligte: Spracherkenner E, Roboter R, Parser P

E > P: (stellt Verbindung her)
P > E: "new_recognizer_conn: recognizer3"

R > P: (stellt Verbindung her)
P > R: new_robbi_conn: robbi1

E > P: "[gehe,zu,wolfgang]"
P > R: "goto(cmd1, wolfgang)"
P > E: "1 goto(cmd1, wolfgang)"
R > P: "ack(cmd1)"

(R fuehrt den Befehl aus)

R > P: "success(cmd1)"

E > P: "[gehe,in,die,teekueche]"
P > R: "goto(cmd2, teekueche)"
P > E: "1 goto(cmd2, teekueche)"

(E schickt einen neuen Befehl, bevor R failure oder success gemeldet hat:)

E > P: "[[komm,in,die,programmierkunsthalle]]"
P > E: "2 goto(cmd3, iver_detlev_monique)

(R meldet, dass er cmd3 nicht ausfuehren konnte)

R > P: "failure(cmd3)"
P > E: "5 goto(cmd2, teekueche)"

P > R: "goto(cmd3, iver_detlev_monique)"
R > P: "success(cmd3)"

(Fehlerhafte Eingaben vom Erkenner)

E > P: "]]invalid"
P > E: "0 could not parse" 

E > P: "[[gummi,krabbe]]"
P > E: "6 das verstehe ich nicht."

E > P: close
P > E: (beendet Verbindung)

R > P: close
P > R: (beendet Verbindung)

-- AlexGrupe - 02 May 2003
Warning: Can't find topic NatInt.WebLeftBarExample

 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback