Attended transfer using the VOIP_Call_Transfer custom server

The VoIP call transfer application is supplied in the VoIP installp image that you install using the System Management Interface Tool (SMIT). The application components, include some source code to help you customize the VoIP call transfer capability to your specific needs. For a straightforward use of the VoIP call transfer capability, no customizing should be required.

The components of the application are:

Before you install

Before you can install the VoIP call transfer application, you must have:

Importing the VOIP_Call_Transfer custom server

If you intend to use the VoIP call transfer application, you must import the VOIP_Call_Transfer custom server and associated state table:

  1. Starting Blueworx Voice Response:. Start Blueworx Voice Response and log in to the user account you use for Blueworx Voice Response administration.
  2. Importing the custom server and state tables: In the Blueworx Voice Response Welcome window, click ApplicationsApplicationImportReplaceFile. Select the file /usr/lpp/dirTalk/sw/VOIP/call_transfer/VOIP_Call_Transfer.imp. The system displays the VOIP_Call_Transfer application icon.
  3. Creating an application profile: Open the VOIP_Call_Transfer application. The system displays the Application (VOIP_Call_Transfer) window.
  4. Click ObjectNewApplication Profile. The system displays the Application Profiles window, followed by the Application Profile window.
  5. Type the name you want to allocate to the profile in the Name field.
  6. Click State Table, then select your application that performs a call transfer. Click OK.
  7. Click FileSave.
  8. Specify the phone number to be used as the Application Profile ID. Click OK.
  9. In the Application window, click View → Refresh. The system displays the Application Profiles folder, with the new Application Profile icon inside it.
  10. Starting the custom server: Open the Custom Server Manager window, and click WelcomeOperationsCustom Server Manager. The system displays the available custom servers in a window.
  11. To start the VOIP_Call_Transfer custom server click Run StatusStart. The Run Status button displays 'Waiting' after a short while.
  12. Running the Application: How you run the application will depend on your application.

Configuring the VOIP_Call_Transfer custom server

The VOIP_Call_Transfer custom server has some command line parameters that you can set to help you debug problems, or to fine-tune the operation of the custom server.

The parameters are defined in Table 1. For information on how to set the parameters, see Setting configuration options.

Table 1. Configuration options for the VOIP_Call_Transfer custom server

Parameter

Default setting

Description

-a

off

Send extra information alarms to the error log.

-d

off

Provide extra debugging information (in addition to the information that always gets sent).

-en

n=0

The event data (n) sent by the custom server if the third party hangs up (see CA_Report_Channel_Event() in the Blueworx Voice Response for AIX: Custom Servers information).

-in

n=0

The information field (n) sent by the custom server if the 3rd party hangs up (see CA_Report_Channel_Event() in the Blueworx Voice Response for AIX: Custom Servers information).

-s

off

Print debugging information to stdout, as well as to AIX system trace.

-z

off

This parameter is for test purposes only. It causes the custom server to enrol one of each type of error possible on custom server startup, then terminates. The enrolment of errors takes about 30s.

-Eentry_point

entry_point = begin

The name of the state table entry point to use in the outbound state table. This must be the same for all of the outbound state tables used in VoIP transfer operations.

-Lfile_name

file_name = null

Name of the log file to be used for logging debug information. If this is blank, no logging information will be sent.

-Ssttbl_name

sttbl_name = VOIP_SupA_Xfer

Name of the state table to use for attended transfers (that follow the Blueworx Voice Response signaling model for transfer operations).

Setting configuration options:

To set one or more of the configuration options, follow the procedure below:

  1. From the Welcome window, select Applications —> Custom Servers
  2. Setting a command line parameter for the custom server: Highlight the VOIP_Call_Transfer custom server.
  3. Click Server —> Open.

    The system displays the Custom Server (VOIP_Call_Transfer) window.

  4. Click File —> Properties.

    The system displays the Properties (VOIP_Call_Transfer) window.

  5. Type your command line parameters in the panel titles main() args.
  6. Click OK.

    The system closes the Properties (VOIP_Call_Transfer) window.

  7. In the Custom Server (VOIP_Call_Transfer) window, click File —> Save.
  8. Restarting the custom server: Open the Custom Server Manager window by clicking Welcome —> Operations —> Custom Server Manager.

    The system displays the available custom servers in a window.

  9. If the VOIP_Call_Transfer custom server Run Status is set to Waiting, stop the custom server by clicking Run Status —> Stop.

    The Run Status button should display None, after a short while.

  10. Start the VOIP_Call_Transfer custom server by clicking Run Status —> Start.

    After a short while the Run Status button should display Waiting. The new command line parameters are now in effect. If the Run Status remains at None, there is probably an error with one of the command line parameters. Check the error log for details.

Before using the VoIP call transfer application

Before you can use the VoIP call transfer application, you must have:
  • A connection to SIP telephones within a SIP network that support the REFER method with a REPLACES header.
  • An application that performs a transfer operation using a screened transfer with simple call-answer supervision.
  • Imported the custom server and state tables as described in Importing the VOIP_Call_Transfer custom server.

Example state table

Here is an example state table showing how to perform an attended transfer using the SIP VOIP_Call_Transfer custom server:
#
# ================================================= 	
# Description 	 	
DESCRIPTION("SIP Attended transfer using the VOIP_Call_Transfer custom
server. AIX Blueworx Voice Response"); 	 	
# The out bound call is answered in this state table 	
# using transfer with a CONSULT tag. 	
# ================================================= 	
# Prompt Directory 	 	
PROMPT_DIRECTORY(Welcome); 	 	
# 	
# ================================================= 	
# Entry Point(s) 	 	
ENTRY_POINT(begin,answer); 	 	
# 	
# ================================================= 	
# Variables 	
# 	
# ================================================= 	
# Actions 	 	
answer: "answer the phone" 	
	AnswerCall() 	
		edge EDGE_AC_NOT_RINGING:     hup 	
	; 	 	
	"play 'Welcome' segment" 	
		PlayPrompt("FALSE", Welcome) 	
			edge EDGE_PP_LINE_PROBLEM:     hup 	
			edge EDGE_PP_NOTHING_PLAYED:     hup 	
			edge EDGE_HUP:     hup 	
		; 	
#This section sets up the out bound call leg. 	
"CONSULT TAG" 	
		AssignData(SV541, "PUT_TAG", "CONSULT", "0")
		; 	 	
"TO_HDR - ray" 	
		AssignData(SV541, "PUT_TAG", "TO_HDR", "sip:ray@99.99.55.55:5060")
		; 	 	
		TransferCall("", "", 0, 0, 30)
			edge EDGE_TC_INVALID_PHONE_NO:     hup
			edge EDGE_TC_PHONE_BUSY:     hup
			edge EDGE_TC_NETWORK_BUSY:     hup
			edge EDGE_TC_NO_ANSWER:     hup
			edge EDGE_TC_OUTBOUND_LINE_PROBLEM:     hup
			edge EDGE_TC_UNEXPECTED_TONE:     hup
			edge EDGE_HUP:     hup 	
		; 	
# The original caller call can be consulted here. 	
# The outbound callee can be consulted from the 	
# SuperXferA state table. 	 	
good: "play 'Welcome' segment" 	
		PlayPrompt("FALSE", Welcome) 	
			edge EDGE_PP_LINE_PROBLEM:     hup
			edge EDGE_PP_NOTHING_PLAYED:     hup
			edge EDGE_HUP:     hup 	
		; 	 	
# The Transfer takes place when the transfer action 	
# is executed with a TRANSFER tag. 	 	
"TRANSFER TAG" 	
		AssignData(SV541, "PUT_TAG", "TRANSFER", "0")
		; 	 	
		TransferCall("", "", 0, 0, 30)
			edge EDGE_TC_SUCCESSFUL:     hup
			edge EDGE_HUP:     hup 	
		; 	 	
	hup: "terminate call"
		CloseEverything() 	
		;