Beschreibungdescription
Verfahren und Anordnung zur Darstellung von Software- Assistenten auf mobilen EndgerätenMethod and arrangement for displaying software assistants on mobile devices
Die Erfindung betrifft ein Verfahren und eine Anordnung zur Darstellung von Software-Assistenten auf mobilen Endgeräten, wobei darunter Softwareprogramme verstanden werden, die mit dem Benutzer interagieren, ihn bei seiner Arbeit unterstützen und eine grafische Repräsentation, meist in Form einer „lebendigen" Figur, z.B. Mensch oder Tier, haben.The invention relates to a method and an arrangement for displaying software assistants on mobile devices, which are understood to mean software programs that interact with the user, support him in his work and a graphic representation, usually in the form of a “living” figure, for example Human or animal.
Bisherige Software-Assistenten, wie z.B. dem weitverbreitete Büroklammer-Assistent des Microsoft Office Pakets, sind mit starren Verhaltensstrukturen ausgestattet die sehr eng mit der konkreten Aufgabe des Assistenten verbunden ist.Previous software assistants, such as The widespread paper clip assistant of the Microsoft Office package are equipped with rigid behavioral structures that are very closely linked to the specific task of the assistant.
Die Modellierung des Verhaltens dieser „lebensnahen" Assistenten reflektiert ein Stück weit natürliches Verhalten und kann daher sehr komplex sein. Da der Assistent auf Benutzereingaben reagiert, ist zudem das Verhalten sehr dynamisch. Um den Assistenten attraktiv und abwechslungsreich zu gestalten, muss bspw. sein Aussehen wirkungsvoll und flexibel beschrieben werden.The modeling of the behavior of these "real-life" assistants reflects some natural behavior and can therefore be very complex. Since the assistant reacts to user input, the behavior is also very dynamic. To make the assistant attractive and varied, for example, its appearance must be be described effectively and flexibly.
Eine Verwendung verschiedener an die jeweilige Kommunikationssituation angepasster Softwareassistenten ist insbesondere bei mobilen Endgeräten problematisch, da hier die lokale Speicherung, die lokale Rechenleistung und insbesondere die zu übertragenden Datenströme im besonderen Maße begrenzt sind.The use of various software assistants adapted to the respective communication situation is particularly problematic in the case of mobile end devices, since the local storage, the local computing power and in particular the data streams to be transmitted are particularly limited here.
Die Aufgabe der Erfindung besteht nun darin, ein Verfahren bzw. eine Anordnung zur Darstellung von Software-Assistenten auf mobilen Endgeräten anzugeben, bei dem/der das Verhalten und Aussehen des Assistenten veränderbar bzw. an die jeweilige Kommunikationssituation anpassbar ist und das/die
trotzdem für einen Einsatz in einem mobilen Endgeräten mit eingeschränkten Systemressourcen effizient genug ist. Diese Aufgabe wird hinsichtlich des Verfahrens durch die Merkmale des Patentanspruchs 1 und hinsichtlich der Anordnung durch die Merkmale des Patentanspruchs 10 erfindungsgemäß gelöst. Die Weiteren Ansprüche betreffen vorteilhafte Ausgestaltungen des erfindungsgemäßen Verfahrens.The object of the invention is to provide a method and an arrangement for displaying software assistants on mobile devices, in which the behavior and appearance of the assistant can be changed or adapted to the respective communication situation, and the is efficient enough for use in a mobile device with limited system resources. This object is achieved according to the invention with regard to the method by the features of patent claim 1 and with regard to the arrangement by the features of patent claim 10. The further claims relate to advantageous refinements of the method according to the invention.
Die Erfindung besteht im Wesentlichen darin, dass durch eine eigene Beschreibungssprache für Software-Assistenten in mobilen Systemen eine Trennung der Programmlogik von der Beschreibung des Verhaltens und Aussehens auf hohem Abstraktionsniveau erreicht wird, wobei die lokal auf dem mobilen Endgerät fest durch vorherigen download vorhandene Programmlogik ein parametrisierbares Software-Framework bildet, dass den Software-Assistenten grafisch am Display darstellt, die Interaktionen mit dem Benutzer koordiniert und eventuelle Aktionen anstößt. Die Beschreibung des Verhaltens und des Aussehens des Assistenten ist bspw. ebenfalls getrennt, wodurch der Assistent bspw. die Kleidung wechseln kann aber sonst gleich zu bleiben. Diese Programmlogik ist flexibel genug, allein durch die Parametrisierung über eine Beschreibungssprache den Assistenten beliebiges Verhalten und Aussehen zu verleihen.The invention essentially consists in that a separate description language for software assistants in mobile systems separates the program logic from the description of the behavior and appearance at a high level of abstraction, the program logic existing locally on the mobile terminal being pre-downloaded Parameterizable software framework that graphically shows the software assistant on the display, coordinates the interaction with the user and triggers any actions. For example, the description of the behavior and appearance of the assistant is also separate, which means that the assistant can change clothes, for example, but otherwise remain the same. This program logic is flexible enough to give the wizards any behavior and appearance just by parameterizing them using a description language.
Die Erfindung wird nachfolgend anhand eines in den Zeichnungen dargestellten Beispiels näher erläutert. Dabei zeigtThe invention is explained in more detail below using an example shown in the drawings. It shows
Figur 1 ein Blockschaltbild zu Erläuterung des erfindungsgemäßen Verfahrens beim Endbenutzer undFigure 1 is a block diagram to explain the inventive method at the end user and
Figur 2 ein Blockschaltbild zur Erläuterung des erfindungsgemäßen Verfahrens hinsichtlich der Definition solcher Software-Assistenten.
In Figur 1 ist ein Blockschaltbild des erfindungsgemäßen Verfahrens bei einem Endbenutzer 1 gezeigt dessen mobiles Endgerät, das einen Resourcen-Manager 3 und eine Assistenten- Maschine 2 in Form- eines Programms aufweist, wobei derFIG. 2 shows a block diagram to explain the method according to the invention with regard to the definition of such software assistants. FIG. 1 shows a block diagram of the method according to the invention for an end user 1 whose mobile end device, which has a resource manager 3 and an assistant machine 2 in the form of a program, the
Resourcen-Manager auf Anforderung der Assistenten-Maschine 2 lokal vorhandene Text-Dateien 81, lokal vorhandene Animationsdateien 91 und/oder lokal vorhandene Dialog-Dateien zur Verfügung stellt oder falls die gewüschten Dateien nicht lokal verfügbar sind eine mobile Datenverbindung 7 zu einem entsprechenden Server 5 oder 6 aufbaut und dort entsprechende Dateien 82, 92, 102 abruft.Resource manager makes locally available text files 81, locally available animation files 91 and / or locally available dialog files available at the request of the assistant machine 2 or if the desired files are not locally available, a mobile data connection 7 to a corresponding server 5 or 6 builds up and retrieves corresponding files 82, 92, 102 there.
Durch die Trennung der Programmlogik bzw. der Assistenten- Maschine von der Beschreibung, also einerBy separating the program logic or the assistant machine from the description, i.e. one
Beschreibungssprache für Software-Assistenten, ist es möglich, neue Dialoge und Aussehensbeschreibungen dynamisch hinzuzufügen und somit das Verhalten und Aussehen des Software-Assistenten beliebig zu erweitern und aktuellen Gegebenheiten anzupassen. Neue Dialoge müssen dazu nicht vorgefertigt zur Verfügung stehen, sondern können zur Laufzeit generiert werden. Dies kann sowohl lokal über die Dateien 81, 91 und 101 auf dem Endgerät als auch entfernt (remote) auf anderen Computern bzw. Servern 5 oder 6 stattfinden, wenn zum Beispiel aktuelle Daten aus Datenbanken 82,92 und 102 mit in das Verhalten einfliesen sollen.Description language for software assistants, it is possible to add new dialogs and appearance descriptions dynamically and thus expand the behavior and appearance of the software assistant as desired and adapt to current conditions. New dialogs do not have to be ready-made, but can be generated at runtime. This can take place locally via the files 81, 91 and 101 on the terminal as well as remotely on other computers or servers 5 or 6 if, for example, current data from databases 82, 92 and 102 are to be incorporated into the behavior ,
Genauso sind die Texte 81, 82 für die Sprachein- und ausgäbe vom Verhalten getrennt, um eine Anpassung an die Muttersprache und/oder die Sprachgewohnheiten des Endbenutzers zu ermöglichen.Likewise, the texts 81, 82 for the speech inputs and outputs are separated from the behavior in order to enable adaptation to the mother tongue and / or the language habits of the end user.
Ein hohes Abstraktionsniveau wird durch eine deklarative Beschreibung des Verhaltens erreicht. Dabei wird das Verhalten in einzelne Dialoge 101 bzw. 102 aufgeteilt. Ein Dialog verweist auf das Aussehen des Assistenten in diesem Dialog, beschreibt die Sprachausgabe des Assistenten,
mögliche Eingabe- und Entscheidungsmöglichkeiten des Endbenutzers sowie die möglichen Folgedialoge in Abhängigkeit vom Verhalten des Endanwenders . Außerdem werden Aktionen beschrieben, die bei Betreten oder Verlassen des Dialogs ausgelöst werden können.A high level of abstraction is achieved through a declarative description of the behavior. The behavior is divided into individual dialogs 101 and 102. A dialog refers to the appearance of the assistant in this dialog, describes the voice response of the assistant, Possible input and decision options for the end user as well as the possible subsequent dialogues depending on the behavior of the end user. Actions are also described that can be triggered when entering or leaving the dialog.
Das Aussehen des Assistenten wird durch die Haut bzw. Skin, z.B. eine Katze oder ein Kind, sowie der Animation 91 bzw 92 für diese Haut, z.B. lächelnd oder winkend, beschrieben. Durch die Auftrennung in einzelne AnimationsSequenzen wird das Aussehen odular, erlaubt eine häufige Wiederverwendung einzelner Sequenzen und damit Ressourcenersparnis sowie flüssige, lebensechte Animationen.The appearance of the assistant is determined by the skin or skin, e.g. a cat or a child, as well as animation 91 or 92 for this skin, e.g. smiling or waving, described. By separating them into individual animation sequences, the appearance becomes modular, allows frequent reuse of individual sequences and thus saves resources as well as smooth, lifelike animations.
Außerdem ist es möglich, dass die Programmlogik inIt is also possible that the program logic in
Abhängigkeit der Dialoge 101 bzw. 102 verschiedene Skins anzeigt. Beispielsweise kann der Skin einer Katze für private Dialoge angezeigt werden und ein Abbild eines Beraters, wenn die Dialoge Aktionen im Berufsleben beschreiben. Der Wechsel zwischen Skins geschieht innerhalb der Programmlogik 2 und erfordert vorteilhafter Weise keine zweite Instanz der Programmlogik .Dependency of dialogs 101 and 102 shows different skins. For example, a cat's skin can be displayed for private dialogues and an image of a consultant if the dialogues describe actions in professional life. The change between skins takes place within the program logic 2 and advantageously does not require a second instance of the program logic.
Die Beschreibung des Verhaltens und des Aussehens wird einfach und intuitiv gehalten, um es einem möglichst großen (auch nicht-technischem) Personenkreis zu erlauben, entsprechende Assistenten zum „Leben" zu erwecken.The description of the behavior and the appearance is kept simple and intuitive in order to allow the largest possible (also non-technical) group of people to awaken the appropriate assistants for "life".
Für den Menschen gut verständliche Beschreibungssprachen sind häufig nicht auf Kompaktheit oder einfache Verarbeitung inDescriptive languages that are easy to understand for humans are often not based on compactness or simple processing
Computern oder mobilen Endgeräten hin optimiert. Gerade aber mobile Endgeräte und die mobilen Datenverbindungen zu diesen Geräten benötigen kompakte Repräsentationen der Informationen, um Netzbandbreite bzw. Speicherplatz zu sparen. Außerdem sollte möglichst wenig Aufwand für ein fehlertolerantes Einlesen der Beschreibung betrieben werden, da dies die Verarbeitungszeit erhöht.
Daher werden, wie in Figur 2 gezeigt, für die Beschreibung des Assistenten A sogenannte Authoring-Programme AP eingesetzt, die endanwenderfreundlich die Beschreibung des Verhaltens und Aussehens erlauben, diese einfach les- und überprüfbar, z.B. in einem XML-Format oder in einem Format einer anderen Meta-Auszeichnungssprache, speichern und zusätzlich eine syntaktische und teilweise semantische Überprüfung der Beschreibung vornehmen, bevor sie in ein kompaktes, optimiertes Format inklusive Checksumme exportiert und dem lokalen Endgerät zur Darstellung des Assistenten A übergeben wird.Computers or mobile devices optimized. However, mobile devices and the mobile data connections to these devices require compact representations of the information in order to save network bandwidth and storage space. In addition, as little effort as possible should be made to read the description in a fault-tolerant manner, since this increases the processing time. For this reason, as shown in FIG. 2, so-called authoring programs AP are used for the description of the assistant A, which allow the description of the behavior and appearance in an end-user-friendly manner and can be easily read and checked, for example in an XML format or in a format of one other meta markup language, save and additionally carry out a syntactic and partly semantic check of the description before it is exported to a compact, optimized format including the checksum and transferred to the local terminal device for displaying Assistant A.
Eine zusätzliche Verschlüsselung und digitale Signatur der Information ist je nach Einsatzbereich möglich.Additional encryption and digital signature of the information is possible depending on the area of application.
Durch eine Beschreibungssprache für Software-Assistenten wird also das Aussehen bzw. auch die damit verbundenen Gefühle sowie das Verhalten des Assistenten A auf mobilen Endgeräten, wie Mobiltelefonen und PDAs, durch eine Dialogdefinition 101 bzw. 102, eine Animationsbibliothek 91 bzw. 92 und eine Textbibliothek 81 bzw. 82 definiert.Through a description language for software assistants, the appearance or the associated feelings as well as the behavior of assistant A on mobile end devices, such as mobile phones and PDAs, through a dialog definition 101 or 102, an animation library 91 or 92 and a text library 81 or 82 defined.
Im folgenden werden typische Beispiele für die Syntax und Anwendung aufgeführt, die Erfindung ist aber nicht auf diese folgenden Beispiele beschränkt.Typical examples of syntax and application are given below, but the invention is not limited to these examples.
Die Dialog-Syntax kann in Backus-Naur-Form bspw. wie folgt angegeben werden:The dialog syntax can be specified in the Backus-Naur form, for example, as follows:
<dialog> : := dg = <unique-id> ; { <attribute> ; }<dialog>:: = dg = <unique-id>; {<attribute>; }
<unique-id> ::= <string><unique-id> :: = <string>
<attribute> : := <default-marker> | <animations> | <background> |<attribute>:: = <default-marker> | <animations> | <background> |
<text-pane> | <init-actions> | <locale> | <text> | <system-events> | <transition> | <progress-bar> |<text-pane> | <init-actions> | <locale> | <text> | <system-events> | <transition> | <progress-bar> |
<timer><Timer>
<default-marker> ::= default
<animations> an : <animation-expr> <animation-expr> <ani ation-id> | ( <animation-expr> ) |<default-marker> :: = default <animations> to: <animation-expr><animation-expr><aniation-id> | (<animation-expr>) |
<ani ation-expr> && <anirαation-expr> |<ani ation-expr> && <anirαation-expr> |
<animation-expr> | | <animation-expr><animation-expr> | | <Animation-expr>
<animation-id> <string><animation-id> <string>
<background> bg : <image-file><background> bg: <image-file>
<text-pane> tp : <image-file><text-pane> tp: <image-file>
<image-file> <string><image-file> <string>
<init-actions> ia : <action-id> { , <action-id> }<init-actions> ia: <action-id> {, <action-id>}
<action-id> <string><action-id> <string>
<locale> lo : en | de | fr | it | es<locale> lo: en | de | fr | it | it
<text> dt : <text-id> { , text-id }<text> dt: <text-id> {, text-id}
<text-id> <string><text-id> <string>
<system-events> se : <sys-event-id> { , <sys-event-id> }<system-events> se: <sys-event-id> {, <sys-event-id>}
<sys-event-id> : : = key | idle | sms<sys-event-id>:: = key | idle | sms
<transition> tr : <com and> , <dialog-id> , (<actions> none)<transition> tr: <com and>, <dialog-id>, (<actions> none)
<command> <text-id> | none<command> <text-id> | none
<dialog-id> <string><dialog-id> <string>
<actions> <action> { , <action> }<actions> <action> {, <action>}
<action> <action-id> [ ( <event-mapping> { / <event-mapping> } ) ]<action> <action-id> [(<event-mapping> {/ <event-mapping>})]
<event-mapping> <event-id> % <dialog-id><event-mapping> <event-id>% <dialog-id>
<event-id> success | failure | progress<event-id> success | failure | progress
<progress-bar> pb: <x>, <y>, <widt >, <heig t><progress-bar> pb: <x>, <y>, <widt>, <heig t>
<x> <integer><x> <integer>
<y> <integer><y> <integer>
< idth> <integer><idth> <integer>
<height> <integer><height> <integer>
<timer> at : <timer-value> , <dialog-id> , ( <actions> ] none )<timer> at: <timer-value>, <dialog-id>, (<actions>] none)
<timer-value> <integer><timer-value> <integer>
Die Animationsbezeichner beziehen sich auf Animationsdateien *.ani. Das Graphikformat für den Hintergrund und dieThe animation identifiers refer to animation files * .ani. The graphic format for the background and the
Textflächen ist bspw. PNG. Die init und exit actions müssen in einer entsprechenden action class-Bibliothek verfügbar
sein. Der Ausdruck locale „en" zeigt auf eine Datei „<basename>_en. txt" . Die Größe timer-value ist eine nicht negative ganze Zahl, die die Zeit bis zur Ausführung der exit action bzw. bis zur Aktivierung eines Bestimmungsdialoges definiert .Text areas is, for example, PNG. The init and exit actions must be available in an appropriate action class library his. The expression locale "en" points to a file "<base name> _en. Txt". The size timer-value is a non-negative integer that defines the time until the exit action is executed or until a determination dialog is activated.
In der Übergangsdefinition (transition) bedeutet der Ausdruck „none", dass nach dem Abspielen einer Animation die Assistentenmaschine 2 automatisch zum angegebenen Dialog, weiterschaltet .In the transition definition, the expression “none” means that after playing an animation, the assistant machine 2 automatically switches to the specified dialog.
Im folgenden ist ein Beispiel eines typischer Dialog gezeigt:An example of a typical dialog is shown below:
dg = welcome; default; an intro; bg background.png; tp textpane .png; ia lightOn, welcomeSound; lo en; dt txtl, txt2, txt3; tr cmdl , arrival , none; tr cmd2, departure, exitSound, lig tOff; pb 20, 80, 60, 15; at 120, sleeping, lightOff;dg = welcome; default; on intro; bg background.png; tp textpane .png; ia lightOn, welcomeSound; lo en; dt txtl, txt2, txt3; tr cmdl, arrival, none; tr cmd2, departure, exitSound, lig tOff; pb 20, 80, 60, 15; at 120, sleeping, lightOff;
dg = lowbattery; an battery; ia warningSound; lo de; dt txt4 ; se lowbattery;dg = low battery; an battery; ia warningSound; lo de; dt txt4; se low battery;
Die Animations-Syntax kann in Backus-Naur-Form wie folgt angegeben werden:
<animation> := an = <identifier> ; <image-files> ; <x> ,- <y> ; <num-frames> ; <frame-width> ; <frarαe-height> ; <sequence-length>; <frames> ;The animation syntax can be specified in backus-naur form as follows: <animation>: = an = <identifier>;<image-files>;<x>, - <y>;<num-frames>;<frame-width>;<frarαe-height>;<Sequence-length>;<frames>;
<identifier> = <string> <image-files> = <basename>, <num-files>, <extension> <basename> = <string> <nu -files> = <integer> <extension> = <string> <x> = <integer> <y> = <integer><identifier> = <string> <image-files> = <basename>, <num-files>, <extension> <basename> = <string> <nu -files> = <integer> <extension> = <string> < x> = <integer> <y> = <integer>
<num-f ames> = <integer><num-f ames> = <integer>
<frame-width> = <integer> <frame-height> = <integer><frame-width> = <integer> <frame-height> = <integer>
<sequence-1ength> = <integer> <frames> = <frame> { , <frame> }<sequence-1ength> = <integer> <frames> = <frame> {, <frame>}
<frame> = <seq-num> : [ <delay> :<x-offset>:<y-offset> ] ] <seq-number> = <integer> <delay> = <integer> <x-offset> = <integer> <y-offset> = <integer><frame> = <seq-num>: [<delay>: <x-offset>: <y-offset>]] <seq-number> = <integer> <delay> = <integer> <x-offset> = <integer> <y-offset> = <integer>
Die frame sequence numbers sind mit nichtnegative ganze Zahlen mit 1 beginnend. Die delay Werte sind nichtnegative ganze Zahlen, die die Anzahl von Einheiten mit 40 ms angeben bis ein nächstes Bild gezeigt wird. Die x und y Offset-Werte sind relativ zur x- und y-Position der Animation. Der Ausdruck sequence-length bedeutet die Anzahl von frames in der frames sequence definition.The frame sequence numbers start with 1 as non-negative integers. The delay values are non-negative integers that indicate the number of units with 40 ms until a next picture is shown. The x and y offset values are relative to the x and y position of the animation. The expression sequence-length means the number of frames in the frames sequence definition.
Im folgenden ist ein typischer Inhalt einer solchen Animationsdatei gezeigt:A typical content of such an animation file is shown below:
an = intro; intro, 2, png; 0; 10; 5; 70; 36; 8; 0, 1, 2, 3, 4, 2, 0, 3;on = intro; intro, 2, png; 0; 10; 5; 70; 36; 8th; 0, 1, 2, 3, 4, 2, 0, 3;
Die Text-Syntax kann in Backus-Naur-Form wie folgt angegeben werde :
<text-defs> ::= <text-def> { <newline> <text-def> }The text syntax can be specified in backus-naur form as follows: <text-defs> :: = <text-def>{<newline><text-def>}
<text-def> ::= <text-id>=<string><text-def> :: = <text-id> = <string>
Dabei ist die oben angegebene locale, z. B. „en" auch Teil des Dateinamens, z. B. demo_en.txt für englisch.The locale given above, e.g. B. "en" also part of the file name, eg demo_en.txt for English.
Im folgenden ist ein typischer Inhalt einer solchenThe following is a typical content of one
Textdatei, z. B. demo_en.txt gezeigt:Text file, e.g. B. demo_en.txt shown:
txtl = Hello! txt2 = I am your personal assistant . txt3 = Nice to meet you! txt4 = You're running out of battery! cmdl = Start cmd2 = Exittxtl = Hello! txt2 = I am your personal assistant. txt3 = Nice to meet you! txt4 = You're running out of battery! cmdl = start cmd2 = exit
Die entsprechende deutsche Textdatei demo_de.txt dann entsprechendThe corresponding German text file demo_de.txt then accordingly
txtl = Hallo! txt2 = Ich bin Ihr persönlicher Assistent. txt3 = Nett Sie kennenzulernen! txt4 = Ihre Batterie ist schwach! cmdl = Start cmd2 = Beendentxtl = Hello! txt2 = I am your personal assistant. txt3 = Nice to meet you! txt4 = Your battery is low! cmdl = start cmd2 = end
lauten.
ring.