Tuesday, August 26, 2014

Adding a PQ Attribute to a CCE Agent using UnifiedConfig API

Look up the SkillTargetID and ChangeStamp number of the agent either in the AWDB or in CCE Web Administration (you'll have to inspect the webpage or HTTP requests to see it).

You also need the ID of the PQ Attribute you wish to add to this agent.

In this example, my agent's SkillTargetID is 5164 and the desired PQ Attribute ID is 5018. I'm setting it to True. His current ChangeStamp is 3. Use base64-encoded authentication in the header, the same as my previous posts.

URI:
https://aw.my.domain.com/unifiedconfig/config/agent/5164?async=true

HTTP Method:
PUT

Data:
<agent>
 <agentAttributes>
  <agentAttribute>
   <attribute>
     <refURL>/unifiedconfig/config/attribute/5018</refURL>
   </attribute>
   <attributeValue>true</attributeValue>
  </agentAttribute>
 </agentAttributes>
<changeStamp>3</changeStamp>
</agent>

Monday, August 25, 2014

Create a Precision Queue in CCE using Unified Config API

In this example, we create a Precision Queue in Contact Center Enterprise using the Unified Config API that runs on the Administration Workstation system in your CCE deployment.

Use HTTP POST to this URI:
https://aw.my.domain.com/unifiedconfig/config/precisionqueue?async=true

Set the Content Type to:
application/xml

And add this header:
Authorization

with the value:
Basic YWRtaW5pc3RyYXRvckBteS5kb21haW4uY29tOnNlY3JldHBhc3N3b3Jk

That is, "Basic", followed by a space, followed by your base64-encoded admin credentials.

Now, set the content to the following to create a 1-step PQ that requires agents have a proficiency greater than or equal to 7 of PQ Attribute 5005 AND that PQ Attribute 5013 is true:
<precisionQueue>
 <department/>
 <name>MyPrecisionQueue</name>
 <description>This is a 1-step Precision Queue</description>
 <serviceLevelType>1</serviceLevelType>
 <serviceLevelThreshold>30</serviceLevelThreshold>
 <agentOrdering>1</agentOrdering>
 <bucketInterval/>
 <steps>
  <step>
   <terms>
    <term>
     <termRelation>0</termRelation>
     <attribute>
      <refURL>/unifiedconfig/config/attribute/5005</refURL>
     </attribute>
     <attributeRelation>6</attributeRelation>
     <value1>7</value1>
     <parenCount>1</parenCount>
    </term>
    <term>
     <termRelation>1</termRelation>
     <attribute>
      <refURL>/unifiedconfig/config/attribute/5013</refURL>
     </attribute>
     <attributeRelation>1</attributeRelation>
     <value1>true</value1>
     <parenCount>-1</parenCount>
    </term>
   </terms>
   <considerIf/>
  </step>
 </steps>
 <callOrdering>1</callOrdering>
</precisionQueue>

I'm using UCCE 10.5 for this, so I don't have departments, but you would in Packaged CCE 10.0 or 10.5.

<serviceLevelType> Values:
1 = Ignore Abandoned Calls
2 = Abandoned Calls have Negative Impact
3 = Abandoned Calls have Positive Impact

<agentOrdering> Values:
1 = Longest Available Agent
2 = Most Skilled Agent
3 = Least Skilled Agent

<termRelation> Values:
0 = OR (also used for the first term)
1 = AND

<attributeRelation> Values:
1:  ==
2:  !=
3:  <
4:  <=
5:  >
6:  >=

Create a CCE PQ Attribute using Unified Config API

In Cisco's Contact Center Enterprise, configuration of Precision Queus is done solely through the CCE Web Administration interface (as opposed to the Configuration Manager win32 application on the AW). This includes creating Attributes, Precision Queues, and assigning attributes to agents.

This web interface is driven by the Unified Config API, which you can see by inspecting the POST and GET requests your browser makes to the web interface. I used Firebug in Firefox, then Poster to test the API. Below is an example of how to create one of each type of PQ Attribute.

Encode your admin user credentials in base64, formatted like this:
administrator@my.domain.com:secretpassword

It will look like this:
YWRtaW5pc3RyYXRvckBteS5kb21haW4uY29tOnNlY3JldHBhc3N3b3Jk

Use HTTP POST to this URI:
https://aw.my.domain.com/unifiedconfig/config/attribute?async=true

Set the Content Type to:
application/xml

And add this header:
Authorization

with the value:
Basic YWRtaW5pc3RyYXRvckBteS5kb21haW4uY29tOnNlY3JldHBhc3N3b3Jk

That is, "Basic", followed by a space, followed by your base64-encoded admin credentials.

Now, set the content to the following for a Boolean PQ Attribute type that is default true:
<attribute>
<department/>
<name>MyBooleanAttribute</name>
<description>This is a Boolean Attribute</description>

<dataType>3</dataType>
<defaultValue>true</defaultValue>
</attribute>

Or use this for a Proficiency PQ Attribute type that defaults to 5 (out of 10):
<attribute>
<department/>
<name>MyProficiencyAttribute</name>
<description>This is a Proficiency Attribute</description>

<dataType>4</dataType>
<defaultValue>5</defaultValue>
</attribute>

I'm using UCCE 10.5 for this, so I don't have departments, but you would in Packaged CCE 10.0 or 10.5.

Update: I maxxed out the queue using curl and awk to insert a bunch of PQ Attributes from a text file list. It looks like it processed about 60 or 70 before it stopped accepting new requests. Here is the error message I received:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<apiErrors>
    <apiError>
        <errorMessage>Request processing queue is at capacity.</errorMessage>
        <errorType>asyncQueueLimit.maxQueueSize</errorType>
    </apiError>
</apiErrors>

Bad Request 400: finesseLayout property value should not contain children

Referring to the Cisco Finesse API, at /finesse/api/Team/5000/LayoutConfig
If you receive a Bad Request 400 response to a PUT request on this API (i.e. you're trying to update the layout XML for a Team in Finesse), and the error message contains this line:
Exception converting class com.cisco.ccbu.finesse.api.team.TeamLayoutConfig : Property value should not contain children on type:com.cisco.ccbu.finesse.api.team.TeamLayoutConfig child: finesseLayout
It means you need to encode the < and > characters using &lt; and &gt; for everything inside the <layoutxml> tag.

On a related note, if you receive an HTTP 415 Unsupported Media Type error response, make sure you're setting your content type to 'application/xml' and not 'text/xml'. Or anything else.

Tuesday, August 5, 2014

vSphere web client console not working - no http response

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2060604

Monday, August 4, 2014

Show nonpresent devices in Windows device manager

Reveal the hidden network adapters in Windows. I'm using this in Windows Server 2008 R2.
Run these commands from the command prompt with administrator privileges:

set devmgr_show_nonpresent_devices=1
start devmgmt.msc

Now click View from the File menu and then check 'Show hidden devices'. 

This will only work for this session of the device manager, because we started it from the command prompt with the devmgr_show_nonpresent_devices environment variable set. If you wanted this to be a permanent change, you could add it to the environment variables in system properties.