Configuring call transfer for PSTN T1 lines

This article explains how to set up call transfer for PSTN T1 lines configured for robbed bit protocols.

Issue Summary

On a default xMatters deployment, call transferring does not function over T-1 telephony technology. This is due to "hook flashes" being supported only for analog Dialogic cards, and "attended transfer" being supported only for SIP.

Resolution

xMatters supports attended transfer over PSTN of a source call to a target destination, provided you configure the proper protocol.

Note that during the attended transfer process, xMatters can interact with the target prior to establishing the connection, or fail-back to the source if the connection cannot be established. This allows you to set up call conferencing, and have xMatters broker the conference bridge.

Important:

Please note that for PSTN, call transfer works only for robbed bit protocols, such as pdk_us_ls_fxs_io. For more information about these protocols, see How to locate the correct GlobalCall Protocol for Phone Engines (Dialogic)

NOTE: Call transfer is not supported on ISDN.

To configure call transfer for PSTN:

  1. Stop the xMatters node and web server.
  2. Apply the current xMatters patch.
    • If you are configuring this feature on an xMatters 5.0.1 (or later) deployment, you can skip ahead to step 6; the relevant files are included with the base xMatters 5.0.1 install.
  3. Unzip the phone-runtime/alarmpoint_jacozoom_update.zip file included with the patch into a local directory; the zip file contains the following file structure:
|-IzmJniComAx.dll
|-izmjnicom.dll
 `-jacozoom-1.5
|-virtualphone-2.0/jar
|-izmcomtlb.jar
|-izmcomjni.jar
|-apextensions-1.0.jar
|-adxvoice-2.0.jar
|-adxtts-2.0.jar
 `-adxasr-2.0.jar
  1. On your deployment, create back up copies of the IzmJniComAx.dll and izmjnicom.dll files in theSystemDriver(C):/windows/system32 folder, and then replace the originals with the unzipped versions.
  2. Create a backup copy of the \node\lib\node-lib\jacozoom-1.5 folder, and then move the unzipped version of the jocozoom-1.5 directory to \node\lib\node-lib\.
  3. Open the \node\lib\node-lib\jacozoom-1.5\GlobalCall.tzp file, and add the following lines to ALL trunk channels (replace the "x" in "Devs[x]" with the actual channel number):
\Techs[R4GcTrunk]\Devs[x]\HoldAction=2
\Techs[R4GcTrunk]\Devs[x]\TransferBlindSupported=True
\Techs[R4GcTrunk]\Devs[x]\TransferSupervisedSupported=True
\Techs[R4GcTrunk]\Devs[x]\TransferConsultativeSupported=True
  1. In xMatters and the Dialogic card, select the proper protocol. (i.e., pdk_us_ls_fxs_io).
  2. Restart the node and web server.
  3. Using the Developer IDE, change the script to use attended transfer. The script is identical to the attended transfer used by SIP protocol but without any optional fields.

Further information

The following is a sample of a reformattted GlobalCall.tzp file for trunk channel 0 and channel 1:

\Techs[R4GcTrunk]\Devs[0]\Protocol=pdk_us_ls_fxs_io  
\Techs[R4GcTrunk]\Devs[0]\UseMakeCallBlock=False  
\Techs[R4GcTrunk]\Devs[0]\HoldAction=2  
\Techs[R4GcTrunk]\Devs[0]\TransferBlindSupported=True  
\Techs[R4GcTrunk]\Devs[0]\TransferSupervisedSupported=True  
\Techs[R4GcTrunk]\Devs[0]\TransferConsultativeSupported=True  
\Techs[R4GcTrunk]\Devs[1]\Protocol=pdk_us_ls_fxs_io  
\Techs[R4GcTrunk]\Devs[1]\UseMakeCallBlock=False  
\Techs[R4GcTrunk]\Devs[1]\HoldAction=2  
\Techs[R4GcTrunk]\Devs[1]\TransferBlindSupported=True  
\Techs[R4GcTrunk]\Devs[1]\TransferSupervisedSupported=True  
\Techs[R4GcTrunk]\Devs[1]\TransferConsultativeSupported=True  

For more information about scripting, refer to the xMatters Online Developer's Guide, specifically the startAttendedTransfer method on the @phone script object:

@phone::startAttendedTransfer(String phoneNumber)

Parameters:

(String) phoneNumber: the destination or target phone number

Returns:

(script object) @transferTarget

Example:

The following code sample illustrates using the startAttendedTransfer method to establish a connection with a conference call:

@transferTarget = @phone::startAttendedTransfer("9255551234")  
$transferConnected = @transferTarget::getConnectionStatus()  
IF ($transferConnected == "SUCCESS")  
 @transferTarget::playDtmf($event.conference_id)  
 wait(10)  
 @transferTarget::playDtmf($event.conference_password)  
 $result = @phone::endAttendedTransfer()  
 IF ($result == "SUCCESS")  
 exit  
 ELSE  
 @phone::play("phrase", "Sorry, could not reach the other party")  
 ENDIF  
ELSE  
 @phone::play("phrase", "Sorry, could not reach the other party")  
 # Go back and replay menu options other than transfer  
ENDIF  

xMatters Reference

DTN-2385, PRE-2578, JDN-1225

Originally created by Don Clark

Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.
Powered by Zendesk