Anchor Words

Anchor Words for VoiceInterface Objects are vocabulary words that can be given to a float intent, value intent, or long value intent to allow the operator to give context to their input.

For example, if there is a value intent asking for the length of an object, anchor words would allow the operator to say "feet" or "inches" after the number. The list of Anchor Words is provided by the host.

Anchor words are used with the following existing intents.

  • getString
  • getDigits
  • getFloat

Multiple anchor words are supported. DevKit 1.3.3 or greater is required.

A new state in VIO State Machine is created: ‘CommLoadAnchorWordsOptions’. The task for this new state is retrieve all the possible anchor words for the application. This state is executed before workflow is started so that the system can identify the anchor words the user has to train.

The response from server looks like this:

STRUCTURE -> List<{CATEGORY, VALUE }>
<response  name="getAnchorWordsOptions" endOfRecord="\n" expression="getAnchorWordsOptions.*">
    <record data= "LENGTH,centimeters"/>
    <record data= "LENGTH,inches"/>
    <record data= "TEMPERATURE,°F"/>
    <record data= "TEMPERATURE,°C"/>
</response>

Once the host sends the information, the system stores the complete list. At this point, the system then knows what can be the possible anchor words for the next instructions to process and makes the user train those values.

Next, the instructions are received. New intents are not necessary, as this is handled by using one of the 30 parameters available when an instruction is required. This parameter stands for the category of the anchor words the intent is requiring.

Example:

<record data= "10,getDigits,Digit1,$PROMPT,$HELPMSG,30,1,1,$CONFIRM_PROMPT,1,2,,,,,,1,TEMPERATURE,"/>

For this example, the picker to be displayed in a getDigits intent contains the values of anchor words appropriate for the category TEMPERATURE.

The position of this category argument changes for the different intents because the argument is taken by the last argument used.

GetDigits: Arg16

GetFloat: Arg 16

GetString: Arg14

So, server getInstructions response would look like this:

<response  name="getInstructions" endOfRecord="\n" expression="getInstructions.*">
    <record data= "10,getDigits,Digit1,$PROMPT,$HELPMSG,30,1,1,$CONFIRM_PROMPT,1,2,,,,,,1,TEMPERATURE,"/>
    <record data= "10,getString,String1,String One Prompt,String One Help Message,800,0,0,String One Confirmation Prompt,2,5,,,Wrong string,1,LENGTH,"/>
    <record data= "10,getFloat,Float1,Float One Prompt,Float One Help Message,800,1,0,Float One Confirmation Prompt,3,5,,,,,Wrong Float,1,LENGTH,"/>
</response>

After the instruction is processed, picker appears.