This is the man page for vda. I received it off the news group comp.sys.att, so I assume there are no legal problems with making it available here.

     vda(1)			VOICE POWER			vda(1)

	  vda -	voice data access utility

	  vda [-c chan]	[-L max_tt_length] [-t timeout]	[-r
	      [-f flash_dur] [-V vocab_file] [-v] [-l linecontrol] [-p
	      [-m] [-i]	[-D] [-F tmpl_file] menu_file

	  Vda conducts a dialog	with callers to	the Voice Power	Voice
	  Card according to instructions contained in a	database.  The
	  database consists of three types of files: voice files,
	  branch files,	and password files.  Voice files and branch
	  files	are arranged in	a tree structure; each node of the
	  tree corresponds to one of these files.  The leaves of the
	  tree are always voice	files.	The root node of the tree is

	  -c chan
	       Use voice channel chan.	Default: -1, the first channel
	       found searching from channel 0.	A channel number of -2
	       means the first non-busy	channel	found searching	from

	  -L max_tt_length
	       If a multi-key touch tone input max_tt_length
	       characters long is received, assume it is complete
	       without waiting for a terminating '#' character.
	       Default and maximum value is 21.

	  -t timeout
	       If no touch tone	input is received when one is
	       expected, timeout after timeout seconds.	 A value of 0
	       means wait forever.  Default value is 15; maximum value
	       is 59.  When a timeout occurs, the action indicated by
	       a timeout line (if any) in the current menu is
	       performed.  If no timeout line is present, the current
	       call is disconnected and	vda waits for a	new call.

	  -r max_record_len
	       When recording a	file, stop recording when max_record
	       bytes have been written.	 Default value is 120,000;
	       range 12000 to 840000 inclusive.	 Note that recording
	       is at 2020 bytes	per second (16k	bits).

	  -f flash_dur
	       Set the duration	of switch hook flashes to flash_dur
	       milliseconds.  Default 500; range 100 to	10000.

	  -V vocab_file

								Page 1

     vda(1)			VOICE POWER			vda(1)

	       Use vocabulary file vocab_file:e:v and vocabulary
	       header file vocab_file_h	when playword and playnum are

	  -v   Provide diagnostics on stderr when dial is called.

	  -l linecontrol
	       The line	control	in vda's initial state is set to
	       linecontrol. Valid values are 0 for on-hook (the
	       default), 2 for line and	set, and 3 for set only.
	       Usually used with the -i	option described below.

	  -p pass_file
	       Use the file pass_file as an ASCII list of valid
	       passwords, one per line (numeric	characters only).

	  -m   Process the root	branch file for	multi-key input.  In
	       this case user inputs are '#' key terminated.

	  -i   Immediate.  Vda runs its	script immediately, rather
	       than waiting for	the phone to ring.  When vda is	done
	       talking with the	caller,	it then	exits rather than
	       waiting for the phone to	ring.  A -l option is usually
	       needed with this	option.

	  -D   Delay.  If vda was run in immediate mode, delay will
	       leave the voice card port switches (line	control) in
	       their current state for 10 seconds after	vda exits.

	  -F tmpl_file
	       Use the call classification template file tmpl_file
	       when dialing.  The template file	permits	the addition
	       of new tones or the redefinition	of existing tones.
	       It's format is defined in v_cc_tfile(3).

	  Voice	files are 16k or 24k sub-band data files, or 64k mu
	  law data files.  A full path is needed if they are not in
	  the same directory where vda is run.	These files are	played
	  to a caller over the phone line.  For	64k data, a function
	  called play64	is used	(see below).  The 16k files may	be
	  created or edited with the voice editor ve(1), or the	record
	  function (see	below).	 Ve(1) can also	edit or	create 24k and
	  64k voice files.

	  Password files hold a	list of	valid passwords	that are
	  accepted whenever a password function	is executed.  A	-p
	  command line argument	to vda specifies the name of the
	  password file.  The prompt used to ask the user to enter
	  their	password is determined by the ARGUMENT field in	the
	  appropriate line of the branch file.	Password is usually
	  used as a greeting function to restrict access to a subtree.

     Page 2

     vda(1)			VOICE POWER			vda(1)

	  After	three bad entries vda hangs up.

	  Branch files describe	a voice	or a shell menu.  A voice menu
	  usually includes a voice prompt telling the caller what
	  touch	tone choices are available.  An	optional greeting
	  message may be spoken	when the menu is first accessed.  In
	  addition, responses to various touch tone entries are
	  defined in the branch	file.

	  A shell menu is similar to a voice menu, except that instead
	  of responding	to the user's touch tone input,	response is
	  based	on the exit value of a shell script.  A	shell menu has
	  a run	line, designated by R as the first field.

	  Each line of a branch	file is	of the form:


	  TT   The valid values	for the	TT field are shown below.
	       Note that at least one of the first three (G P R) must
	       be present; other lines are optional.

	       The other three fields on each line define a function
	       with an argument	that is	executed in response to	the TT
	       input.  After this function is done, the	FLOW field
	       determines what happens next.

	       G    Indicates the greeting line, which is executed
		    once when the menu is first	entered.

	       P    Indicates the prompt line, which is	executed after
		    the	greeting line, and repeatedly each time	a
		    "loop" is encountered.  After the prompt is
		    executed vda waits for a Touch Tone	input from the

	       R    Indicates the run line, which is executed after
		    the	greeting line (if any).	 The FUNCTION must be
		    shell.  This runs a	shell script and causes
		    branching to be based on the exit value of the
		    shell script.  Note: this exit value is an
		    unsigned 8 bit number.  No prompt line or greeting
		    is permitted in a script with a run	line.

	       T    Indicates the time out line.  If the user does not
		    enter a TT within the time out period the time out
		    line (if present) is executed.  The	units are

	       O    Indicates the option line.	Some vda command line

								Page 3

     vda(1)			VOICE POWER			vda(1)

		    options may	follow this character, each separated
		    by white space, to adjust some operating
		    parameters just within that	menu.  Options
		    supported are: -l, -r, and -t (see above).

	       -    Indicates the default line,	which is executed if
		    the	user's input does not match any	TT value in
		    the	file.

	       +    Indicates the confirmation line, which is executed
		    if the user's input	matches	any TT value in	the
		    file.  The confirmation line is executed before
		    the	line that was matched is executed.  The	FLOW
		    field is not considered for	confirmation lines.
		    This line may be used only in scripts including
		    explicit touch tone	specifications,	that is, a TT
		    value of 0-9, *# abcd, or shell exit code values.

	       .    A place holder with	no corresponding input.	 Used
		    in sequences (see below).

	       0-9 * #
		    In a voice menu corresponds	to a user Touch	Tone
		    input.  For	a shell	menu see the next line.	 The
		    line with this TT value is executed	when the user
		    enters this	value.

		    In a voice menu strings of numeric values or '*'
		    correspond the a user's multiple Touch Tone	input
		    terminated by a '#'	key.  The line with this
		    numeric string in the TT field is executed when
		    the	user enters this string	terminated by a	'#'

		    In a shell menu strings of numeric values ('*' not
		    valid) correspond to a shell scripts return	value.
		    The	line is	executed when the shell	script returns
		    the	corresponding exit value.

	       The valid FUNCTION values are shown below.  Each	acts
	       on the value or file name specified in the ARGUMENT

	       play Plays a 16k	or 24k voice file.

		    Plays a 64k	voice file.

		    Plays a numeric value.  The	ARGUMENT is either a

     Page 4

     vda(1)			VOICE POWER			vda(1)

		    number or one of: r1, r2, ..., r6.	r1 refers to
		    the	first number written to	standard output	by a
		    shell script (see shbranch and shell below).

		    Like playnum with two exceptions.  First, numbers
		    are	played one digit at a time.  Second, the
		    letters A -	Z are accepted in the ARGUMENT.	If a
		    custom vocabulary is present, these	letters
		    address the	words or phrases (maximum 26) in that
		    vocabulary.	 Words indicated in ARGUMENT but
		    missing in the vocabulary file are silently

	       Play Play64 Playnum Playword
		    Same as above but can not be interrupted with a
		    Touch Tone.

		    Jumps to a new node	described by a branch file, in
		    which single key TT	inputs are interpreted.	 If a
		    run	line is	encountered in the branch file,	8 bit
		    exit values	are interpreted	instead.

		    Jumps to a new node	described by a branch file, in
		    which multiple key TT inputs terminated by the '#'
		    key	are interpreted.

		    Obsolete, same as branch.

	       dial Dials the number specified by ARGUMENT which may
		    include: touch tone	digits 0-9 *# abcd, to wait
		    for	normal dialtone, 't' to	wait for transfer
		    dialtone, 'k' to wait for PBX confirmation
		    dialtone.  Initial dialtone	detection is only
		    performed when the indicated string	starts with
		    '+'.  The touch tone string	may also include 'u'
		    to dial the	last touch tone	input from the user,
		    or 'r' to dial a number obtained from the first
		    number written to standard output by a called
		    shell script,

		    Records a 16k voice	file.  Recording stops when a
		    TT is entered, a silence threshold is exceeded, or
		    the	maximum	number of bytes	to record is reached.

		    Plays a 16k	voice file that	prompts	the user for a
		    '#'	terminated entry, and then checks to see if

								Page 5

     vda(1)			VOICE POWER			vda(1)

		    the	entry is in the	pass_file. The user has	three
		    trys to enter the correct password.	 The -p
		    pass_file option must be given if this line	is
		    included.  If the -L max_tt_length option is also
		    included, max_tt_length must be large enough to
		    contain the	password including the terminating

		    Runs a shell script	named by ARGUMENT with the $1
		    argument set to the	user's last touch tone input.
		    The	shell script's standard	output is read to
		    collect up to six newline separated	numeric
		    strings, which can be referenced by	the dial and
		    the	playnum	functions.

		    Operate on the ten general-purpose registers, 0
		    through 9.	Data accessible	to this	function
		    includes: u	for last user input (converted to an
		    integer), and r0 - r5 for the first	six numeric
		    values written to standard output by the last
		    shell script executed.  Operators include: i for
		    increment, d for decrement,	+, and -. The register
		    function and the next two log and monitor are
		    discussed in greater detail	in the VDA Tutorial in
		    the	appendix.

	       log  Print a formatted string on	standard output.
		    Numeric data (%d) accessible to this function
		    includes: n0 - n9 for the ten general purpose
		    registers, x for the last shell script exit	value,
		    and	c for the Voice	Card number.  String data (%s)
		    accessible includes: r0 - r5 for the first six
		    numeric values written to standard output by the
		    last shell script executed,	u for the last touch
		    tone entry by the user, and	t for the date and

		    Store a formatted string in	a structure ipc	shared
		    memory.  Identical to the log function, except
		    that data goes to shared memory instead of
		    standard output.  The user can write a program to
		    examine ipc	shared memory and display it in	an
		    application	specific way.

	  FLOW The valid values	for the	FLOW field are shown below.

	       loop After the line is executed the prompt line is

     Page 6

     vda(1)			VOICE POWER			vda(1)

		    After the line is executed the control returns to
		    the	parent node.

	       exit After the line is executed vda hangs up, and is
		    ready for another call.  On	the last line of a
		    sequence, this applies to all the elements of the

		    After the line is executed the next	line in	the
		    file is executed.  A sequence of responses to a
		    specific input can be implemented with the
		    nextline FLOW value.  An upper limit of 50 lines
		    is permitted in a sequence.

	  Diagnostic information is written to stderr when a problem
	  occurs.  All underflow or overflow errors are	reported to

	  An exit code of 0 is returned	on normal termination; 1 for
	  non-recoverable command line,	internal, library, or driver
	  errors; 2 for	V2R_FATAL errors; and 3	for V2R_OFATAL errors.

	  Status shared	memory key: from ftok( "/usr/bin/vda", 'V' )

	  The identifiers used for the values returned from stdout of
	  shell	scripts	is inconsistent.  Identifiers r1-r6 are	used
	  for the playnum function.  Identifiers r0-r5 are used	for
	  register, log, and monitor functions.	 In the	interest of
	  backwards compatibility with existing	scripts	that account
	  for this inconsistency, this cannot be repaired.

	  VDA -	Voice Data Access Utility tutorial,  v_cc_tfile(3),

								Page 7

     vda(1)			VOICE POWER			vda(1)

     Page 8