(Page 9 of 12 in this chapter)


3.8 Transferring Calls

AG Access supports the ability to transfer calls from a first line to a second line through a Private Branch Exchange (PBX), Centrex, or Centrex-like exchange. Call transfer operations can only be initiated when the call (first line) is in the Connected state.

The two methods for transferring calls are:

Both methods deliver a flash hook to the first line and obtain a second line. After AG Access receives a recall dial tone from the line, the process for placing a second call is identical to that described in Section 3.4.

Note: The transfer functions use the same call progress analysis algorithms described in previous sections about placing calls. adiPlaceSecondCall and adiTransferCall also use the ADI_PLACECALL parameters.

3.8.1 Using Supervised Transfer

The supervised transfer method allows the application to control the transfer process.

Figure 11. Call Transfer State


To use supervised transfer:

  1. The application invokes adiPlaceSecondCall.

    
    AG Access obtains a second line and generates the ADIEVN_PLACING_CALL2 event. AG Access then delivers the second address to the line and monitors the call as described in Section 3.2.
    
    If AG Access fails to establish the second call, an ADIEVN_CALL2_DISCONNECTED is generated. The port changes back to the Connected state for the first line.
    If the second call is successfully placed, AG Access generates an ADIEVN_CALL2_CONNECTED event. The application is now speaking to the third party (second line destination).
    If the third party hangs up, AG Access generates an ADIEVN_CALL2_DISCONNECTED event, the port transitions back to the Connected state for the first line, and the application resumes speaking with the first party.
  2. The application can invoke adiReleaseSecondCall, which causes AG Access to deliver a flash hook to the line and generate an ADIEVN_CALL2_DISCONNECTED event.

    
    The port changes back to the Connected state for the first line.
    Note: Depending on the PBX or switch, this may result in a three-way conversation.
  3. The application can invoke adiReleaseCall, which causes AG Access to send an on-hook to the line interface. The ADIEVN_CALL_RELEASED event is generated and the port changes back to the Idle state. This completes the transfer.

3.8.2 Using Blind Transfer

adiTransferCall performs a blind transfer. A blind transfer initiates second call placement and then hangs up the line before second call placement is resolved. The application specifies one of the following conditions, on which it disconnects from the switch, as an argument to adiTransferCall:

Condition

Description

ADI_XFER_PROCEEDING

The second line's address is delivered to the switch and the transfer is completed as soon as the digit string is dialed.

ADI_XFER_ALERTING

The transfer is completed as soon as the ring tone received on the second line.

ADI_XFER_CONNECTED

The transfer is completed as soon as the second line has been answered.


To perform a blind transfer, the application invokes adiTransferCall.

AG Access obtains a second line and generates an ADIEVN_PLACING_CALL2 event. AG Access then delivers the second address to the PBX or switch.

Depending on which transfer condition was passed to adiTransferCall, one of the following actions takes place:

3.8.3 Call Transfer Parameters

For blind transfer, the condition on which to transfer a call is specified as an argument to adiTransferCall. Otherwise, call transfer operations use the same parameters as outbound call placement operations. These parameters are stored in the ADI_PLACECALL_PARMS and ADI_CALLPROG_PARMS structures.

Section 3.4.4 through Section 3.4.8 describe in detail how to use the parameters stored in the ADI_PLACECALL_PARMS and ADI_CALLPROG_PARMS structures. For more details about the parameters stored in these structures, see the AG Access Function Reference Manual.

Additional parameters that govern call transfer may be specific to the telephony protocol running on the given port. Refer to the documentation for the telephony protocol that your application is using for more detailed information. The telephony protocols that are included with AG Access are documented in the AG Access Function Reference Manual.

With the loop-start protocol, you can specify prefix dial strings for transfer and reconnect by modifying the connstring or xferstring parameters.

When in the Connected state, if an attempt is made to transfer a call, and transfer is enabled (ADI.LPS.XFERSUPPORT==1), the protocol dials the string specified by the xferstring parameter before dialing the called address that was passed to adiTransferCall or adiPlaceSecondCall.

If the dial fails, ADIEVN_CALL2_DISCONNECTED is sent up to the host, with reason ADI_DIS_DIAL_FAILURE (or ADI_DIS_NO_DIALTONE if dialtone was expected but not present). The protocol then returns to the Connected state. When returning to the Connected state, the second string specified by the connstring parameter is dialed.

3.8.4 Call Transfer Events

The call transfer events generated by AG Access are:

Call Transfer Event

Description

ADIEVN_PLACING_CALL2

After delivering the flashhook to the line and getting a recall dial tone, AG Access generates the placing second call event. The destination address for the third party is then delivered to the switch.

ADIEVN_CALL2_DISCONNECTED

If placement of the second call fails or if the third-party hangs up, the ADIEVN_CALL2_DISCONNECTED event is generated. The call returns to the connected state for the first call. This event is also generated when the application releases the second call via adiReleaseSecondCall.

ADIEVN_CALL2_CONNECTED

This event is generated if the second call is successfully established via adiPlaceSecondCall. The connection criteria and processing are identical to those when originating calls via adiPlaceCall.

ADIEVN_CALL_DISCONNECTED

The call disconnected event is generated when a blind transfer succeeds. It is also generated if the first line disconnects before AG Access generates the placing second call event. The call disconnected event disconnects the channel from both calls and the application must invoke adiReleaseCall.



(Page 9 of 12 in this chapter)


tech_support@nmss.com
Copyright © 1997, Natural MicroSystems, Inc. All rights reserved.