The Power Dialer COM object for Active Call Center Professional provides efficient, reliable, and scalable multi-line outbound dialing to features to virtually any application. Unlike robotic dialers that can only deliver information and perhaps analyze responses, Active Call Center's rich Call Tree scripting capabilities allow developers to create outbound dialing solutions that are completely integrated with their existing software, data, and networks.
Note: The Power Dialer COM object is available only as an optional add-on component to Active Call Center Professional. There are extra licensing fees associated with the Power Dialer, for details please contact us.
The Power Dialer is designed to be used with telephony hardware such as Brooktrout or Dialogic. Voice modem users should use the single line Outbound Dialing COM object instead.
The Power Dialer COM object is used in situations when an application needs to be able to make large volumes of outbound calls. Examples include:
The architecture of the Power Dialer COM object allows it to be efficiently instantiated simultaneously from many applications or many times from the same application. The unique design of the Power Dialer COM object minimizes the chances of crashing the application that calls it: in the unlikely event the dialer object does encounter an error, that error is most likely to leave the rest of the system applications intact. Call requests that are pushed to the COM object are executed with minimal delay and extremely efficient resource use. These key design features make the Power Dialer COM object an ideal choice for any application that requires large-scale multi-line dialing capability.
The Power Dialer COM object works nicely even when an Active Call Center Call Monitoring session is answering inbound calls. This allows for multi-line inbound and outbound telephony solutions on the same system.
The text below discusses technical details of the COM object, followed by an example showing how to use the COM object. If the technical details get confusing, look at the example - it should clarify use of the COM object quickly.
Properties and Methods of the Power Dialer COM Object
The COM object for outbound dialing is instantiated using the class name "ACCOutbound.MultiCallMaker". The CallMaker object has the properties listed below, all of which must be set before attempting to make calls:
This property stores the exact name of the Call Tree to use for the outbound call. Include full path qualifiers in the file name.
This property contains the name of the Call History file to which call data will be written. Under the default Active Call Center installation the CallLog property should be set to "C:\Program Files\Active Call Center\Phone Call Log.mdb".
Some applications may have special data collection needs; the CallLog property is provided for these applications so that they may write to a different Call History. Make new Call History files by copying the "Blank Phone Call Log.mdb" file in the Active Call Center program folder.
The AppPath property should be set to the name of the default file path used by the Call Tree. This path will most likely be "C:\Program Files\Active Call Center". Notice no trailing backslash is applied to the path name.
Set this property to True to display the Outbound Dialer window. Set the property to False to hide the window.
The ACCOutbound.MultiCallMaker object has several methods:
The Quit method is used to immediately terminate the Power Dialer. Using Quit during calls creates a hard exit that will abruptly terminate all calls in process and shut down the COM object. For a graceful exit, use MakeCalls("Reset,"") to reset the call queue, wait for calls to finish by calling the IsCallingOut method, then call Quit to close the dialer.
The UseLine method accepts a line number to be used for outbound dialing. Call the method repeatedly to add multiple line numbers to the list of line numbers to use. Passing line number -1 results in a complete reset of the list of lines that are used. Typical usage would include a For...Next that cycles through a large number of lines:
...
' Use a single line (9) as follows.
MyCallMaker.UseLine 9
' Use multiple lines (4-24) as follows:
For Counter = 4 to 24
MyCallMaker.UseLine Counter
Next
The MakeCalls method is used to add numbers to the dial list. The first time MakeCalls is called, it launches the Active Call Center Call Monitor and initiates outbound dialing based on the value of the CallTree, CallLog, and AppPath properties (which should be set before calling MakeCalls).
Once the Call Monitor is started, subsequent calls to MakeCalls only add or remove numbers from the call list. Calling MakeCalls again will not change the CallTree, CallLog, or AppPath properties being used. To reset these properties, the Quit method must be called to close the COM object and the Power Dialer must be re-launched.
MakeCalls will return immediately after being called, it will impose little to no delay on the calling application. Once the Call Monitor has been started, if lines are free, calls will start almost instantaneously. MakeCalls is thread safe and can be called simultaneously from many different applications or threads.
The parameters of the MakeCalls function are as follows:
This method returns a true/false value that indicates whether or not the MultiCallMaker object is still processing outbound calls. If the application requires waiting for outbound calls to complete before continuing, call this method on regular intervals to check the completion status.
IsCallingOut only returns True while the application is actually dialing or has calls in the call queue. As a result, the very first call to MakeCalls will not immediately cause IsCallingOut to return a True value since it takes a moment to initialize the dialing object. If it is necessary to check IsCallingOut after the first call request, we suggest inserting a timed delay that waits for IsCallingOut to become True (i.e., wait for the call request to start processing) prior to waiting for IsCallingOut to become False (indicating dialing has finished). A simple implementation is provided in the sample code at the very end of this section.
Visual Basic programmers can examine the sample code below for usage of this method:
...
' Assume that dialer is working. This is code to stop the
' Dialer.
'
' Reset call list.
MyCallMaker.MakeCalls "Reset", "", False
' Wait for calls in process to finish.
Do While MyCallMaker.IsCallingOut = True
' Set Start Time
StartTime = Now()
' Wait for 15 seconds
Do While Now() < StartTime + 15# / (3600# * 24#)
' DoEvents prevents lockups!
DoEvents
Loop
Loop
' Program continues...
Note: VBScript does not support the DoEvents statement, so the above code is valid in Visual Basic and Visual Basic for Applications only.
Checking Call Completion Status and Making Multiple Attempts
All calls dialed by the Power Dialer COM object will result in execution of the Call Ending VBScript Macro. As a result, customized call completion status reporting should be placed in the Call Ending VBScript Macro. For an example of how to do this, please consult the Power Dialer.mdb Microsoft Access sample application that is included with the COM object.
Calls that were either busy, not answered, or otherwise unsuccessful will result in a CallID = -1 and one of the following Response variable values in the Call Ending VBScript Macro:
The design of the Power Dialer COM object makes it easy to add unsuccessful calls back to the call list. The following code placed in the Call Ending VBScript Macro will work nicely for example:
' Declare variables.Successful calls can be tagged and saved in the Call Ending VBScript Macro as well. For an example refer to the Power Dialer.acc Call Tree that comes with the COM object and sample application.
Dim MyCallMaker
' Check for a bad status
If CallID = -1 Then
' Create an outbound call maker.
Set MyCallMaker = _
CreateObject("ACCOutbound.MultiCallMaker")
' None of the properties need to be set because
' the call monitor for the dialer is already started.
' The CalledNumber and PassedValue variables store
' the number and passed value for this call.
MyCallMaker.MakeCalls CalledNumber, PassedValue, False
' Note: it's a good idea to keep a count of
' the number of attempts made so attempts aren't made
' in an infinite loop.
End If
Example Using the Power Dialer COM Object
The Power Dialer COM object ships with a sample Microsoft Access application and sample Active Call Center Call Tree that provide an example of how to implement a complete multi-line dialing solution.
In addition, the sample code below shows how to initiate outbound calls using the Power Dialer COM object. This code could be used in an Active Call Center macro, an Excel or other VBA macro, Visual Basic, and VBScript. Note: line breaks may not be correct depending on the media being viewed.
' Declare variables.
Dim MyCallMaker, NumbersList, gTools
' Create the GeneralTools object
Set gTools = CreateObject("ACCTools.GeneralTools")
' Create an outbound call maker.
Set MyCallMaker = _
CreateObject("ACCOutbound.MultiCallMaker")
' Set the call tree to use for these outbound calls.
MyCallMaker.CallTree = _
"C:\Program Files\Active Call Center\Examples\Database Example.acc"
' Set the log file to use for saving data.
MyCallMaker.CallLog = _
"C:\Program Files\Active Call Center\Phone Call Log.mdb"
' Set the default application path:
' note that there is no trailing backslash.
MyCallMaker.AppPath = _
"C:\Program Files\Active Call Center"
' Set the numbers to dial.
' Here there are two numbers,
' separated by a carriage return/line feed.
NumbersList = "18005551212" + _
vbCrLf + "5551212"
' Set the some lines to use for outbound dialing.
MyCallMaker.UseLine 1
MyCallMaker.UseLine 3
' Initiate the outbound calls, start monitor.
MyCallMaker.MakeCalls NumbersList, "", False
' Wait for calls to start, 30 seconds.
If MyCallMaker.IsCallingOut = False
gTools.Sleep 30000
End If
' Wait for calls in process to finish.
Do While MyCallMaker.IsCallingOut = True
' Delay 15 seconds.
gTools.Sleep 15000
Loop
' Reset tools object.
Set gTools = Nothing' Close power dialer.
MyCallMaker.Quit