« Back to Cisco JTAPI Questions

Application User - Device Control

Combination View Flat View Tree View
Threads [ Previous | Next ]
 
I am sure this has been addressed before, but for some reason I am running into some problems.
 
I have created an Application User with ALL the necessary privelages :
 
Standard CTI Enabled
Standard CTI Allow Control All Devices
...and many others.
 
But when I try to take control of one of the device which is NOT in the "Controlled Device" list, I get this exception:
 
com.cisco.jtapi.InvalidArgumentExceptionImpl: Address XXXXXX is not in provider's domain.
 
When I manually add that Device to the "Controlled Device" list, it works. In this case I am using the Provider object to get the Address and Terminal objects for this DN
 
On the other hand, if I create the Terminal using the following, I don't need to add the device manually in the list and I don't get that error.
 
providerCapabilities.getClass().getMethod("canObserverAnyTerminall")
 
I thought obtaining the Terminal object from the Provider would be the same (attribute and functionality wise) as creating one myself.  I don't want to create the Terminal object within the code and just obtain it from Provider.
 
What am I missing here ?
 
Thanks!
Arvind
 
 

Should make it more clearer.
 
I get the list of Terminals for the DN from Provider.getAddress(DN).getTerminals().
 
I expected the SEP address in the list of Terminals returned.
 
I don't see that SEP address if don't add it in the "Controlled Device" list manually.
 
 
I am sure this has been addressed before, but for some reason I am running into some problems.
 
I have created an Application User with ALL the necessary privelages :
 
Standard CTI Enabled
Standard CTI Allow Control All Devices
...and many others.
 
But when I try to take control of one of the device which is NOT in the "Controlled Device" list, I get this exception:
 
com.cisco.jtapi.InvalidArgumentExceptionImpl: Address XXXXXX is not in provider's domain.
 
When I manually add that Device to the "Controlled Device" list, it works. In this case I am using the Provider object to get the Address and Terminal objects for this DN
 
On the other hand, if I create the Terminal using the following, I don't need to add the device manually in the list and I don't get that error.
 
providerCapabilities.getClass().getMethod("canObserverAnyTerminall")
 
I thought obtaining the Terminal object from the Provider would be the same (attribute and functionality wise) as creating one myself.  I don't want to create the Terminal object within the code and just obtain it from Provider.
 
What am I missing here ?
 
Thanks!
Arvind
 
 

Hi Arvind,
 
There are two ways in which application can control a device:
 
1. Control device which is added to the control list. This device can be obtained using provider.getTerminals() API. or provider.getAddresses() and then invoking Address.getTerminals() API on the retrieved address.
2. Alternatively, application can associated "Standard CTI Allow control of all devices", when it does that then application has priveleges to control any device without adding it explicitly to the control list. However, such application needs to dynamically control device. This can be done by such applications by invoking provider.createTerminal() API by passing device name to it (eg. SEPXXXXXXXXXX). Once application invokes provider.CreateTerminal() API, that device is dynamically given control of that device even if it is not in its control list. Such device would then be returned by APIs in #1 (eg. provider.getTerminals())
 
Regards,
Abhishek

That explains it !
 
I misunderstood the meaning of "Standard CTI Allow Control of All devices".  Didn't realize that for that to play in, I need to create the terminal from the Provider and then use it.
 
Makes it clear now.
 
Thanks very much for such a prompt reply and help !
 
Thanks!
Arvind
 
 
Hi Arvind,
 
There are two ways in which application can control a device:
 
1. Control device which is added to the control list. This device can be obtained using provider.getTerminals() API. or provider.getAddresses() and then invoking Address.getTerminals() API on the retrieved address.
2. Alternatively, application can associated "Standard CTI Allow control of all devices", when it does that then application has priveleges to control any device without adding it explicitly to the control list. However, such application needs to dynamically control device. This can be done by such applications by invoking provider.createTerminal() API by passing device name to it (eg. SEPXXXXXXXXXX). Once application invokes provider.CreateTerminal() API, that device is dynamically given control of that device even if it is not in its control list. Such device would then be returned by APIs in #1 (eg. provider.getTerminals())
 
Regards,
Abhishek