01-10-2018 09:51 PM
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.
01-15-2018 06:04 PM
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.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide