Oracle Advanced Outbound Extension

This chapter covers the following topics:

Advanced Outbound Extension Architecture

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 picture is described in the document text

The Advanced Outbound Extension consists of two major devices:

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

the picture is described in the document text

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.

Programming Languages

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.

Supported Programming Languages and Implementation Types
Implementation Type Description Coding Packaging
All Java Implement all interfaces in Java TeleDeviceFactoryImpl implements TeleDeviceFactory, AnalogExtensionDeviceFactory, VduDeviceFactory One JAR file
All C Implement all interfaces in C Implement all C functions Two DLL files: one for Advanced Integration, one for Advanced Outbound Extension
Advanced Integration in Java, Advanced Outbound Extension completely in C Implement TelesetDevice and RoutePointDevice in Java Implement AnalogExtensionDevice and VduDevice in C TeleDeviceFactoryImpl implements TeleDeviceFactory One JAR file and one DLL file
VDU in C only Implement TelesetDevice RoutePointDevice and AnalogExtensionDevice in Java Implement VduDevice in C TeleDeviceFactoryImpl implements TeleDeviceFactory, AnalogExtensionDeviceFactory One JAR file and one DLL file

Advanced Integration is always packaged separately from Advanced Outbound Extension except for the all-Java implementations.

Implementing AnalogExtensionDevice

AnalogExtensionDevice consists of three interfaces:

AnalogExtensionDeviceFactory

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.

createAnalogExtensionDevice Parameters
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.

init Parameters
Parameter Name Type Java or C Value
config Hashtable / OHashtable Configuration parameters in a Hashtable

Returns: Not applicable

AnalogExtensionDevice

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

addAnalogExtensionEventListener Parameters
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.

makeCall Parameters
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

removeAnalogExtensionEventListener Parameters
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.

transferScreened Parameters
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.

transferUnscreened Parameters
Parameter Name Type: Java or C Value
destNumber String / const char * Destination number to dial
appData String / const char * Application data

Returns: Not applicable

AnalogExtensionEventListener

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.

Parameters: Not applicable

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

Implementing VduDevice

VduDevice is the interface that represents predictive dialer hardware.VduDevice consists of three interfaces:

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.

VduDeviceFactory

createVduDevice

Returns: Create a VduDevice object.

createVduDevice Parameters
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.

destroyVduDevice Parameters
Parameter Name Type: Java or C Value
config VduDevice / OcctVduDevice* Object to be destroyed

Returns: Not applicable

init

Definition: Initialize VduDeviceFactory.

VduDeviceFactory Parameters
Parameters Name Type: Java or C Value
config Hashtable / OHashtable Configuration parameters in a Hashtable

Returns: Not applicable

VduDevice

addVduDeviceListener

Definition: Add VduEventListener

addVduDeviceListener
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.

makeCall Parameters
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.

open Parameters
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.

playMessage Parameters
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.

removeVduEventListener Parameters
Parameter Name Type: Java or C Value
listener VduEventListener / N/A Listener to remove

Returns: Not applicable

setConfiguration

Definition: Update configuration.

setConfiguration Parameters
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

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.

callOutcomeEvent Parameters
Parameter Name Type: Java or C Value
vduState int / oint vdu state
callOutcome int / oint call outcome

Returns: Not applicable

Testing Advanced Outbound Extension

The Advanced Outbound Extension has two testing methods:

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

Deploying Advanced Outbound Extension

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: