Standard and custom navigation commands enable the caller to control the dialog flow.
Standard navigation commands make the Web functionality of moving back and forward in the dialog available for all channels, i.e. not only in text-based applications but also in voice and video applications.
Custom navigation commands, also to be used in all channels, make the Web functionality of hyperlinks available in voice and video applications. By using an application-specific voice or DTMF command, the caller can, for example, jump back to the main menu, pause the application, or be transferred to a call center agent. These hyperlinks can be accessed throughout the application (through inheritance) or within defined sections of it. Custom navigation commands may or may not undergo a confirmation step, i.e. the Hyperlink object can be configured such that the caller either needs to confirm the activation of the hyperlink (e.g. Do you really want to leave the application?), or the target of the hyperlink is processed without confirmation.
In the text and Web channel, custom and standard navigation commands are always visible for the caller, so that they can activate them; in the text channel by responding with the access key defined for the option that represents the command and in the Web channel by activating a Web hyperlink.
The paragraphs Standard Navigation and Custom Navigation below describe how to define navigation using VoiceObjects Desktop. For information on how to define it using VoiceObjectsXML refer to the VoiceObjectsXML Definition paragraph.
Standard navigation provides basic dialog flow navigation, like going back or forward in the dialog. The different types of navigation commands can only be defined in Module objects.
Standard navigation commands specified in a Module object are inherited by the objects in the sequence of this Module object. If Module objects are referenced within other Module objects, the most recent definition takes precedence.
Standard navigation is implemented in the Standard Navigation section within the Navigation section of the Module editor.

The following standard navigation commands are available, each specified in a separate section (represented by tabs in Desktop for Web):
|
Navigation |
Description |
|
Backward |
Moves back one step (i.e. one input state) in time. Any variable assignments, object occurrence counts, etc. are undone. |
|
Forward |
Undoes a backward navigation (only available after using backward navigation). |
|
Repeat |
Repeats the last output, i.e. the exact same prompt variation played. |
|
Skip |
Skips the current object and processes the next object in the dialog flow. Variable objects defined in the result handling of an Input object are not modified. |
In each section Backward, Forward, Repeat, and Skip, three settings can be made.
· The Grammar defines the input a caller can make to activate this navigation command. The grammar definition is mandatory in all channels. In the voice and video channel, define voice or DTMF phrases that the caller can say or press. In the text channel, define the access key of the option that the USSD browser generates for the command. In the Web channel, the grammar is conceptually not required. But since the definition is mandatory, use question mark “?” as a placeholder definition.
· The Activation output can be used to present an output after the caller has activated this command. It is optional in all channels.
· The Presentation output defines how to present this command to the caller. In the voice and video channel, this is optional. In the text and Web channel, it is mandatory, as this will be the output that is displayed on the mobile device, so that the caller can activate the command. If there is more than one command defined and you want to specify how the commands are to be ordered, also with respect to custom navigation commands, use the Label field of the presentation output to define the criteria for alphanumerical sorting that the server will apply to all active commands in an input state.

For more information on how to define a grammar, refer to the Grammar object in this Object Reference.
Information on how to define the outputs can be found in the Output object description.
i8 Note: In the definition of a Service object, you can disable standard navigation altogether. In this case, any commands defined in the Standard Navigation section of the respective Module object are not available throughout the application. If standard navigation is enabled in the Service object, a maximum number of navigation steps for standard navigation backward must be defined. If the caller activates the backward command more often than this maximum number of times, the current object is processed again instead of further going back in the dialog history, and corresponding prompts are replayed. For more information on the setting in the Service object, refer to Chapter 2 – Configuring Servers and Services in the Deployment Guide.
To disable a standard navigation command within an application you need to link an autonomous Grammar object over its Grammar section. This object must have a precondition that evaluates to false at call time; this will make the whole command inactive. Note that it is not sufficient to just use the layer setting on the embedded grammar to do the same.
The following tables provide some sample grammars for the four available standard navigation commands:
Backward
|
Grammar |
Example |
|
SRGS XML |
<?xml version="1.0" encoding="ISO-8859-1"?> <grammar xml:lang="en-US" version="1.0" <rule id="Backward" scope="public"> <item> <count number="optional"> go </count> </item> <one-of> <item> back </item> <item> backward </item> </one-of> </rule> </grammar> |
|
Nuance GSL |
;GSL2.0
Backward [ (?go [back backward]) ] |
|
JSGF |
#JSGF V1.0 ISO-8859-1;
public <Backward> = ( [go] back | backward ); |
Forward
|
Grammar |
Example |
|
SRGS XML |
<?xml version="1.0" encoding="ISO-8859-1"?> <grammar xml:lang="en-US" version="1.0" <rule id="Forward" scope="public"> <item> <count number="optional"> go </count> </item> <item> forward </item> </rule> </grammar> |
|
Nuance GSL |
;GSL2.0
Forward [ (?go forward) ] |
|
JSGF |
#JSGF V1.0 ISO-8859-1;
public <Forward> = ( [go] forward ); |
Repeat
|
Grammar |
Example |
|
SRGS XML |
<?xml version="1.0" encoding="ISO-8859-1"?> <grammar xml:lang="en-US" version="1.0" <rule id="Repeat" scope="public"> <one-of> <item> <item> repeat </item> <item> <count number="optional"> <one-of> <item> this </item> <item> that </item> </one-of> </count> </item> </item> <item> <one-of> <item> say </item> <item> play </item> </one-of> <item> <count number="optional"> it <item> once <item> again </item> </item> </one-of> </rule> </grammar> |
|
Nuance GSL |
;GSL2.0
Repeat [ (repeat ?[this that]) ([say play] ?[it this that] ?once again) ] |
|
JSGF |
#JSGF V1.0 ISO-8859-1;
public <Repeat> = ( (repeat [this | that]) | ([say | play] [it | this | that] [once] ); |
Skip
|
Grammar |
Example |
|
SRGS XML |
<?xml version="1.0" encoding="ISO-8859-1"?> <grammar xml:lang="en-US" version="1.0" <rule id="Skip" scope="public"> <one-of> <item> continue </item> <item> <item> skip </item> <one-of> <item> it </item> <item> this </item> <item> that </item> </one-of> </count> </item> <item> go ahead </item> </one-of> </rule> </grammar> |
|
Nuance GSL |
;GSL2.0
Skip [ continue (skip ?[it this that]) (go ahead) ] |
|
JSGF |
#JSGF V1.0 ISO-8859-1;
public <Skip> = ( continue | (skip [it | this | that]) | (go ahead) ); |
Custom navigation provides hyperlinks to objects that are accessible throughout the application (or defined sections of it) by specific voice or DTMF commands in the voice and video channel, or by visible options or hyperlinks in the text and Web channel. Each hyperlink is defined by a grammar that activates the hyperlink and the object to be processed. In the text and Web channel, a presentation output is required in addition, so that the caller can activate the command. Instead of processing an object, a hyperlink can also activate an event. If a confirmation of the hyperlink is required, a confirmation request and corresponding grammars must be defined as well.
The designer can specify if the dialog flow returns to the current object after the hyperlink has been processed, if the dialog flow proceeds with the next object, or if the link is without return.
Custom navigation can be defined in Module objects as well as in other objects expecting input from the caller. Hyperlinks defined in any Module object are inherited by the objects in the sequence of that Module object.
Inheritance can be disabled in all objects that offer custom navigation. When switched off, no hyperlinks are inherited by the current object but only locally defined ones are used (if any).
Typical examples for using custom navigation are hyperlinks to the main menu of an application, pausing or exiting an application, transferring to an agent, etc.
Custom navigation commands are implemented in the Custom Navigation section within the Navigation section of the objects Module, Confirmation, Hyperlink, Input, List, Menu, OSDM, and Plug-In.

Each custom navigation command consists of an embedded hyperlink definition. This embedded version of a hyperlink is structurally simpler than the autonomous Hyperlink object and only contains an equivalent of the Destination, the Activation Grammar, and the Presentation Output section.
In each Hyperlink the following properties can be specified:
|
Property |
Description |
|
Label |
Optional parameter to identify the hyperlink in a list. |
|
Layer |
Optional parameter to define a layer condition for the specific hyperlink by linking an Expression, Script, Variable, or Collection object, or by selecting a layer condition from the context menu. For more information on layers, see the Layer object in this Object Reference, or Chapter 7 – How to Use Layers in the Design Guide. |
|
Channel |
Specifies the channel in which the hyperlink is to be active. Set this to a channel or combination of channels if you only want to activate the command in a specific channel. Otherwise leave it at Default. |
|
Mode |
Specifies the mode of the hyperlink. Either select Activate event and specify an event to be activated in the Event field (Caller - Cancel, Caller - Exit, or Caller - Help). |
|
Event |
Specifies the event to be activated if the mode Activate event is selected in the Mode field. |
|
Object |
Specifies the object to be processed if the mode Process object is selected in the Mode field. |
|
Continuation |
Specifies how to proceed with the dialog flow after the hyperlink has been processed. Select Return if you want the dialog to return to the object in which the hyperlink was activated, after processing it. If you do not wish to return to the current dialog flow, select Do not return. If you want the current object to be skipped after returning from the hyperlink’s subdialog, select Proceed. If you merely want the current object to be skipped upon activation of the hyperlink without processing any subdialog, select Proceed and leave the Object field empty. |
|
Finish Tasks |
Defines whether currently active business tasks are to be finished or not when the hyperlink is processed. It can be set to None (the default), which means that no task will be finished, Active, which means that only the currently active task will be finished, or All, which means that all tasks, active or inactive, will be finished. In case one or more tasks get finished, they will automatically be marked with status Caller Abort, which means they will be logged as incomplete to Infostore. i8 Note: This setting is only applicable if Mode is set to Process object. If Mode is set to Activate event, the Finish Tasks setting has no effect. |
|
Activation Grammar |
Specifies the grammar for the input that activates the processing of the hyperlink. For detailed information on defining a grammar, see the Grammar object in this Object Reference. |
|
Presentation Output |
Specifies how to present the hyperlink to the caller. In the voice and video channel, this output is optional. In the text and Web channel, it is mandatory as it will be displayed on the mobile device so that the caller can activate the command. For detailed information on defining an output, see the Output object in this Object Reference. |
If you want to define a hyperlink to be confirmed, you have to link an autonomous Hyperlink object into the custom navigation definition, since the embedded version of the hyperlink is restricted and does not provide the confirmation feature.
For detailed information on how to define a Hyperlink object and in particular the confirmation feature, refer to the Hyperlink object.
i8 Note: Custom navigation is intended to allow fast access to major points of the application. Therefore the designer should be careful with the number of hyperlinks and their grammars.
Using a high number of hyperlinks may place a high workload on the media platform in case of voice and video applications. Also try to avoid creating hyperlinks with grammars that are similar to other hyperlinks or other dialog inputs, as this can lead to misrecognitions by the speech recognition engine.
In the text and Web channel, each navigation command needs to be displayed on the mobile device. As the screen space is most likely rather restricted, do not define too many commands. Typically, a backward and main menu command is required.
Standard navigation is defined by using the <standardNavigation> element, which contains one to four <standardNavigationItem> children. Each <standardNavigationItem> has a required attribute direction taking one of the values backward, forward, repeat, or skip. In addition, it has three children:
· <grammar> [required]
Defines the activation grammar for the navigation direction.
· <output usage=”activation”>
Defines the output to be played before activating the respective standard navigation.
· <output usage=”presentation”>
Defines the presentation for the standard navigation direction.
Custom navigation is defined using the <customNavigation> element. It has one attribute inheritance, which defines whether to inherit hyperlinks from parents objects (true, the default) or not (false). In addition, it contains one or more <hyperlink> element children.
The <hyperlink> element has twelve attributes and seventeen groups of children.
Note that the label, layer and channel attributes may only be used when the hyperlink is embedded in <customNavigation>, while the children required for confirmation as well as the attributes recordUtterances and recordingScope may only be used if the hyperlink is defined as an autonomous object.
· mode
Defines whether to process an object or to activate an event. Legal values are object and event. If not specified, defaults to object.
· object
Defines the object to be processed if the hyperlink is activated.
· event
Defines the event to be activated if the hyperlink is triggered. Can be any internal VoiceXML event (like help, cancel, noMatch etc.), or an arbitrary custom event name.
· continuation
Defines the continuation mode. Legal values are return, noReturn, proceed. If not specified, defaults to return.
· label
A text string providing a name for the hyperlink.
This attribute may only be used if the hyperlink is directly embedded inside <customNavigation>.
· layer
Defines the layer for the hyperlink. Can either be a reference to a Collection, Expression, Script, or Variable object; or a layer state reference of the form “Layer=State” or “Layer!=State” where “State” is the label of a state for the layer “Layer”.
This attribute may only be used if the hyperlink is directly embedded inside <customNavigation>.
· channel
Defines the channel(s) for which this hyperlink is valid. Can be default, voice, video, text, web, voiceVideo, or textWeb. If not specified, defaults to default.
· autoAdvanceNoInput
Define whether the dialog should automatically advance in case of a No Input event. Either true or false. If not specified, defaults to false.
This attribute may only be used if the hyperlink is autonomous.
· autoAdvanceNoMatch
Define whether the dialog should automatically advance in case of a No Match event. Either true or false. If not specified, defaults to false.
This attribute may only be used if the hyperlink is autonomous.
· autoAdvanceDirection
Defines the direction of an auto advance. Can be either destination or origin. If not specified, defaults to destination.
This attribute may only be used if the hyperlink is autonomous.
· recordUtterances
Defines whether to use utterance recording. One of true, false, always, default. If not specified, defaults to false.
This attribute may only be used if the hyperlink is autonomous.
· recordingScope
Defines the scope for utterance recording. One of all, noMatch, recognition, default. If not specified, defaults to default.
This attribute may only be used if the hyperlink is autonomous.
· finishTasks
Defines whether business tasks are to be finished or not. One of none, active, all. If not specified, defaults to none.
· <expression usage=”precondition”> or
<variable usage=”precondition”> or
<collection usage=”precondition”> or
<script usage=”precondition”>
Defines the precondition for the Hyperlink object.
· <sequence usage=”preprocessing”>
Defines the preprocessing sequence for the Hyperlink object.
· <grammar usage=”activation”>
Defines the activation grammar for the Hyperlink object.
· <output usage=”confirmation” type=”initial”>
Defines the “initial” section of the confirmation request.
· <output usage=”confirmation” type=”reprompt”>
Defines the “event reprompt” section of the confirmation request.
· <output usage=”presentation”>
Defines the presentation for the Hyperlink object.
· <grammar usage=”confirm”>
Defines the grammar used to confirm the processing of the Hyperlink object.
· <grammar usage=”deny”>
Defines the grammar used to deny the processing of the Hyperlink Object.
· <output usage=”activation”>
Defines the activation message.
· <output usage=”deactivation”>
Defines the deactivation message.
· <output usage=”return”>
Defines the return message.
· <output usage=”confirmPresentation”>
Defines the confirm presentation.
· <output usage=”denyPresentation”>
Defines the deny presentation.
· <eventHandling>
Defines the event handling for the Hyperlink object.
· <customNavigation>
Defines the custom navigation settings for the Hyperlink object.
· <tuning>
Defines the tuning settings for the Hyperlink object.
· <sequence usage=”postprocessing”>
Defines the postprocessing sequence for the Hyperlink object.