VoiceGuide Outbound IVR Dialer

The Dialer add-on enables VoiceGuide to dial out and play a message or run a VoiceGuide script once the call has been answered. Outbound calls can be scheduled using any of these methods:

VoiceGuide can detect whether a real person or an answering machine has answered the call. Different messages or scripts can be specified in either case. When an answering machine answers the call the message or script will start after the welcoming message stops playing.

When using a voice modem to dial out a prompt message needs to be specified which will be played in a loop until the person who answers the call presses key on their telephone keypad. This is because a voice modem cannot detect when a call is answered. Only after the called person presses the key on their telephone keypad will the message or script be played. If an answering machine answers calls placed using voice modems it will end up recording the prompt message being played in a loop.

 

Outbound Call Loader

GUI for easy loading of outbound calls.

Outgoing Call parameters set using the Dial List Loader:

Phone numbers
The telephone numbers to be dialed can be typed directly into this text box. The numbers should be entered one per line.
eg:

2125551111
2125552222
2125553333

A range of numbers can be specified by using "X" in the number to be dialed.
eg: 4155557XXX results in one thousand telephone numbers to be called: 415-555-7000 to 415-555-7999

Optionally, additional information like Name and other Data can be attached to each phone number, using the pipe "|" character to separate the fields. Format used is:

Number|Name|Data1|Data2

eg:

2125551234|Bob Brown

2125551234|Bob Brown|6549148|Reminder1

The data attached to each number is acessible within the ran scripts using $RV_CALLTRACK_* Result Variables.
(Other information can also be attached to outgoing calls batch/campaign by setting the 'Result Variables' for those calls. See the 'Scripts' tab, 'Script Data' section)

 

Prefix
The number to add to before each of the numbers provided in the ‘Phone numbers’ text box or in the ‘list file’. This entry is used if a certain number has to be dialed to reach an outgoing line or if using an override code when dialing.

Phone Numbers File
Allows to select the text file from which to import the list of numbers to call. The file should contain each number on its own new line.

"X" notation is supported.
eg: entry 21255588XX would result in one hundred numbers being called: 212-555-8800 to 212-555-8899

Live Person Answer
VoiceGuide script to be started or sound file top be played when the call is answered by a real person.
Specifying the starting module can be made using notation: Script Filename|Module Title

Answering Machine Answer
When the call is answered by an answering machine or voicemail system, VoiceGuide will play this message/script.

If an answering machine is detected VoiceGuide will wait until the answering machine's welcome message finishes before starting the script/sound file specified here.

RETRY VoiceGudie will hangup if an answering machine is encountered. Call will be attempted again later - up to the maximum number of redials allowed.
IGNORE The script/file specified when the live person answers will be used.
DISABLE Answering Machine detection is disabled. VoiceGuide will start the "Live Person Answer" script immediately when call is picked up.

Answering Machine detection relies on the Dialogic card listening to the first word spoken by the caller, and determining based on what it heard whether that word sounded like it was spoken by a live person answering the call, or whether that word sounded like it was spoken by an answering machine. This means that VoiceGuide needs to wait until he Dialogic card hears the word being spoken and then advises VoiceGuide of it's decision. This incurs a delay of about a second after the first word is spoken before VoiceGuide is advised whether to play the "real person" or the "answering machine" script.

If the call is made on T1/E1 ISDN lines (and usually VoIP) VoiceGuide is able to detect the exact time at which the call has been answered. If the "Answering Machine" message option is not set then VoiceGuide will commence playing of the "Live person answer" script immediately when then handset is picked up.

Fax to Send
If a fax is specified then VoiceGuide will send the specified fax on this call. This can be a .PDF or a .TIFF file. Note that when this field is specified VoiceGuide will start playing the Fax Calling Tone immediately after the number is dialed and only a fax send will be attempted during the call.
Do Not Call List (DNC List)
File containing a list of telephone numbers which will never be called by VoiceGuide, even if they were inadvertently specified in the "Phone numbers to be called" file or text box. The file must contain each number on a separate line.

Result Variables
Result Variables can be attached to the call, and can then be used by the scripts which run when outgoing call is answered.
The format of this field is [RvName]{RvValue}. Multiple Result Variables can be specified by listing as many name-value pairs as needed. eg: [rv1]{val1}[rv2]{val2}[rv3]{val3}
This allows any custom information/settings to be linked to, and used by, the outgoing calls.

Call Options
The Options field can be used for other special settings. Eg. to specify the outgoing CallerID used for the call. Including this setting: <CallerId>5551234</CallerId> would result in CallerId to be set to 5551234 on outgoing calls (lines used must support the setting of outgoing CallerID). For information on configuring ISDN lines to send out the CallerID Name as well please see: http://voiceguide.com/forums/index.php?showtopic=6079 

Others
There are many other options that can be set using the Outbound Call Loader GUI:
Time Scheduling, Port Selection, Priority Level, actions to take when NotAnswered or RetriesExhausted events occur, Call Headers and CallerID etc.
Call Escalations
Escalation calls need to be set using the Out Dial File method

 

Result Files

In addtion to CDR Logs, Database Logs and Script Logs, outcome of all outgoing calls is saved in VoiceGuide's \data\ subdirectory.

OutDial_Contacted_Human.txt
List of calls answered by a real person.

OutDial_Contacted_AM.txt
List of calls answered by an answering machine.

OutDial_Contacted_Fax.txt
List of calls answered by a fax machine person.

OutDial_Uncontactable_NoAnswer.txt
List of calls which were not answered and rung out awaiting answer.

OutDial_Uncontactable_Busy.txt
List of calls which were not answered as the busy tone was heard.  

OutDial_Uncontactable_OnDontDialList.txt
List of calls which were not made as the telephone number was on the supplied "Do Not Call list".

OutDial_Uncontactable_NoDialer.txt
List of calls which were not dialed as the Dialer option is not enabled.

OutDial_SIT_Reorder.txt
List of calls for which the Special Information Tone (Reorder) was played by the phone company.

OutDial_SIT_NoCircuit.txt
List of calls for which the Special Information Tone (No Circuit) was played by the phone company.

OutDial_SIT_CustIrReg.txt
List of calls for which the Special Information Tone (CustIrReg) was played by the phone company.

OutDial_SIT_Unknown.txt
List of calls for which an unknown Special Information Tone was played by the phone company.

 

Out Dial File

An 'OutDial' file can also be used to load the outbound calls to be made by VoiceGuide. When the file is created, VoiceGuide will read in the file and delete it after reading it's contents.

‘OutDial’ file can be created in VoiceGuide's \data\ subdirectory, or in directory specified in VG.INI, section [VGDialer], entry: OutDialFilePath

The filename must begin with "OutDial" and have the ".xml" suffix.
Eg: OutDial_080521175323a.xml

Multiple 'OutDial' files can be created at the same time, and will be read in by VoiceGuide within about a second of them being created. All outdial files created within less then a few seconds of each other should have unique names - to avoid the possibility of a file being overwritten by newer version while it is still being read in by VoiceGuide.

It is advisable to first create the file under a different name - that doe not have the 'OutDial' prefix in its filename, and after the file writing/copying is completed then rename the file to the OutDial*.xml format. This would ensure that VoiceGuide would not attempt to open the file while it's contents are still being written to by another process.

 

Out Dial File Syntax
The syntax of the OutDial file as used by VoiceGuide v7 is:

<OutDialEntry>
  <PhoneNumber>sPhoneNumber</PhoneNumber>
  <PhoneNumberPrefix>sPhoneNumberPrefix</PhoneNumberPrefix>
  <ActivateTime>sCallTime</ActivateTime>
  <DayTimeStart>sDayTimeStart</DayTimeStart>
  <DayTimeStop>sDayTimeStop</DayTimeStop>
  <DaysCallAllowed>sDaysCallAllowed</DaysCallAllowed>
  <PortSelection>sPortSelection</PortSelection>
  <CampaignName>sCampaignName</CampaignName>
  <Priority>iPriority</Priority>
  <OnAnswerLive>sOnAnswerLive</OnAnswerLive>
  <OnAnswerMachine>sOnAnswerMachine</OnAnswerMachine>
  <OnAnswerFax>sOnAnswerFax</OnAnswerFax>
  <OnNotAnswered>sOnNotAnswered</OnNotAnswered>
  <OnRetriesExhausted>sOnRetriesExhausted</OnRetriesExhausted>
  <AnswerTimeout>iAnswerTimeout</AnswerTimeout>
  <RetriesLeft>iRetriesLeft</RetriesLeft>
  <RetriesDelay>iRetriesDelay</RetriesDelay>
  <RV>sRV</RV>
  <CallOptions>sCallOptions</CallOptions>
  <Escalation>
    sEscalation
  </Escalation>
</OutDialEntry>

Where:

sPhoneNumber

Phone number to be dialed.

sPhoneNumberPrefix

Prefix to the phone number to be dialed. Prepended to the phone number before dialing.

sActivateTime 

Time the call is to be made. Format is YYYY-MM-DD HH:NN:SS 
If this setting is blank or is omitted then the call will commence immediately. Format may also be: Now+X where X is the number of minutes from the current time that the call should be scheduled for.

sDayTimeStart

Time of the day from which this number can be dialed. Format is: HHNN  and the time is specified in 24-hour format. eg: 0800 would mean: this number may be called after 8am. If this setting is blank or is omitted then the call will be allowed to be made from midnight onwards.

sDayTimeStop

Time of the day after which this number can no longer be dialed. Format is: HHNN and the time is specified in 24-hour format.
eg: 2100 would mean: do not dial this number after 9pm. If this setting is blank or is omitted then the call will be allowed to be made right up to midnight.

sDaysCallAllowed

On which days of the week can this number be dialed. Format is : [Mo][Tu][We][Th][Fr][Sa][Su]   eg: MoWe would mean: this number may only be called on Mondays and Wednesdays. If this setting is blank or is omitted then the call will be allowed to be made on every day of the week.

sPortSelection

If the outbound call may only be made on particular phone lines then the ports to which those lines are attached should be listed in this setting. The ports should be specified as a comma delimited list of physical ports (eg: 1,2,3). If any of the lines are allowed to to be used then this setting should be left blank.
eg:  3,4,5 would indicate that the outgoing call can only be made on third, fourth or fifth port.

sCampaignName

User defined name campaign name associated with this call. Used to assist in segregating of outgoing calls based on their porpoise or source etc.

iPriority

At what priority level the calls should be made. A lower number indicates a higher priority. ie: 1 is the highest priority, then 2 etc etc. Number of priority levels is unlimited.

sOnAnswerLive

VoiceGuide script or sound file which will be used when the call is answered by a real person The full path to this script or sound file must be specified. Specifying the starting module can be made using notation: Script Filename|Module Title

sOnAnswerMachine

VoiceGuide script or sound file which will be used when the call is answered by an answering machine. The full path to this sound file or script must be specified. If this setting is blank or is omitted then the sOnAnswerLive setting will be used.
If the word none is specified, then no file will be played and the call will be hung up. The call will still be considered as having been completed.
If the word retry is specified, then the no file will be played and the call will be hung up, and dialed again at a later time (up to the maximum number of retries).

sOnAnswerFax

Fax to send. This can be a .PDF or a .TIFF file. Note that when this field is specified VoiceGuide will start playing the Fax Calling Tone immediately after the number is dialed. The OnAnswerLive and OnAnswerMachine will be ignored, as only a fax send will be attempted during the call.

sOnNotAnswered

VBScript or .EXE/.COM/.BAT/etc. to run when the outgoing call has not been answered.

sOnRetriesExhausted

VBScript or .EXE/.COM/.BAT/etc. to run when the outgoing call has not been answered and there are no more retries left. This command is ran in addition to the OnNotAnswered command.

iAnswerTimeout

How many seconds VoiceGuide will wait for the call to be answered. If this setting is blank or is omitted then the answer timeout will be set to 60 seconds.

iRetriesLeft

How many times VoiceGuide will re-dial the phone number, before abandoning trying to contact this number. If iRetriesLeft is set to 0 then only one call will be made. If this setting is blank or is omitted then a value of 2 will be used. (ie: up to 3 call attempts in total)

iRetriesDelay

How many minutes VoiceGuide will wait between successive attempts (if iCallRetries is set to 1 or more). If this setting is blank or is omitted then a value of 5 will be used.

strRV

List of custom Result Variables which can be used by the VoiceGuide script above. The format of this field is [RvName]{RvValue}. Multiple Result variables can be specified by listing as many name-value pairs as needed. eg: [rv1]{val1}[rv2]{val2}[rv3]{val3}

sCallOptions

Used for the specifying of custom call options. eg. CallerID to be sent.

sEscalation

Alternate numbers to be dialed if the call has not been answered. Once the number of retries calling sPhoneNumber is exhausted, then then alternative escalation number will be dialed immediately. Format is in <OutDialEntry>...</OutDialEntry> structure format - this allows for multiple escalations to be specified, each with its own custom settings.

 

Example 1 : Simple message delivery to a single number.

Any simple message / script delivery.

Scenario: Call telephone number 5553423, and run script d:\scripts\alarm.vgs when call is answered. Call is to be made immediately. The OutDial file should contain:

<OutDialEntry>
  <PhoneNumber>5553423</PhoneNumber>
  <OnAnswerLive>d:\scripts\alarm.vgs</OnAnswerLive>
</OutDialEntry>

 

If the call is not answered then the number will be called up to two more times at 5 minute intervals.

 

Example 2 : Scheduling a call for a particular time.

Wake up calls.
Appointment reminder service.
Any announcements which need to be sent out at a particular time.

Scenario: Call telephone number 5553328 at 6:30 in the morning on 12th June 2018 and run the script d:\scripts\todays_specials.vgs - passing to the script Result Variables which that script uses (in this case it will be pricing of the items on special for this customer). If an Answering Machine answers then run a modified version of the script which just plays the prices and leaves contact details (d:\scripts\todays_specials_AM.vgs). The OutDial file should contain:

<OutDialEntry>
  <PhoneNumber>5553328</PhoneNumber>
  <ActivateTime>2018-06-12 06:30:00</ActivateTime>
  <OnAnswerLive>d:\scripts\todays_specials.vgs</OnAnswerLive>
  <OnAnswerMachine>d:\scripts\todays_specials_AM.vgs</OnAnswerMachine>
  <RV>[ClientID]{123456}[PriceWidget]{125}[PriceDelivery]{7.50} </RV>
</OutDialEntry>

 

Example 3 : Ensuring call is made during particular days/hours.

Surveys.
Distributing information to a large client base.
Whenever making a large number of calls and need to ensure that calls are only made between the hours allowed.

Scenario: Call the telephone number 5553328 at between 10am and 6pm on any weekday, and run script d:\scripts\paymentoverdue.vgs - passing to the script Result Variables which that script uses (in this case the customer ID and the amount owing). If an Answering Machine answers then run a modified version of the script which just plays the amount owing and leaves contact details (d:\scripts\paymentoverdue_AM.vgs). The OutDial file should contain:

<OutDialEntry>
  <PhoneNumber>5553328</PhoneNumber>
  <DayTimeStart>1000</DayTimeStart>
  <DayTimeStop>1800</DayTimeStop>
  <DaysCallAllowed>MoTuWeThFr</DaysCallAllowed>
  <OnAnswerLive>d:\scripts\paymentoverdue.vgs</OnAnswerLive>
  <OnAnswerMachine>d:\scripts\paymentoverdue_AM.vgs</OnAnswerMachine>
  <RV>[ClientID]{4453566}[AmountOwing]{14325}</RV>
</OutDialEntry>

 

Specifying the days on which calls can be made and the time range during which the call can be made is useful if a large number of calls are queued and there is a need to ensure that the system will not make the calls on odd days or hours.

When specifying a large number of calls it is usually easier to use the Telephone Number Loader program, or loading the calls directly into the database.

 

Example 4 : Escalated Calls

Delivering information to on-call staff, with supervisor escalation if calls by main staff not answered.
Follow-me message delivery - where a number of possible contact numbers is given.
Whenever a message needs to be delivered to one of a range of telephone numbers.

Scenario 1: Call the number 5551111 immediately and run the script d:\scripts\alert.vgs - passing to the script Result Variables which that script uses (in this case it will be information on a problem reported by customer). If the number does not answer then wait 5 minutes and try calling it again. If after 3rd call attempt the number still does not answer then try calling 5552222 - again calling up to 3 times at 5 minute intervals. If an answering machine answers the call then start the d:\scripts\alert.vgs script as well (script should be designed to just play the information to caller). If on 3rd call attempt the second number still does not answer then run a VB Script d:\scripts\notanswered.vbs

The OutDial file should contain:

<OutDialEntry>
  <PhoneNumber>5551111</PhoneNumber>
  <OnAnswerLive>d:\scripts\alert.vgs</OnAnswerLive>
  <RetriesLeft>2</RetriesLeft>
  <RetriesDelay>5</RetriesDelay>
  <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
  <Escalation>
    <OutDialEntry>
      <PhoneNumber>5552222</PhoneNumber>
      <OnAnswerLive>d:\scripts\alert_level2.vgs</OnAnswerLive>
      <RetriesLeft>2</RetriesLeft>
      <RetriesDelay>5</RetriesDelay>
      <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
      <OnRetriesExhausted>d:\scripts\notanswered.vbs</OnRetriesExhausted>
    </OutDialEntry>
  </Escalation>
</OutDialEntry>

 

Scenario 2: Message Delivery to a Live Person only :
Call the number 5551111 immediately and run the script d:\scripts\alert.vgs - passing to the script Result Variables which that script uses (in this case it will be information on a problem reported by customer). If the number cannot be reached or if an answering machine answers the call then immediately call another number instead (5552222) and if that number is not answered by a live person then call a third number (5553333). If a live person could not be reached on any of these numbers then wait 10 minutes and try calling all 3 numbers again. If after the second call attempt to all 3 numbers no live person could be reached then run a VB Script d:\scripts\notanswered.vbs In this scenario it is acceptable to deliver the message to a Line Person only, calls answered by Answering Machines will not be regarded as successful message delivery calls and no message will be left on the answering machine.

The OutDial file should contain:

<OutDialEntry>
  <PhoneNumber>5551111</PhoneNumber>
  <OnAnswerLive>d:\scripts\alert.vgs</OnAnswerLive>
  <OnAnswerMachine>retry</OnAnswerMachine>
  <RetriesLeft>0</RetriesLeft>
  <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
  <Escalation>
    <OutDialEntry>
      <PhoneNumber>5552222</PhoneNumber>
      <OnAnswerLive>d:\scripts\alert.vgs</OnAnswerLive>
      <OnAnswerMachine>retry</OnAnswerMachine>
      <RetriesLeft>0</RetriesLeft>
      <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
      <Escalation>
        <OutDialEntry>
          <PhoneNumber>5553333</PhoneNumber>
          <OnAnswerLive>d:\scripts\alert.vgs</OnAnswerLive>
          <OnAnswerMachine>retry</OnAnswerMachine>
          <RetriesLeft>0</RetriesLeft>
          <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
          <Escalation>
            <OutDialEntry>
              <PhoneNumber>5551111</PhoneNumber>
              <CallTime>Now+10</CallTime>
              <OnAnswerLive>d:\scripts\alert.vgs</OnAnswerLive>
              <OnAnswerMachine>retry</OnAnswerMachine>
              <RetriesLeft>0</RetriesLeft>
              <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
              <Escalation>
                <OutDialEntry>
                  <PhoneNumber>5552222</PhoneNumber>
                  <OnAnswerLive>d:\scripts\alert.vgs</OnAnswerLive>
                  <OnAnswerMachine>retry</OnAnswerMachine>
                  <RetriesLeft>0</RetriesLeft>
                  <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
                  <Escalation>
                    <OutDialEntry>
                      <PhoneNumber>5553333</PhoneNumber>
                      <OnAnswerLive>d:\scripts\alert.vgs</OnAnswerLive>
                      <OnAnswerMachine>retry</OnAnswerMachine>
                      <RetriesLeft>0</RetriesLeft>
                      <RV>[ClientID]{554}[Severity]{2}[ContactTel]{5559743}</RV>
                      <OnRetriesExhausted>d:\scripts\notanswered.vbs</OnRetriesExhausted>
                    </OutDialEntry>
                  </Escalation>
                </OutDialEntry>
              </Escalation>
            </OutDialEntry>
          </Escalation>
        </OutDialEntry>
      </Escalation>
    </OutDialEntry>
  </Escalation>
</OutDialEntry>

 

The above script will result in the numbers being called in the following order : 5551111, then if no answer dial 5552222, and if no answer then dial 5553333, then wait for 10 minutes, and repeat calling 5551111 then 5552222 then 5553333. Dialing of furhter numbwers would stop as soon as one of the calls is answered.

Please note that the above script will only work if Dialogic cards are used - detection of whether a Human or an Answering Machine answers the call can only be made by a Dialogic card - Voice modems report all outgoing calls as 'Connected to a Human' immediately after dialing the number.