Through Google I have searched that some SI companies can develop an application to lock the IP phone. The user needs to type the correct PIN before he/she can dial the number. Is there any API in JTAPI to do so? Or any API in AXL/SOAP?
Hmm.. the way you describe it, you're looking for business account codes rather than a locking mechanism.
Locking entails that the device must be unlocked before calls can be made... business account codes leave the device accessible for anyone.
So if you really are looking for device locking, you can build it with AXL.. you need a service to lock / unlock which queries the user's pin (there's an authenticate function in axl to check the pin.. you need CCM5 or higher though), then you'd change the css of the device (e.g. to a css that only allows for internal calls upon locking, and back to the normal css upon unlocking).
As for account codes.. I think that's in CCM but I'd check the admin guide or the feature and service guide as I've never had the need to use something like that. If it's not there, it certainly can be built as well but it would be cumbersome as you'd either need some kind of IVR along with CTI functionality, or you take away people's ability to dial directly and have them dial from a service.
Thanks for your reply!!
I am looking for device locking.
I know there is an authenticate function in AXL to check the PIN.
However, how could I restrict the user such that he/she must type the correct PIN before he/she can dial any number or use other services such as Directory, Message or Service button?
"Forced Authorization Codes" can solve only calling problem but
Andtek is doing more than this.
Actually I am looking for any way to implement the feature like Andtek!!
I am wondering if there is any API provided by Cisco?
Maybe you could use the AXL API to create the lockout function together with an IP Phone Service :
Create an IP Phone Service that asks for a PIN.
Via AXL you could query the CUCM about the device from which the IPPS has been invoked to which end user is associated with.
Then check the PIN against that end user.
If the PIN is correct, via AXL change the CSS of the line in order to "unlock" it.
Create another IPPS (or use the same, checking for the device's CSS) to lock the phone which simply do the same steps but put the device's line in the "locked" CSS.
Maybe not simple, but not impossible.
The andtek application also updates the phone itself, removing all services but itself by the sound of its description. Plus they clear the call log on the phone (no idea if they can restore it though.. I say no since there's no way to access that information externally and there's no way to redirect those 3 menu items to your own application).
Clearing the call history is as simple as sending the following url in a CiscoIpPhoneExecute: Init:CallHistory.
Using extension mobility also solves those three things and facilitates deployment as well. For deployment, provisioning and locking phones I'd suggest EM instead of working (modifying) on the phones directly.
In the Andtek application, there is a "lock" logo, does anybody know how to do it?
And Stephan, as you have mentioned extension mobility, do you think is there any difference between this Andtek application and extension mobility?
Well, extension mobility is an easy way to lock the phone since it takes any personal information away from the phone.. and if you configure it appropriately you can make the phone to only call the front desk and prevent the phone from being called from any other phone in logged out state. The only drawback i that users need to know not only their pin but also userid when logging back in.
And as far as the logo goes.. it's a PNG they're displaying using a CiscoIPPhoneStatusFile XML element. Look here for more details: http://www.cisco.com/en/US/docs/voice_ip_comm/cuipph/all_models/xsi/7_0/english/programming/guide/xsi70obj.html#wp1061000
They just push the CiscoIPPhoneStatusFile pointing to the lock image to the phone when you lock it, and clear the screen (or show another image.. I don't really know the product) again when you unlock the phone.
One can probably write an application that uses CiscoIPPhoneStatusFile along with JTAPI events to lock the phone. We can take a shot at it if there is enough interest in the market.
You want to log out idle people? I think you'd face a considerable user backlash over something like that.
But I guess it would be possible having a page that is called after the idle timeout and when called triggers some action like an em logout on the phone.
what i'm trying to do is..
I'd like my phone to be up and receive calls but I don't want anybody to be able to dial out without logging in...
i thought I could have an identical EM profile that I can login to dial out and log out when I am done...
It is possible to configure this scenario, having the device have the same dn of the device profile but in a different partition.
Calling Search Spaces should seek first for the "Logged in" partition and then the "Logged out" partition.
However to force users to login for each phone call and then log out could be too complicated IMHO.
Maybe using a good billing software could be a good solution to take phones' usage under control.
EM is a bit cumbersome. I'm not that proficient in CCM administration but a quick glance at the chapter on client matter codes and forced authorization codes makes me think that if you combine the two (have a client authorization code per user... acting sorta like the pin) and fac to make sure that chargeable calls can only be made if an appropriate cmc has been entered you could effectively get to a point where you can only dial out by entering a user specific code.
The alternative, to continue with the suggestion the poster before me made, could be to have an application to lock on demand.. where locking basically means changing the line's partition (entails a soft reset.. and I'm not sure how CCM6 handles with respect to that if you are using extension mobility)..
I personally wouldn't go for an auto locking system but instead have people lock/unlock automatically and perhaps push a CiscoIPPhoneStatus showing a lock icon when the phone is "locked".