Copyright 2002-2015 Rick Mohr

Vocola extensions allow voice commands to call custom code, performing actions not offered by Vocola's built-in functions. Extensions might be written to control specific operating system or application features, or to manipulate data. Often you can write a useful extension function with just a few lines of code and use it quickly in a voice command.

Creating extensions is straightforward using Python. An extension is built as a single Python .py file whose name starts with "vocola_ext_" and is installed by copying it to the Vocola extensions folder, usually C:\NatLink\NatLink\Vocola\extensions, and either restarting Dragon NaturallySpeaking or saying "Load [Voice] Extensions". A single extension may provide many routines, with a variety of names. The only constraint is that all extension routine names must contain at least one dot to distinguish them from built-ins and user functions.

The following sections describe aspects of extension development and use:

Using Exceptions- Details of how to install and use extensions.
Creating Extensions- Step-by-step instructions for creating an extension.

Starting with Vocola version 2.8.7, a number of previously unofficial extensions are included with the Vocola release. Documentation for these can be found here. These extensions are already installed and can be used out-of-the-box.

Starting with Vocola version 2.8.7, Vocola now supports a Dragon proxy, which is a special Vocola extension that can intercept and change or redirect Vocola's calls to Dragon. A starter version of the proxy is provided which can switch back and forth between SendDragonKeys and SendInput for default keystrokes as well as print out Dragon actions when verbose mode is turned on. This functionality may be toggled by adding then using the following voice commands:

Vocola verbose (on=true|off=false) = DragonProxy.SetVerbose($1);

Vocola use (SendInput=true|SendDragonKeys=false) = DragonProxy.SetUseSendInput($1);

Some unofficial extensions developed by Mark are available here.