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).
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());