This chapter covers the following topics:
The Advanced Integration of Oracle Telephony Adapter SDK supports preview and progressive calls for Oracle Advanced Outbound Telephony. The Advanced Outbound Extension of Oracle Telephony Adapter SDK supports predictive calls in the Oracle Telephony Adapter Server framework. Predictive calls are dialed automatically by a predictive dialer, such as a voice detection unit (VDU), and transferred programmatically to an interaction center agent. Oracle Advanced Outbound Telephony requires access to analog extensions and VDU boards. The Oracle Telephony Adapter SDK Advanced Outbound Extension extends the Oracle Telephony Adapter Server framework to support development of telephony adapters that are capable of accessing these two types of devices.
The architecture of the Oracle Telephony Adapter SDK Advanced Outbound Extension consists of all the components that are required by the Advanced Integration level of Oracle Advanced Inbound Telephony plus the Advanced Outbound Dial Server. Advanced Outbound Dial Server is a server process that integrates list management and a predictive dialer. Oracle Telephony Adapter Server provides the Advanced Outbound Dial Server with the abstraction that is necessary to access and control predictively-dialed calls.
As the following diagram illustrates, in Advanced Integration, the Telephony Adapter Server is the intermediary between the telephony system and Oracle Advanced Inbound. Oracle Universal Work Queue is the intermediary between Oracle Advanced Inbound and the agent's client system, including the icWork Controller and the softphone. The Oracle Telephony Adapter Server is extended to handle requests from Advanced Outbound Dial Server.
Advanced Outbound Extension Architecture
The Advanced Outbound Extension consists of two major devices:
Analog Extension: Extension for analog lines. The analog extension is similar to the TelesetDevice but has only one line extension.
Oracle Telephony Adapter Server provides abstraction interfaces for these types of devices so that adapter developers can develop specific implementations of these devices to their target switch, middleware, and VDU hardware. The Advanced Outbound Dial Server accesses these devices by using the dialer object hosted by Oracle Telephony Adapter Server. The following diagram illustrates the architecture.
Advanced Outbound Extension and Oracle Telephony Adapter Server
As the previous diagram illustrates, Advanced Outbound Dial Server communicates with AnalogExtensionDevice and VDUDevice through DialerDevice running in Oracle Telephony Adapter Server.
DialerDevice controls and receives events from AnalogExtensionDevice and VduDevice to perform the functions required by the Advanced Outbound Dial Server. DialerDevice is developed Oracle and is shipped with Oracle Advanced Inbound Telephony. Adapter developers are not required to develop DialerDevice.
The Advanced Outbound Extension adds the following to the Oracle Telephony Adapter SDK package.
Developers can implement Advanced Outbound Extension in the Java or C programming languages. The choice of programming language is determined by the underlying API provided by the third-party vendor of AnalogExtension and the VDU board. Typically, the AnalogExtension API is included in the same API that is necessary for Advanced Integration (that is, TelesetDevice and RoutePointDevice) while the VDU API is available separately.
Developers may implement Advanced Outbound Extension in the same programming language as the Advanced Integration or in a different programming language. For example, developers can implement Advanced Integration in Java and implement the Advanced Outbound Extension in C. The following table lists the supported combinations of programming languages and implementation types.
Advanced Integration is always packaged separately from Advanced Outbound Extension except for the all-Java implementations.
AnalogExtensionDevice consists of three interfaces:
AnalogExtensionDeviceFactory: Factory interface that creates and destroys AnalogExtensionDevice objects
AnalogExtensionDevice: Interface for all methods of Analog Device
AnalogExtensionEventListener: Interface for sending events required by Analog Device
Developers must implement the AnalogExtensionDeviceFactory interface in their TeleDeviceFactory implementations. The TeleDeviceFactory implementation must implement both the TeleDeviceFactory and AnalogExtensionDeviceFactory interfaces. For example,
public class TeleDeviceFactoryImpl implements TeleDeviceFactory, AnalogExtensionDeviceFactory
createAnalogExtensionDevice
Definition: Create an AnalogExtension object.
Parameter Name | Type Java or C | Value |
---|---|---|
extension | String/const char* | Number of the analog extension |
Returns: AnalogExtensionDevice object
destroyAnalogExtensionDevice
Definition: Destroy an AnalogExtension object.
Parameter Name: extension
Type Java or C: String/const char*
Value: Number of the analog extension
Returns: AnalogExtensionDevice object
init
Definition: Initialize AnalogExtensionDeviceFactory.
Parameter Name | Type Java or C | Value |
---|---|---|
config | Hashtable / OHashtable | Configuration parameters in a Hashtable |
Returns: Not applicable
AnalogExtensionDevice is the interface that represents an extension for analog lines. AnalogExtensionDevice is similar to the TelesetDevice, but has only one line extension. It is used by the VDU to make outbound calls for Advanced Outbound Integration.
addAnalogExtensionEventListener
Definition: Add AnalogExtensionEventListener
Parameter Name | Type Java or C | Value |
---|---|---|
listener | AnalogExtensionEventListener, N/A | The listener to add |
Returns: Not applicable
completeTransfer
Definition: Complete transfer.
Parameters: Not applicable
Returns: Not applicable
destroy
Definition: Destroy the AnalogExtensionDevice
Parameters: Not applicable
Returns: Not applicable
makeCall
Definition: Make a call.
Parameter Name | Type: Java or C | Value |
---|---|---|
destNumber | String/const char* | The destination number to dial |
appData | String/const char* | Application data |
Returns: Not applicable
releaseCall
Definition: Release a call.
Parameters: Not applicable
Returns: Not applicable
removeAnalogExtensionEventListener
Definition: Remove AnalogExtensionEventListener
Parameter Name | Type Java or C | Value |
---|---|---|
listener | AnalogExtensionEventListener / N/A | The listener to remove |
Returns: Not applicable
transferScreened
Definition: Initialize a two-step transfer.
Parameter Name | Type Java or C | Value |
---|---|---|
destNumber | String / const char | Destination number to dial |
appData | String / const char | Application data |
Returns: Not applicable
transferUnscreened
Definition: Initialize a single-step transfer.
Parameter Name | Type: Java or C | Value |
---|---|---|
destNumber | String / const char * | Destination number to dial |
appData | String / const char * | Application data |
Returns: Not applicable
Oracle Telephony Adapter Server internally implements AnalogExtensionEventListener. AnalogExtensionEventListener is associated with AnalogExtensionDevice by calling addAnalogExtensionEventListener and removeAnalogExtensionEventListener. Developers must keep a list of listeners in the AnalogExtensionDevice implementation and send events to Oracle Telephony Adapter Server by calling the method defined in AnalogExtensionEventListener.
callEstablishedEvent
Definition: Call established event.
Returns: Not applicable
callReleasedEvent
Definition: Call released event
Parameters: Not applicable
Returns: Not applicable
callTransferredEvent
Definition: Call transferred event.
Parameters: Not applicable
Returns: Not applicable
VduDevice is the interface that represents predictive dialer hardware.VduDevice consists of three interfaces:
VduDeviceFactory: Factory interface that creates and destroys VduDevice objects
VduDevice: Interface for all methods of VDU Device
VduEventListener: Interface for sending events required by VDU Device
Developers may implement these interfaces in Java or C. For Java implementations, developers must implement this interface in their TeleDeviceFactory implementations similar to AnalogExtensionDeviceFactory. For C implementations, developers must implement the function that is defined in the VduDevice.h and VduFactory.h header files and create a DLL. In these cases, VduDeviceFactory is not required by TeleDeviceFactory implementations.
Note: You can implement VduDevice in C and implement the rest of the adapter in Java. The reason for this is that VDU is likely to be a different system than the CTI middleware with which the developer is integrating. For example, Java APIs may be available for the CTI middleware but not for the VDU board.
Returns: Create a VduDevice object.
Parameter Name | Type: Java or C | Value |
---|---|---|
vduId | String / const char* | Vdu ID |
config | Hashtable / OHashtable | Configuration parameters in a Hashtable |
Returns: Vdu Device object
destroyVduDevice
Definition: Destroy a VduDevice object and free any allocated resources.
Parameter Name | Type: Java or C | Value |
---|---|---|
config | VduDevice / OcctVduDevice* | Object to be destroyed |
Returns: Not applicable
Definition: Initialize VduDeviceFactory.
Parameters Name | Type: Java or C | Value |
---|---|---|
config | Hashtable / OHashtable | Configuration parameters in a Hashtable |
Returns: Not applicable
Definition: Add VduEventListener
Parameter Name | Type: Java or C | Value |
---|---|---|
listener | VduEventListener / N/A | Listener to add |
Returns: Not applicable
close
Definition: Close the Vdu port.
Parameters: Not applicable
Returns: Not applicable
dropCall
Definition: Drop the current call on the VDU port, and stop call progress detection.
Parameters: Not applicable
Returns: Not applicable
makeCall
Definition: Make a call through this VDU port. This call sets the port offHook before making the call.
Parameter Name | Type: Java or C | Value |
---|---|---|
destNumber | String / const char* | Destination number, if null, this call will do call progress detection only |
cpd | boolean / oboolean | Call progress detection. If false, all followed parameters are ignored. |
sit | boolean / oboolean | STI tone detection |
amd | boolean / oboolean | Answering machine detection |
amdMethod | int / oint | Answering machine detection method |
narc | int / oint | No answer ring count |
Returns: Not applicable
offHook
Definition: "offhook" the associated analog extension. After successfully executing this method, the extension remains in the "offhook" state for one or two seconds.
Parameters: Not applicable
Returns: Not applicable
open
Definition: Open the Vdu port.
Parameter Name | Type: Java or C | Value |
---|---|---|
portNumber | int / oint | vdu port number |
vduType | int / oint | vdu type |
voiceBoard | int / oint | voice board number |
dtiBoard | int / oint | dti board number |
Returns: Not applicable
playMessage
Definition: Play voice message.
Parameter Name | Type: Java or C | Value |
---|---|---|
fileName | String / const char* | Message file name |
repeatCount | int / oint | Repeat count |
Returns: Not applicable
removeVduEventListener
Definition: Remove VduEventListener.
Parameter Name | Type: Java or C | Value |
---|---|---|
listener | VduEventListener / N/A | Listener to remove |
Returns: Not applicable
setConfiguration
Definition: Update configuration.
Parameter Name | Type: Java or C | Value |
---|---|---|
config | Hashtable / OHashtable | Configuration parameters in a Hashtable |
Returns: Not applicable
withdrawCall
Definition: Withdraw the current call on the VDU port. If an outcome had already been reached, then "withdraw" does nothing.
Parameters: Not applicable
Returns: Not applicable
VduEventListener is implemented internally by Oracle Telephony Adapter Server. VduEventListener is associated with VduDevice by calling addVduEventListener and removeVduEventListener.
Developers must keep a list of listeners in the VduDevice implementation and send events to Oracle Telephony Adapter Server by calling the method that is defined in VduEventListener.
callOutcomeEvent
Definition: Event reported by Vdu device.
Parameter Name | Type: Java or C | Value |
---|---|---|
vduState | int / oint | vdu state |
callOutcome | int / oint | call outcome |
Returns: Not applicable
The Advanced Outbound Extension has two testing methods:
SDK Integrated Test Utility
Oracle E-Business Suite Advanced Outbound Telephony application
The TeleDevice component of the SDK Integrated Test Utility provides a user interface for creating and controlling Dialer devices. Developers can use the Dialer device UI for invoking Dialer methods and monitor Dialer Events.
Developers should set up an environment for Oracle Advanced Outbound Telephony and perform integration testing.
Related Topics
Oracle Advanced Outbound Telephony Implementation Guide
Implementations that are done exclusively in Java require no extra steps to deploy the Advanced Outbound Extension because the Adapter Jar file contains the extension. For partial Java and C implementations, perform the following procedures:
Package the C implementation in a DLL file, such as ao_extension.dll.
Copy the file ao_extension.dll to the third-party directory where Interaction Center Server Manager is installed and where Oracle Telephony Adapter Server will run.
Update the Server Option of the target Oracle Telephony Adapter Server with -vdu_dll ao_extension.dll.