Configuring Modular Applications

Modular applications require some additional setup and configuration so that masters and slaves can find each other and share voice files.

The Arbiter

Masters and slaves find each other using a VBVoice component known as the Arbiter (VBVArbiter.exe). It is a service that tracks the location of slave applications. When a slave starts, it registers its name and IP address with the Arbiter. When a master wants to invoke a slave, it looks up the slaves address from the arbiter.

All master and slave machines need to share the same arbiter. This is configured in the Modularity Section of the INI file (see Configuring Arbiter below).

Configuring the Master and Slave

You can configure the master and slave(s) in a number of ways. If you decide to have multiple applications (slaves, masters, or a mixture) running on the same machine, set the INI setting UsePrivateMemoryMap to 1.

Single Machine

In this scenario, the master and slave(s) are co-resident on the same machine. VBVoice supports this configuration directly out of the box. No additional setup is necessary.

However, note that you must set the UsePrivateMemoryMap INI setting (under Modularity section) to 1 in the single machine configuration.

Separate Slave Machine

Some (or all) of the slaves reside on a separate machine You must configure the slave machine to use the master's Arbiter.

Multiple Slave Machines

Slaves reside on multiple machines. You must point each slave to the master's Arbiter

Multiple Master Machines

A set of slaves are shared by multiple master applications. You must pick one master machine to house the Arbiter, and then you must configure all master and slave machines to point to that Arbiter.

Configuring the Arbiter

You configure the Arbiter location in the [Modularity] section of the VBVoice.INI file.

Setting

Example

Description

ArbiterHost

ArbiterHost

Location of the arbiter. The value of this setting is a machine name or IP address. If no value is specified then localhost is used (i.e. this machine).

ArbiterPort

0

(Optional) The TCP/IP port used by the arbiter. 0 means use the default port 2710. Only change this setting if the port is used by other applications.

OutdialHost

Bob

Location of the machine running the outdial master. The value of this setting is a machine name or IP address. This setting is only required if slaves are using bridging or outdial.

OutdialPort

0

(Optional) The TCP/IP port used by the arbiter. 0 means use the default port 2680. Only change this setting if the port is used by other applications.

File Sharing

Voice Files

When a slave application needs to play a voice file (a VAP or WAV file), it passes the filename to the master, who opens and plays the file.

The following rules are looked at in order to determine where the file is located:
  1. If the file is in the slave's VBVoice system directory, then the equivalent file in the master's system directory is used. That is, if the slave plays a phrase from VBVOICE30.VAP, the master opens its copy of the file from its own system directory. This gives a performance boost because the commonly used greetings will be played from the master's local hard drive and will not have to travel across the network from the slave machine.

    Note: This assumes the files in the master and slave's system directories are identical. If not, a slave can disable this by setting [Modularity] UseSlaveSystemDir=1)

  2. File paths mentioned in the [CustomShares] section of VBVOICE.INI are replaced with their UNC share name.

    EXAMPLE

    If VBVOICE.INI mentions a share called "TaxiApp" whose path is d:\apps\production\taxidial, then any file with this path (or its sub-directories) is replaced with \\<machineName>\TaxiApp

    Custom Shares are described in Configuration below.

  3. All other files on the slave's local hard drive(s) are accessed using the default network share. For example, a file d:\MyFiles\abc.wav on machine susan would be opened by the master as \\susan\d$\MyFiles\abc.wav.

    Consult your LAN administrator to ensure these default shares are enabled on the slave machine.

  4. Full UNC (Network Neighborhood) paths are opened directly since they be seen by both the master and slave (for example \\server\SusansPublicFiles\abc.wav).

We recommend using Custom Shares (rule 2), which allow the slave application to keep all its files on the slave machine, while keeping access to the machine limited to the custom share directories.

Recorded Files

The Record control records audio messages into WAV files. Both the master and slave participate, therefore the files need to be visible to both master and slave.

The slave's Record controls must use Custom Shares or full UNC paths for the Filename property (eg. \\server\SusansPublicFiles\abc.wav).

With a Custom Share, a local hard drive directory is shared on the LAN. For example c:\TaxiApp might be shared under the name TaxiAppShare. Set the Filename property to the absolute path to the local hard drive directory, for example c:\TaxiApp\msg*.wav. The slave's Record control will create its recordings in this directory. The master will access the files using the share name, TaxiApp. Custom Shares are described are described in Configuration below.

The PlayMsgs control has the same requirement for its MessageDirectory property.

Custom Shares

Directories on a local hard drive can be shared, making them visible to other machines in Network Neighborhood with a user-configurable name. For example, the directory D:\Apps\Production\TaxiDial could be shared under the name "TaxiApp". Shares are useful when masters and slaves need to share files, such as audio and ASR grammar files.

Follow these steps to set up a custom share:
  1. Create the share on the slave machine using My Computer or Explorer.

  2. Set Permissions to Full Control.

  3. Add an entry for the share in the [CustomShares] section of VBVoice.INI. The settings are named Share0, Share1, Share2, etc., and must be consecutively numbered. The value of the setting is

ShareName, ActualPath

Use a comma to separate the ShareName and ActualPath.

These settings are in the [CustomShares] section of the VBVoice.INI file.

Setting

Example

Description

Share0

TaxiApp, d:\apps\production\taxidial

The share TaxiApp exists for the given directory d:\apps\production\taxidial

Share1

PizzaApp,c:\testapps\pizza

A second custom share

EXAMPLE

With the custom shares shown above, a slave request (on machine susan) to play d:\apps\production\taxidial\hello.wav would be sent to the master as \\susan\TaxiApp\\hello.wav. The master would open this path (to the slave machine) and play the file.

VBVoice INI Files

VBVoice now supports multiple INI files. See Configuration Files for more information.

Deploying Modular Applications

All telephony, text-to-speech (TTS), and speech recognition (ASR) is done on the master. Therefore, the machines running distributed slaves need only install VBVoice.

Licensing and Modularity

All VBVoice controls and functionality are enforced through the Pronexus Runtime Manager (RTM). Only correctly licensed VBVoice controls can be added to either slave or master applications.

TTS and ASR is done on the master. Therefore, licensing is enforced on the master only. Slaves share the ASR and TTS licenses of the master(s).