CTI
From Taridium
This optional ipbx module is installed under Advanced Setup → Modules. Registered modules are displayed with registered module. The CTI module has been made available in ipbx 2.1 and higher versions.
ipbx's CTI module provides a standardized way to interact with incoming calls using external applications. Applications include web driven pop-up windows and call manipulation.
CTI integration is available in two places
- as CTI control, where calls coming into certain applications will cause interaction with external web enabled applications.
- as a means to pop-up an application page in the ipbx End User Panel.
Contents |
CTI Configuration
The CTI configuration can be accessed Advanced Setup → CTI. Basic CTI configuration allows you to specify an URL which will be loaded into the End User Panel CTI window as soon as a call is routed to a user.
Example URL
http://192.168.77.123/crm_app/?calleridnumber=%%calleridnumber%%&calleridname=%%calleridname%%
CTI User Panel
To open the CTI window in the User Panel, click on Features and the launch button:
CTI Control
The CTI control option is available in the IVR, Groups and Queues applications. The CTI control options can be accessed in each of the application editors by clicking on CTI Control → configure options. In it's simplest form the CTI control allows you to signal that a call was routed to an application, usually passing along some identifying information such as the caller ID.
Example URL
http://192.168.77.123/myctitest.html?calleridnumber=%%calleridnumber%%&calleridname=%%calleridname%%
In the above situation an incoming call would cause the URL to be called and the variables %%calleridnumber%% and %%calleridname%% to be replaced with the actual information.
For a complete list of variables refer to CTI URL variables.
CTI XML Format
When a CTI URL is called by ipbx it is parsed for a valid XML reply. This XML reply may contain instructions on how to handle the call BEFORE it is handled by the application. The XML code could for example instruct ipbx to route a call to a different application, based on the caller ID or other information, or it can update the caller ID fields or account code.
Example Code 1
This example changes the caller ID name field based on data stored in an external application, sets the correct account code and enables call recording.
<?xml version="1.0" encoding="UTF-8" ?> <ipbx> <cti> <call> <set> <calleridname>ACME Inc OVRDUE</calleridname> <accountcode>knownaccount</accountcode> <record>1</record> </set> </call> </cti> </ipbx>
The <set> tag can contain any of the following sub-tags:
- <calleridname></calleridname> sets the caller ID name for the call
- <calleridnumber></calleridnumber> sets the caller ID number for the call
- <calleridani></calleridani> sets the ANI for the call
- <accountcode></accountcode> sets the accountcode for the call
- <userfield></userfield> sets the userfield for the call
- <acc_code1></acc_code1> sets an additional account code in the accounting table
- <acc_code2></acc_code2> sets an additional account code in the accounting table
- <acc_code3></acc_code3> sets an additional account code in the accounting table
- <record></record> 0,1 whether to record the call
Example Code 2
This example re-routes the call to another extension. This could for example be an overflow call answering service or any other application within ipbx.
<?xml version="1.0" encoding="UTF-8" ?> <ipbx> <cti> <call> <route> <type>extension</type> <name>18005554444</name> </route> </call> </cti> </ipbx>
The <type> tag can contain any of the following keywords:
- extension
- ivr
- conf
- queue
- channel
- directory
- group
- mailbox
- user
The <name> tag must contain a valid application/function name.
CTI URL Variables
The following variables can be used in any of the CTI URLs and will be replaced with the according values. Some values might not be available in certain situations.
- %%calleridnumber%% or %%calleridnum%% The caller ID number, if available
- %%calleridname%% The caller ID name, if available
- %%calleridani%% The caller ID ANI, if available
- %%accountcode%% The call account code
- %%uniqueid%% The unique ID of the call as stored in the CDR records
- %%channel%% The channel, if available
- %%exten%% The called extension