How to catch ALL call events with JTAPI

Answered Question
Sep 3rd, 2008
User Badges:

Hi,


I have my JTAPI application witch is listening for ALL calls that are placed on CUCM system. Based on this information this software is making some routing decisions. At present getting the information about all calls is very inconvenient - I have to track all events from all phones, so my CTI user has to have ALL phones on its Controlled Devices List.

Is there more intelligent way of getting all call events without controlling every single device? I am interested in any version of CM or CUCM.


Regards,

--

Andrius Kislas

CCIE #18338 Voice


Correct Answer by stephan.steiner about 8 years 8 months ago

Well.. we use an application which checks phones every X minutes and identifies "virgin" phones and configures them automatically.. amongst other things changing the devicepool (and language if applicable) in function of the IP address, add certain services to the phones (e.g. extension mobility) and adds the phone to the controlled list of the cti user.


There's also another approach you could use: the cti super provider. Instead of just monitoring controlled phones you could use axl to load a list of phones (with whatever criteria you have for supervision) and using the super provider functionality add an observer to each phone you loaded via axl. all you need to know to monitor a phone is it's device name (SEP123...) and use the super provider. Look up the jtapi documentation.. it shows which provider method to use to get a reference to a phone that's not in the controlled list of your cti user.

  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 5 (1 ratings)
Loading.
stephan.steiner Wed, 09/03/2008 - 08:39
User Badges:
  • Silver, 250 points or more

You can filter device events.. but as far as call events go, either you get every event (for a monitored device) or none at all. Depending on which observer you implement, you could get a little less (e.g. CallObserver versus more specialized children of the CallObserver).


There's a way to only get device state events..(those are device events).. so you'd only know when a device changes state (e.g. goes from idle to ringing, and from ringing to active).. perhaps that's enough information for your routing decision and it will definitely cut down on the amount of events you have to process.

a.kislas Wed, 09/03/2008 - 22:32
User Badges:

Thank you for the reply. So it seems that if I have 5000 phones on the system, I have to attach observers to all 5000 phones, and so all 5000 phones should be on my Controlled Device List. I was hoping maybe there is some sort of one SYSTEM device that would send ALL call or terminal events for me.


Andrius


Correct Answer
stephan.steiner Wed, 09/03/2008 - 23:28
User Badges:
  • Silver, 250 points or more

Well.. we use an application which checks phones every X minutes and identifies "virgin" phones and configures them automatically.. amongst other things changing the devicepool (and language if applicable) in function of the IP address, add certain services to the phones (e.g. extension mobility) and adds the phone to the controlled list of the cti user.


There's also another approach you could use: the cti super provider. Instead of just monitoring controlled phones you could use axl to load a list of phones (with whatever criteria you have for supervision) and using the super provider functionality add an observer to each phone you loaded via axl. all you need to know to monitor a phone is it's device name (SEP123...) and use the super provider. Look up the jtapi documentation.. it shows which provider method to use to get a reference to a phone that's not in the controlled list of your cti user.

peter0601 Mon, 09/08/2008 - 08:01
User Badges:

Hi Andrius,


have you any issues with memory allocation at your system? I need to monitor 800 phones and my program struggles after a few hours because of memory problems.

I have the Java program running on a Linux VM with Ubuntu Server operating system and 1024 MB of allocated memory to the java heap.


I would appreciate any comment of you!

Thx in advance


Regards

Peter

a.kislas Tue, 09/09/2008 - 11:44
User Badges:

Hi Peter,


on production I have my software with much less number of phones. The one with big amount should be starting soon. Please contact me offline for further researches - andrius.kislas[--at--]elsis.lt.

Could you test your software only catching events and not doing anything else? Will it still has memory problems?


Andrius


sameer.abuasal Sat, 10/11/2008 - 02:29
User Badges:

Hi, thank you guys for this thread, it really helped me lot,


but i was wondering, is there a way to catch the digits dialed by the caller before the call is admitted by the CUCM , i need to catch the digits and drop the call depending on the call destination before it starts ringing in the called party.

i am using the ATAPI library(by JulMar http://www.julmar.com/tapi/) and when trying the GatherDigit function it throws an exception that this functionality is not available in my provider (UCM TSP)??


Thank you,



stephan.steiner Mon, 10/13/2008 - 00:48
User Badges:
  • Silver, 250 points or more

According to the documentation, lineMonitorTones should be available (though that's the 7.0 documentation I'm looking at) - going through a wrapper always add another place where things can go wrong. E.g. we're supposed to get device state events with the latest version but when I tried I still got nothing. If you can handle tapi browser you might want to try it and see if it works, and if so, get in touch with the developer of the lib (I did once... really nice and helpful guy).


Alternatively, there's no need to catch digits.. you may not even be able to terminate the call in the status you're looking at so you could just listen to call events and get the first one where the call actually starts (as in "all digits dialed") and terminate it then.. it probably won't make much of a difference either unless you want to prevent people from making certain calls and cut them off after a few digits.. but that is better done using partitions and css.. they are meant to prevent people from calling certain numbers and it would be ill advised to duplicate this functionality in your own software (which after all could fail every now and then.. or the app could lose the connection to the server, etc.)

sameer.abuasal Sat, 10/25/2008 - 06:02
User Badges:

i don't think the wrapper have some errors, i couldn't get any notifications when i used the TAPI browser 3 (but am not actually an expert in it), but i also tried the lineghaterdigits from the ATAPI library, i got no notification whatsoever,not even an exception that the service is not implemented.


Actions

This Discussion