
CHAPTER 18
Intelligent Assistant
18-14 About the Assistant
If you specify the 'dyna_user_action symbol as the first element of your task
template’s
signature slot, any target that distinguishes one template from
another enables the Assistant to select the correct template. For example, the two
target templates in the following code fragment represent the games Chess and
Checkers, respectively:
chess_obj := {value: "chess obj",
isa: 'dyna_user_obj,
lexicon: [ "chess" ]
}
chkrs_obj := {value: "checkers obj",
isa: 'dyna_user_obj,
lexicon: [ "checkers" ]
}
The fact that the lexicons in these templates do not match allows the Assistant to
resolve the ambiguity. When the string
"play chess" is passed to the Assistant,
the word
"play" is matched to the play_act template and the Assistant creates
an action frame from that template. Similarly, the Assistant matches the word
"chess" with the chess_obj template’s lexicon and creates a target frame from
that template.
Note that the
play_act action frame can be matched to the primary_act of
either the
chess_Template or the checkers_Template. Because the
signatures of both of these templates specify the
dyna_user_action and
play_act frame types as their first two elements, the conflict is not resolved until
the third element of one of these
signature arrays is matched.
The
chess_obj target frame matches the third element of the signature for the
chess_template. It does not match any elements of the signature in the
checkers_Template. Thus, matching the word "chess" resolves the conflict
because the only
signature array that has been matched completely is that of the
chess_Template.
Compatibility Information 18
The Assistant now matches entire words only, instead of allowing partial matches.
The Assistant no longer uppercases the words that it returns.
The Assistant now adds the eight most recently parsed phrases to the bottom of the
Please pop-up menu. Phrases do not need to be interpreted successfully by the
Assistant to be included in this list.
The result frame returned by the
ParseUtter function contains a new slot named
entries, which holds an array of aliases to soup entries that were matched when
parsing the input string. To retrieve these entries, you must use the new
GetMatchedEntries global function.
Komentáře k této Příručce