aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/doc/externalivr.txt
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/doc/externalivr.txt')
-rw-r--r--trunk/doc/externalivr.txt117
1 files changed, 0 insertions, 117 deletions
diff --git a/trunk/doc/externalivr.txt b/trunk/doc/externalivr.txt
deleted file mode 100644
index 73fb5820f..000000000
--- a/trunk/doc/externalivr.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-Asterisk External IVR Interface
--------------------------------
-
-If you load app_externalivr.so in your Asterisk instance, you will
-have an ExternalIVR() application available in your dialplan. This
-application implements a simple protocol for bidirectional
-communication with an external process, while simultaneous playing
-audio files to the connected channel (without interruption or
-blocking).
-
-The arguments to ExternalIVR() consist of the command to execute and
-any arguments to pass to it, the same as the System() application
-accepts. The external command will be executed in a child process,
-with its standard file handles connected to the Asterisk process as
-follows:
-
-stdin (0) - DTMF and hangup events will be received on this handle
-stdout (1) - Playback and hangup commands can be sent on this handle
-stderr (2) - Error messages can be sent on this handle
-
-The application will also create an audio generator to play audio to
-the channel, and will start playing silence. When your application
-wants to send audio to the channel, it can send a command (see below)
-to add file(s) to the generator's playlist. The generator will then
-work its way through the list, playing each file in turn until it
-either runs out of files to play, the channel is hung up, or a command
-is received to clear the list and start with a new file. At any time,
-more files can be added to the list and the generator will play them
-in sequence.
-
-While the generator is playing audio (or silence), any DTMF events
-received on the channel will be sent to the child process (see
-below). Note that this can happen at any time, since the generator,
-the child process and the channel thread are all executing
-independently. It is very important that your external application be
-ready to receive events from Asterisk at all times (without blocking),
-or you could cause the channel to become non-responsive.
-
-If the child process dies, ExternalIVR() will notice this and hang up
-the channel immediately (and also send a message to the log).
-
-DTMF (and other) events
------------------------
-
-All events will be newline-terminated strings.
-
-Events send to the child's stdin will be in the following format:
-
-tag,timestamp[,data]
-
-The tag can be one of the following characters:
-
-0-9: DTMF event for keys 0 through 9
-A-D: DTMF event for keys A through D
-*: DTMF event for key *
-#: DTMF event for key #
-H: the channel was hung up by the connected party
-E: the script requested an exit
-Z: the previous command was unable to be executed (file does not
-exist, etc.)
-T: the play list was interrupted (see below)
-D: a file was dropped from the play list due to interruption (the
-data element will be the dropped file name)
-F: a file has finished playing (the data element will be the file
-name)
-
-The timestamp will be 10 digits long, and will be a decimal
-representation of a standard Unix epoch-based timestamp.
-
-Commands
---------
-
-All commands must be newline-terminated strings.
-
-The child process can send commands on stdout in the following formats:
-
-S,filename
-A,filename
-H,message
-E,message
-O,option
-V,name=value
-
-The 'S' command checks to see if there is a playable audio file with
-the specified name, and if so, clear's the generator's playlist and
-places the file onto the list. Note that the playability check does
-not take into account transcoding requirements, so it is possible for
-the file to not be played even though it was found. If the file cannot
-be found, a 'Z' event (see above) will be sent to the child. If the
-generator is not currently playing silence, then T and D events will
-be sent to the child to signal the playlist interruption and notify
-it of the files that will not be played.
-
-The 'A' command checks to see if there is a playable audio file with
-the specified name, and if so, adds it to the generator's
-playlist. The same playability and exception rules apply as for the
-'S' command.
-
-The 'E' command stops the generator and continues execution in the dialplan,
-and logs the supplied message to the Asterisk log.
-
-The 'H' command stops the generator and hangs up the channel, and logs
-the supplied message to the Asterisk log.
-
-The 'O' command allows the child to set/clear options in the
-ExternalIVR() application. The supported options are:
- autoclear/noautoclear:
- Automatically interrupt and clear the playlist upon reception
- of DTMF input.
-
-The 'V' command sets the specified channel variable to the specified value.
-
-Errors
-------
-
-Any newline-terminated output generated by the child process on its
-stderr handle will be copied into the Asterisk log.