Inband Signaling
Many PBXs and Switches can send information about the call using Inband Signaling. This information may contain CallerID, number dialed, extension from which the call was transferred, reason for the transfer etc. Different PBXs and Switches support provision of different information via Inband Signaling.
VoiceGuide can be configured to detect Inband Signaling sent by the PBX at the beginning of the call and make this information available to scripts as Result Variables.
Inband Signaling is sent using a series of DTMF tones immediately after the call is answered. It is only sent to the recipient of the call and it does not matter after how many rings the call is answered - the signaling tones are sent immediately after call answer.
It is easy to check if Inband Signaling is sent on the line:
place an extension headset against your ear and keep the 'handset on hook'
switch depressed so that that handset can accept calls, then make a
call to that extension and when the call arrives lift the hand off the 'handset
on hook' switch - if there is any Inband Signaling sent you will hear it then a
quick series of DTMF tones.
(You will not be able to hear the tones usually if you just normally pick up the
handset as the playing of the tones would have finished by the time you raise
the handset to your ear)
To capture what tones are being sent on the line just set up a VoiceGuide script whose first module is a "Get Numbers" type module - that module will then capture the sent digits and what it captures will be stored in the Log File.
To enable inband signaling detection and interpretation in VoiceGuide an “Inband Signaling Definition File” needs to be created. This file defines what Inband Signaling VoiceGuide can expect to receive form the PBX and how it should be interpreted.
Creating an “Inband Signaling Definition File”
Creating an Inband Signaling definition files requires precise knowledge of what PBX will send in various circumstances.
Inband Signaling detection is only supported in the Enterprise (and Evaluation) version of VoiceGuide.
An example file is shown below. Comments within the file explain the purpose of the “Pattern” and “RV” entries.
Pattern=[*][*][*]???????????[*][1-4]
When using the file above the following Result Variables will be available to the script:
$RV[Inband_TOC]
4the character sent
$RV[Inband_Calling]
5 characters starting from position 5
$RV[Inband_Called]
In case of forwarded call the 5
characters starting from position 10, or an empty string case of a direct
call
$RV[Inband_Info]
Last character of the data string.
The “Pattern” entries are
defined according to the rules Visual Basic for Applications LIKE operator
pattern definition, major part of which is quoted below:
Selecting which “Inband
Signaling Definition File” to use
To indicate that a
particular “Inband Signaling Definition File” is to be used by the system the
full path to the file must the specified in the VG.INI file, section [PBX], entry InbandSignalConfig. Eg:
[PBX]
Inband Signaling Call Answering
and Timings
If Inband Signaling is
defined, VoiceGuide
will wait for up to 2 seconds for DTMF tones to arrive. Maximum time
between successive DTMF tones is 0.5 seconds. Once DTMF signaling stops
VoiceGuide will perform the pattern matching and start running the script
If Inband Signaling does
not arrive within 2 seconds of answering the call VoiceGuide will start running
the script and the Result variables which would have been defined as a result
of any pattern matches will be left undefined.
The 2 sec timeouts were found to be suitable for most systems,
but it can be changed using the settings in VG.INI file. To change that setting
please see the
[PBX] section,
entry
InbandSignalWait.
P
Signal Patterns
Definition
The
pattern-matching features allow you to use wildcard characters, character
lists, or character ranges, in any combination, to match strings. The following
table shows the characters allowed in pattern and what they match:
Characters in pattern
Matches in string
?
Any single character.
*
Zero or more characters.
#
Any single digit (0–9).
[charlist]
Any single character in charlist.
[!charlist]
Any single character not in charlist.
A
group of one or more characters (charlist) enclosed in brackets ([ ])
can be used to match any single character in string and can include
almost any character code, including digits.
Note To match the special characters
left bracket ([), question mark (?), number sign (#), and
asterisk (*), enclose them in brackets. The right bracket (])
can't be used within a group to match itself, but it can be used outside a
group as an individual character.
By
using a hyphen (–) to separate the upper and lower bounds of the range, charlist
can specify a range of characters. For example, Other
important rules for pattern matching include the following:
Signal
Patterns Examples
In
the example file shown above the pattern:
[*][*][*]???????????[*][1-4]
specifies
a string which has a total length of 16 characters, beginning with “***”
followed by 11 characters, followed by another “*” and then followed by a digit
between 1 and 4.
The
pattern of:
[*][*][*]??????[*][1-4]
specifies
a string which has a total length of 11 characters, beginning with “***”
followed by 6 characters, followed by another “*” and then followed by a digit
between 1 and 4.
In
the pattern definition we need to enclose “*” characters in square brackets,
otherwise they would be interpreted as a special “Zero or more characters.”
Indicator. The section Signal Patterns Definitions above has more information
on how the various patterns can be defined.
RV=Inband_TOC,4,1,Inband_Calling,5,5,Inband_Called,10,5,Inband_Info,17,1
Pattern=[*][*][*]??????[*][1-4]
RV=Inband_TOC,4,1,Inband_Calling,5,5,Inband_Called,10,0,Inband_Info,11,1
InbandSignalConfig=InbandSignaling_SiemensHiPath3000_v1.2.txt
[A-Z]
results
in a match if the corresponding character position in string contains
any uppercase letters in the range A–Z. Multiple ranges are included within the
brackets without delimiters.
[A-Z]
is
a valid pattern, but [Z-A]
is not.[]
is
considered a zero-length string ("").