Native
Synchronous
No Custom Parameters
The Query action is used for querying the device information cache located on the Cisco Unified Application Server, in order to retrieve information on one or more devices.
Query performs a search with the specified device attributes and returns the results in a System.Data.DataTable variable. A common practice is to pass this variable into a CustomCode block for parsing the data within it.
Every action parameter specified in this action is used to further refine the actual query on the underlying Cisco Unified Application Server database using AND logic.
The resulting DataTable is an object comprised of rows and columns, with the number of resulting rows corresponding to the number of devices matched by the query. The name of the colums correspond to device attributes retrieved from the device cache database. The following list is the name of the columns comprising each row in the DataTable, which one would use when using C# to parse out the results from the table:
The name of the device, such as SEPXXXXXXXXXXXX. This should not ever be null.
The IP address of the device. This will be "" if undefined.
The description of the device. This will be "" if undefined.
The Calling Search Space of the device. This will be "" if undefined.
The Device Pool of the device. This will be "Unknown" if undefined.
The Status of the device. This will be "0" if undefined.
The type of the device. This will be "1" if undefined.
The IP address of the publisher node of the cluster that the device is registered to. This should not ever be null.
DataTable returned by a successful query with a device name specified of a valid phone in a CustomCode block:
Example 9.1. Retrieving the IP address of a Found Device
public static string Execute(DataTable resultsFromQuery, ref string phoneIp)
{
if(resultsFromQuery != null && resultsFromQuery.Rows.Count == 1)
{
phoneIp = resultsFromQuery.Rows[0]["IP"] as string;
}
else
{
// if 0 or more than one device matches the device name in the query, then we have an error condition
// This should of course be dealt with, specific to this application.
}
string result = null;
if(phoneIp != null && phoneIp != String.Empty)
{
result = "success";
}
else
{
result = "failure";
}
return result;
}
Only Registered and FoundAndUnregistered devices can be returned for Cisco Unified Communications Manager 5.x and 6.x, so for best-case compatibility, you should assume this behavior in your application.
Even though devices are uniquely keyed by DeviceName within a single Cisco Unified Communications Manager cluster, it is possible that multiple devices can be returned for a given device name. This scenario occurs when the Cisco Unified Application Server is polling multiple clusters and the device is configured in two or more of those clusters. You can use the Status parameter to only search for devices that are currently registered or/and specify the publisher IP address in the CallManagerIP action parameter to help isolate the query.
The DeviceListX provider polls every 2 hours (configurable). This means that the local Cisco Unified Application Environment device cache can be out of date with current phone information. If testing and developing with a phone that has just come online, manually invoke a refresh of the database by navigating to mceadmin > Providers > Cisco DeviceListX Provider > Invoke Extension to re-synchronous the cache.
| Parameter Name | .NET Type | Default | Description |
|---|---|---|---|
| Type | Metreos.Interfaces.ICiscoDeviceList+DeviceTypes | The Type action parameter can be used to restrict the query to only devices of a particular type. Valid values are as follows:
| |
| Name | System.String | The Name action parameter can be used to restrict the query to devices matching the specified name. | |
| Description | System.String | The Description action parameter can be used to restrict the query to devices matching the specified description. | |
| SearchSpace | System.String | The SearchSpace action parameter can be used to restrict the query to devices with a configured CallingSearchSpace matching the specified value. | |
| Pool | System.String | The Pool action parameter can be used to restrict the query to devices with a configured Device Pool matching the specified value. | |
| IP | System.String | The IP action parameter can be used to restrict the query to devices matching the specified IP address. | |
| Status | Metreos.Interfaces.ICiscoDeviceList+StatusCodes | Registered | The Status action parameter can used to restrict the query to devices matching the specified status value. Note that in Cisco Unified Communications Manager 5.x/6.x, only Registered and FoundAndUnregistered devices are returned so this field has less value for those versions since NotFound is not supported.
|
| CallManagerIP | System.String | The CallManagerIP action parameter can be used to restrict the query to devices matching the specified Cisco Unified Communications Manager publisher IP address. |
| Parameter Name | .NET Type | Description |
|---|---|---|
| ResultData | System.Data.DataTable | A .NET System.Data.DataTable that contains rows and columns corresponding to the devices and attributes returned for the query. |
| ResultCount | System.Int32 | The number of devices returned in the query. |
Branch Conditions
No description.
No description.