• No results found

How conflicts between commands are identified and displayed

Conflict Checking in the Dragon client when loading Command Sets

The commands can conflict by having the same name and availability or by using a conflicting list name. The contents of a command (For example, steps or text) do not have to be the same to cause a conflict. Commands that are identical to Command Set commands (name,

availability, type, and contents) can be identified using the ‘Purge Identical MyCommands’

tool in the Dragon Client. For details, see the Dragon Help.

When comparing commands from different command sets or with MyCommands, the names of lists used by the command are ignored so that the keywords and ‘signature’ of the command are compared. This avoids conflicts in cases where the only difference is the values within the lists, which could have conflicting values and unintended results when loaded into the vocabulary. This comparison is performed because list-value-level conflicts can be expensive to determine, and this type of conflict detection is currently not supported.

Example 1:

CmdSet1: Do this <list1> then <list2>

CmdSet2: Do this <list3> then <list4>

CmdSet3: Do this then CmdSet4: Do this

Dragon treats the commands as follows when comparing across Command Sets:

CmdSet1: Do this <> then <>

CmdSet2: Do this <> then <> // Conflicts with CmdSet1 command CmdSet3: Do this then

CmdSet4: Do this

In this case, the command in CmdSet2 conflicts with the CmdSet1 command because the only difference is the name of the lists.

If the first two commands were defined in the SAME command set then this restriction would be loosened, as the chances for an unintended conflict are lower.

The goal is to avoid unexpected results when commands from different command sets (including MyCmds) end up resulting in the same spoken form in the vocabulary due to conflicting list values.

To avoid these problems the commands and lists from each command set need to be distinct, as much as possible.

Example 2:

An important exception to the above comparison rules is the case when the commands are list-only, and have no other keywords. For example:

CmdSet1: <list5> <list6>

CmdSet2: <list7> <list8>

CmdSet3: <list5> <list6>

These commands have no keywords other than the list values themselves. If the list names are eliminated the command signatures would look like this:

CmdSet1: <> <>

CmdSet2: <> <>

Administrating Dragon with the Nuance Management Console

CmdSet3: <> <>

In this case, all of the two-list-only commands would look exactly the same and there is no other context to differentiate them, other than comparing the list values.

We do not want to consider all commands with this pattern to be in-conflict, so a direct comparison with the list names is performed.

Example 3:

Commands with different list names are not considered to be in conflict as long as the remaining spoken form of the command does not match another command in a previously loaded command set or in MyCommands ( have the same ‘signature’). However, the resulting commands in the vocabulary could conflict at the list-value-level with unpredictable results.

So in the above case, the commands are treated as follows:

CmdSet1: <list5> <list6> // Loaded first. No Conflict.

CmdSet2: <list7> <list8> // Differs from CmdSet1, so no conflict.

CmdSet3: <list5> <list6> // Conflicts with command from CmdSet1

The command in CmdSet3 conflicts with the previously loaded command from CmdSet1, so there is a conflict and the command is treated as Not Active.

Conflict checking sequence for Command Sets

The following is the typical conflict checking sequence performed for Command Set commands:

1. As each Command Set is loaded (in alphabetical order), the commands and lists in the cur-rently loading Command Set are compared against previously loaded commands and lists.

2. Commands with the same name and availability (Global, Application, Window) conflict as will commands that use a list with the same name as a list that is from a different, previously loaded, Command Set.

3. If a conflict is detected, the commands that are in-conflict are marked as ‘not active’ and are not loaded into the vocabulary. The first command loaded with the same name/availability is the ‘active’ one.

4. Once all of the Command Set commands are loaded into the ‘Master Command Set’, the entire collection of commands is then compared to any custom commands that are defined in MyCommands (MyCmds.dat). If there is a conflict, the command in MyCommands is treated as the active command.

Custom commands in MyCommands override any conflicting commands and lists from the command sets.

Conflict Detection during a Session

If changes are made to custom commands (MyCommands) during a user session, the commands in the ‘Master Command Set’ collection are reevaluated to determine if the active state of any of the commands should change.

If a new command conflicts with commands in the Command Sets, then those Command Set commands become inactive.

If a command is removed from MyCommands, it is possible for Command Set commands to become active without requiring the end-user to log in again. An exception to this is that deleting a command that uses a list that is conflicting with Command Sets does not immediately remove the list from the vocabulary, even if the deleted command is the last command to use the list. In this case the unused list is removed when MyCommands is reloaded the next time the end-user logs in.

Command Sets ‘New Copy’ and Avoiding Command and List Conflicts

One way to create a custom command is to use ‘New Copy’ on an existing Command Set command from within the Command Set view of the Command Browser (Dragon client). It is important to remember that the custom command that is created may now conflict with an existing command in the Command Sets and cause a previously active Command Set command to become not active.

Make sure to give the new command a name that does not conflict with existing Command Set commands. If you are copying a command that uses lists you need to rename the lists to something other than a name of an active Command Set list or the copied list will conflict with the Command Set list and cause commands to become inactive.

Viewing information about Command and Command Set