I have the following requirement:
- Login to Call Manager
- Go to the tab User Management -> Application User
- Click on find to get the list of all available application users, and select the one you are using for AXL and CTI (JTAPI API) access
- My requirement is to move devices from "Available Devices" list to "Controlled Devices" using AXL API.
1. How do I get the list of available devices for a specific application user?
2. I have already found the API to update an user with controlled devices, using updateAppUser. But this will be only useful when I get the entire "Available Devices" list.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/10.5">
I'm not sure what you mean by "1. How do I get the list of available devices for a specific application user?" Does your organization have specific phones that are only supposed to be used by application users?
Otherwise, just do a listPhone to get a list of devices, and choose which ones you want to assign to the application user with
Thanks for responding.
What I mean by specific application user, is the user we use to make API calls to call manager.
Please refer to the attachment from CUCM portal on the question above.
Please clear what <associatedDevices> exactly means?
From the screenshot attached above, I am assuming associated devices are "controlled devices" for any application user.
You are correct 'associated devices' = 'controlled devices' in the UI
As mentioned, <listPhone> can be used to retrieve a list of devices either 'all' or by specifying search criteria. Note, as this can be a very large request if there are thousands of devices in the system, you may want to use the 'skip/first' elements to page the results to prevent long delays or request failures.
This is little confusing, but what is the use of device table then?
I want to understand the difference between listPhone and a result when device table is queried.
For example: If I do the following I get 207 rows returned.
<sql>select * from device</sql>
And when I use ListPhone, the number of rows returned are 142.
I am under assumption here that, "available devices" in UI are same as results returned from "device" table, which also include phone devices.
I want to make sure that, just adding the result of ListPhone API to the "Controlled Devices", I won't be missing any devices still in "Available Devices".
The device table includes every conceivable type of 'device', including some things that are not really 'phones' and should not be associated to users (e.g. gateway devices, trunks, route lists, various types of virtual profiles, etc.)
I'm actually not 100% sure what specific fields/values are included vs. excluded when considering the set of devices returned from a device table query vs. <listPhone>, however I would be pretty confident that <listPhone> will include all of the devices that make sense to associate to users.
Thanks for your response.
I did compare the two results (device table result vs. listPhone API result) and I believe listPhone had all the devices that are in devices table. But Device table has lot of junk that won't be required to add into Available Devices.
For some reason, ListPhone name was misleading, as it doesn't tell if hardware endpoints are also included under it.
BUT, there is an issue even if above is true, especially for organizations with 1000's of devices, which would cause an overhead from the programming perspective.
Whenever a new device is added and is available to be monitored by an application user, we have to do the following to move it to "Controlled Devices" list. (referring the UI screenshot above)
1. Perform GetAppUser call to find out all the associated devices for that application user.
2. Perform ListPhone call and get the list of all available devices.
3. Compare above 2 results and then do the updateAppUser call to add(?) the newly added devices for that application user.
OR do updateAppUser with entire result from ListPhone, which will end up in overwriting entire list of "Controlled Devices" for that user.
Please can anybody help me.
WHen I run the following code to update the associate devices field just to add an extra devices, it will delete all the devices and leave only one device. Can anyone help? I need to be able to come up with something, that I can update this field, without loosing the other devices. Does anyone know?