cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
539
Views
1
Helpful
1
Replies

Intercepting calls and re-writing callerid

telesteve
Level 1
Level 1

We have a series of devices that have private DNs.  When they make an outbound call to a particular destination, we want to intercept the call, lookup the appropriate callerid for that particular device (based on caller ip address, in our custom purpose-built datastore), add a callerid number (public DN), and push out the call.  It needs to be dynamic based on IP because the source IP addresses will change and in our environment we can infer other information about the call based on the subnet it's coming from.

If the end user gets a callback within x amount of time, we want the call to be routed back to that device.

I am comfortable with Java, but unfamiliar with JTAPI.  I'm hoping someone here can provide a bit of direction so that I can put together a proof-of-concept.

I looked into CURRI, but CURRI does not provide the caller ip address.  From looking at the discussions here, it seems like I might need a CTI Route Point, but the documentation seems a bit opaque on that topic and I haven't found any sample code.

1 Reply 1

pmnkumar
Level 1
Level 1

Cisco JTAPI provides all the API to do this. To get familiar with JTAPI, take a look at the JTAPI 1.2 specification on the web.

You want to go through JTAPI developer guide to understand how to create application user on CUCM, so that your custom application can connect to CUCM and control the call.  The sample apps (makecall, jtrace) are good starting points. The source code for these are available in your Cisco JTAPI install folder. (You need to down load Cisco JTAPI from CUCM and install on your dev machine)

1. You need to create a CTIRoute point on CUCM admin and include it in the 'control list' of the application user you will be using in your app. The DN of the CTI Route point could be the number you want to intercept or a pattern that does the same.

2. Register the CTIRoute point in your application and register a call back on CTIPort. registerRouteCallback(RouteCallback) in RouteAddress is the API you should be using.

3. When one of the users dials the number application will see a 'ROUTE' event and then based on the calling number, selectRoute(String[] routeSelected, int callingSearchSpace, String[] modifyingCallingNumber) API in CiscoRouteSession can be used to change the calling party number.

You can use CiscoJTAPITest for POC on CTI Route Point intercepts the call and routes it to.   CiscoJTAPITest should be available on devNet and there are couple of short videos on how to use it.

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: