1.6.1. Dialog Manager (DM)

The dialog manager Pamini provides a generalized description of human-agent interaction structure. It needs events, e.g. speech recognition results, to decide how the agent should (re-)act and can deal with asynchronous events of the agent internal processes which can evoke specific dialog actions. At present we have one dialog flow configuration for each interaction island (/citec/csra/home/kitchen/assistance , /citec/csra/home/hallway/entrance).

1.6.1.2. Interfaces

Different dialog tasks (interaction pattern) can be invoked by sending task states to <location>/dialogtasks/<pattern_name> scopes, e.g. rgreeting triggers a welcome initiated by the robot.

Scope (Listener) Type
<location>/dialogtasks/<pattern_name> Task State
<location>/pamini/action Dialog Manager Command
<location>/dialogact Dialog Act

The dialog manager gives feedback about the current state of requested dialog task via task states and informs about state changes of an active interaction pattern. Additionally the DM can also request a lot of system routines/scenarios or can trigger system actions like say tasks directly.

Scope (Informer) Type
<location>/dialogtasks/<pattern_name> Task State
<location>/pamini/patternstatus State Change
<location>/state/request/<system_routines> Task State
<location>/saytask Task State

1.6.1.3. Interaction pattern visualization

The dialog manager provides a simple visualization of all configured interaction pattern instances including the corresponding rsb scops (if available).

../../_images/paminiGUI.png

It is possible to turn on the visualization on startup via the corresponding dialogflow configuration:

<PaminiProperty name="visualization" value="true" />

To start the visualization separately, you have to change the PaminiProperty of the visualizaiton to "false" and run the PatternVisualization in pamini.visualization.

If the visualization is started, it’s send a ‘PING’ as a String on scope /pamini/patterninformer/request. The Informer send on scope /pamini/patterninformer/info the information about the registered dialog tasks (interaction pattern) to the visualization. A interaction pattern is send as a Dictionary and consists of Key-Value-Pairs. A Key-Value-pair consists of a key, e.g. Pattern Name and the correspondig value, e.g. h_Greeting.

Scope (Listener) Type
/pamini/patterninformer/info Dictionary
Scope (Informer) Type
/pamini/patterninformer/request String

1.6.1.4. Examples

1.6.1.4.1. Trigger an interaction pattern (robot greeting in the hallway)

 // RSB Informer
 Informer<TaskStateType.TaskState> informer = Factory.getInstance().
     createInformer("/citec/csra/home/hallway/entrance/dialogtasks/rgreeting");
 informer.activate();

 // create a task state
 TaskStateType.TaskState.Builder taskBuilder = TaskStateType.TaskState.newBuilder();
 taskBuilder.setOrigin(TaskStateType.TaskState.Origin.SUBMITTER);
 taskBuilder.setState(TaskStateType.TaskState.State.INITIATED);
 taskBuilder.setSerial(1);
 taskBuilder.setPayload(ByteString.EMPTY);
 taskBuilder.setWireSchema(ByteString.copyFromUtf8("utf-8-string"));

 // send the task state
 informer.send(taskBuilder.build());

1.6.1.4.2. Reset dialog (in the kitchen)

 // RSB Informer
 Informer<TaskStateType.TaskState> informer = Factory.getInstance().
     createInformer("/citec/csra/home/kitchen/assistance/pamini/action");
 informer.activate();

 // create a dialog manager command
 DialogMangerCommand.Builder dialogCommand = DialogMangerCommand.newBuilder();
 dialogCommand.setCommand(DialogMangerCommand.Command.RESET_INTERACTION);

 // send command
 informer.send(dialogCommand.build());