The Module object typically represents the start node in a dialog flow and is used to group objects into logical units.
A Module object is intended to represent a standalone or sub-dialog, such as logging into an account or performing a money transfer in a banking application. Structuring dialogs into logical units helps designers keep a clear and easy-to-follow dialog structure – the display of a dialog flow in the Dialog Designer of VoiceObjects Desktop stops at Module objects.
Furthermore, the Module object allows rapidly developing new applications based on existing building blocks, due to the reusability of complete modules.
In addition, the Module object allows you to provide global settings for event handling, navigation, tuning, as well as OSDM parameters, which can be inherited by subordinate objects in the dialog flow. Based on the object-oriented approach, global settings defined in a Module object can be overwritten locally within the subordinate objects.
For more information on reusability and inheritance, see Chapter 1 – Application Design - The Modular Concept in the Design Guide.
With Infostore and VoiceObjects Analyzer, modules can be used to store and retrieve statistical information on how the caller controls and navigates within an application. As such, modules group parts of the application into logical units that can later be analyzed in terms of event frequency, duration of stay, etc. There are several predefined reports related to Module objects.
The integrated dialog flow logic of the Module object is to present an optional title output and an optional welcome message, to process the embedded sequence of referenced objects and finally to present an optional goodbye message before exiting.
The Object Definition below covers the configuration of the Module object with VoiceObjects Desktop. For information on how to define this object type using VoiceObjectsXML refer to the VoiceObjectsXML Definition paragraph.
The Module object belongs to the object category Components.
The following dialog flow example describes a simple dialog in a flight booking application.
|
Object – Caller |
Dialog Flow |
|
|
Welcome to World Travel Airline. |
|
|
Thanks for calling. Goodbye. |
The Definition of the Module object consists of the following sections:
· Title
To define an optional title that is repeated in every subordinate object.
· Welcome Message
To play an optional welcome message to the caller.
· Object Sequence
To specify a sequence of objects to be processed.
· Goodbye Message
To provide an optional goodbye message.
· Options
To configure processing options.

The Module editor provides dialog end processing and a reference library within the Pre-/Postprocessing section, which are both explained below.
In addition, it contains an OSDM section, which is also explained in this document.
For further information regarding additional object configuration refer to Pre-/Postprocessing, Event Handling, Navigation, Tuning, or Properties in this Object Reference.
In the Title section (represented as a tab on the Welcome Message section in Desktop for Web), an optional output can be specified, that is repeated in each child object of the module (plus the Module object itself, i.e. for the welcome and goodbye message). In the voice, video and text channel, it is played or displayed before the main prompt of each object, i.e. before the input request of an Input object, before the welcome message of a Menu object, before the confirmation request of a Confirmation object, etc. It is not presented in outputs that are defined as the object to be processed in event handling or navigation items. Note that the main output of an object directly follows the title output, with no spaces or line breaks added. To define a line break in the text channel, use the pipe symbol “|”.
In the Web channel, the title is rendered as the page’s title, which means that the Web browser typically shows it as a kind of header at the very top of the screen, separated from the body content by some special layout.

In the voice and video channel, the title output could be a “land marker” earcon, to notify the caller about the progressing dialog flow. In the text and Web channel, the title output could be a header that is repeated for each dialog step to let the callers know where in the flow they currently are. It is mainly used in the Web channel, as the text channel has tight length restrictions.
In all channels, the title output is only presented in the scope of the current Module object. Example: if a Module object with a title definition has another module without a title definition as a child object, then all children of the second module will not have any title.
For further details on how to configure output refer to the Output object in this Object Reference.
In the Welcome Message section (i.e. its Welcome section in Desktop for Web), an optional output can be specified. In the voice and video channel this is typically used to play an introduction to this subdialog. In the text and Web channel, the welcome message could be an introductory text. To move on to the next dialog step, the caller has to activate a “Proceed” button or option. Since this requires an extra interaction, the welcome message could be left empty in the text and Web channel.

For further details on how to configure output refer to the Output object in this Object Reference.
The Object Sequence references a sequence of objects to be processed after the welcome message has been presented. Instead of individually inserting objects into the embedded sequence, a Sequence object can be linked.

The Goodbye Message is an optional output that is presented before leaving the Module object. It is typically used to play or display an exit output for the subdialog.

For further details on how to configure output refer to the Output object in this Object Reference.
The Options section contains one option that specifies if the Module object is included in the module history list maintained by VoiceObjects Server. By default, this option is enabled (i.e. check box selected).

The module history can be retrieved by using the Expression functions MODULEHISTORY() and MODULESET(). It is useful for both in-dialog and post-dialog statistics.
Dialog end processing (specified in the Pre-/Postprocessing section of the Module editor) offers the capability to perform certain actions after a dialog has ended. Typically, these actions make use of a Connector object e.g. to clean up an abandoned shopping cart or to write data to a CRM (Customer Relationship Management) system.

In the Object field the object is specified that is processed when the dialog end occurs. Often, this is a Connector or a Log object. The option Inherit from parent objects defines whether dialog end processing in parent modules is also processed (True, the default) or whether dialog end processing stops after the processing of the locally defined object (False). If inheritance is set to True, the processing of the objects starts with the innermost module (the local one) and iterates through all parent modules until either the outermost module is reached or inheritance is set to false in some module along the path.
Within the dialog end processing, the reason for the dialog end can be accessed via the system expression System:Exit Event. Possible values are:
|
Exit value |
Description |
|
None |
The dialog has not ended yet. This is the return value when calling System:Exit Event during an ongoing dialog. |
|
Timeout |
The dialog terminated due to a dialog timeout. |
|
Exception |
The dialog terminated due to an exception in VoiceObjects Server. |
|
EndOfDialog |
The dialog terminated because it reached the end of the application dialog flow. |
|
CallerExit |
The dialog terminated because the caller hung up. |
|
Transfer |
The dialog terminated due to a blind transfer (see the Transfer object in this Object Reference for more details). |
Note that since the dialog itself has already ended, there is no use in placing any interactive dialog elements such as Output objects, Input objects, etc. into the Object field in the Dialog End Processing definition. In fact, if you do use such an object within dialog end processing, the server will not generate the corresponding markup code for it but simply ignore it.
i8 Note: A license for a session is only freed after dialog end processing has finished. The processing takes place asynchronously. If you make use of service chaining, i.e. the consecutive calling of different VoiceObjects services, it cannot be guaranteed that dialog end processing is finished before the next service starts.
To send custom markup code to the media platform in case of a caller-side end of the dialog (either via hang-up, or a transfer) a custom event handler may be defined. For more details, see the description of event handling in this Object Reference.
The Reference Library section is found in the Pre-/Postprocessing section of the Module editor. It allows linking objects that are indirectly referenced within a Goto or List object but not used directly in the dialog tree.
The Goto object allows the processing of an object, the reference ID of which is dynamically evaluated at call time via a Variable object. In the List object, the reference ID of the object to be processed may come out of the data collection. In both cases, the required object does not need to be part of the dialog itself.
If an object is not referenced at all in an application, the server does not load it into its cache on deployment. Thus, trying to reference it during the dialog would lead to an error. The reference library is a means to link this kind of objects, in order to ensure that the server has them in its cache.
For further information on processing objects via reference IDs see the List object in this chapter or the Goto object in this Object Reference.
If you make use of OSDM objects in your application, you can define general OSDM parameters in a Module object. They will always be inherited by subordinate OSDM objects. If you want to overwrite parameters in a subordinate OSDM object, you can do so by defining it there, using the same parameter name in the Key field as in the corresponding Module object. Inheritance can only be disabled in Module objects, by setting it to False in the Options section within the OSDM section.

For more information on how to define the OSDM parameters, refer to the OSDM object in this Object Reference.
The Module object is represented by the VoiceObjectsXML element <module>. It has three attributes and twelve groups of children.
In addition, the element has the standard attributes described in the XDK Guide.
· historyTracking
Defines whether the Module object shows up in the module history. Either true or false. If not specified, defaults to true.
· dialogEndProcessing
Reference to an object that is used for dialog end processing.
· inheritDEP
Defines whether the dialog end processing of a higher-level Module object should be processed after the DEP of the current Module object was processed. Either true or false. If not specified, defaults to true.
· <expression usage=”precondition”> or
<variable usage=”precondition”> or
<collection usage=”precondition”> or
<script usage=”precondition”>
Defines the precondition for the Module object.
· <sequence usage=”preprocessing”>
Defines the preprocessing sequence for the Module object.
· <output usage=”welcome”>
Defines the welcome message for the Module object.
· <output usage=”title”>
Defines the title output for the Module object.
· <sequence>
Defines the object sequence for the Module object.
· <output usage=”goodbye”>
Defines the goodbye message for the Module object.
· <eventHandling>
Defines the event handling for the Module object.
· <standardNavigation>
Defines the standard navigation settings for the module.
· <customNavigation>
Defines the custom navigation settings for the Module object.
· <tuning>
Defines the tuning settings for the module.
· <sequence usage=”postprocessing”>
Defines the postprocessing sequence for the Module object.
· <sequence usage=”library”>
Defines the reference library for the Module object.
· <osdmItems>
Defines the OSDM settings for this Module object.
<module name=”PrimeInsurance”>
<output usage=”welcome” link=”#intro”/>
<sequence link=”#Main sequence”/>
</module>
The following table contains all object types that can reference a Module object:
|
Icon |
Object Name |
Use Case Example |
|
|
Module |
A Module object can be used within the embedded sequence of a Module object. |
|
|
Most commonly, a Module object is used within a Sequence object in a dialog flow. |
|
|
|
A Module object can be used as the destination object within a Menu item. |
|
|
|
A Module object can be used as the destination object within a Correction item inside a Confirmation object. |
|
|
|
A Module object can be used either within the THEN item or the ELSE item of an If object. |
|
|
|
A Module object can be used in any WHEN item or the ELSE item of a Case object. |
|
|
|
A Module object can be used within the embedded sequence of a Loop object. |
|
|
|
A Module object can be referenced via a Goto object. |
|
|
|
A Module object can be the destination of a Hyperlink object. |
In order to leverage the capabilities of the integrated documentation of VoiceObjects it is important to provide intuitive and self-explanatory object names and descriptions.
The name of a Module object should identify what the (sub)dialog represented by the Module object does. The short description should contain a brief explanation of assumptions and restrictions. The long description should contain a detailed description of input and output parameters, as well as dependencies such as back-end connectivity. The table below lists three examples:
|
Name |
Description |
|
|
Subdialog to obtain the caller’s phone number. Includes optional confirmation/correction as well as configurable check of phone number format for country-specific landline/mobile numbers. |
|
|
Root module for phone banking portal. Provides the welcome section (including account balance), and then branches into sub-applications for transfers and recent transactions. |
|
|
Module to read out jokes in a variety of categories. Part of an entertainment portal. |