Showing posts with label Cisco. Show all posts
Showing posts with label Cisco. Show all posts

Wednesday, December 3, 2014

CVP Call Studio 10.5 - RDP user workspaces

If you have CVP Call Studio on a Remote Desktop server where different users need to log in and have their own Call Studio workspaces, you can edit the C:\Cisco\CallStudio\startStudio.cmd file (just right-click > edit the desktop icon for Call Studio) to start Call Studio with a workspace in the user's folder:

start eclipse\eclipse.exe -data "%userprofile%\workspace" -vm eclipse\jre\bin\javaw.exe

CVP Call Studio 10.5 - Call Studio plugins not loading

I found out through trial and error that CVP Call Studio 10.5 must be installed with Windows UAC turned off. If you don't (at least, on Windows Server 2008 R2), Call Studio will open and only show the standard Eclipse features with no Call Studio projects or views available. This is due to it not loading the Audium plugins. The activation window will also not pop up at startup during the 30-day trial license that it comes with. Only uninstalling and reinstalling with UAC off will fix this issue.

Wednesday, September 10, 2014

Where is my T1/E1 card?!?!

In Cisco IOS, you have to use the "card type" command first, before "interface controller" will even show up as a valid command.

I'm using a UC520 box with a built-in T1/E1 port that is labelled "0/3" on the exterior of the physical device, so this was the command that worked for me:
card type t1 0 3
You'll then need to follow up with something like this:
isdn switch-type primary-5ess
!
network-clock-participate wic 3
!
controller t1 0/3/0
 framing esf
 linecode b8zs
 clock source line
 pri-group timeslots 1-24
!

Reference: http://www.cisco.com/c/en/us/td/docs/routers/access/interfaces/software/feature/guide/vd-t1e1_vwic3.html

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.

Wednesday, May 8, 2013

Cisco IOS break sequence on Mac OS X using USB to serial adapter

I'm using a USB-to-serial adapter with a Prolific 2303 chipset on my Mac with Mountain Lion to reset a Cisco router.

open source Prolific 2303 USB driver
OEM Prolific 2303 USB driver

After you install either of the drivers on your Mac, it will show up as a device in '/dev/'. Search for it:
ls /dev/tty.*

Mine was '/dev/tty.usbserial'. Connect to that device using 'screen' with 9600 serial port speed:
screen /dev/tty.usbserial 9600

Your terminal should now be connected to the serial port.

Boot your Cisco router into ROMMON by power cycling it and then entering the break sequence before it starts to boot IOS - this is usually within the first 20 or 30 seconds of booting. Some newer Cisco routers don't display anything to the serial console until after this time window. So, enter the break sequence after you turn your router on and before IOS loads. Press it multiple times as soon as power is applied to the router to try to catch it at the right time. There are two good methods:

1. For the 'screen' program that comes with OS X: CTRL-A, CTRL-B
That is, CTRL-a followed by CTRL-b. Shift is not required. CTRL-A breaks the keyboard control out of what screen is showing you, allowing you to then enter a keyboard command that screen will process instead of sending it to your serial connection. CTRL-B is a screen command to send the serial break sequence to your serial connection.

2. Reconnect screen with a serial port speed of 1200, power on the router, then press and hold the space bar for 20-30 second (or up to a minute to be safe). screen's output will not be normal while connected at this speed, and this is normal. Reconnect screen with the correct speed (the default is 9600) and press enter - you should be looking at a Rommon 2> prompt.

If you made it into ROMMON, you can change the way that the router boots up with the 'confreg' command. Run it without arguments to get a question-answer style menu you can step through, or if you just want it to boot without reading the config file (factory reset):
confreg 2142

Power cycle the router again and you should be looking at the factory IOS bootup. When you get to the prompt, use 'enable', then 'configure terminal', then 'config-register 0x2102'. This will make the router boot normally, using the config file. You will need to 'write memory' if you want the new factory default config you have to be there when you reboot.

Terminal to Serial/USB Devices From a Mac
Cisco's Break Sequence List
Send break sequence on a Cisco reverse terminal server

Tuesday, April 2, 2013

Windows Domain Controller with Cisco Router DNS

You can install a Windows domain controller without DNS if you have another DNS server, such as a Cisco router with an IOS image that supports the `ip dns primary` configuration command.
Windows domain clients will need SRV records in the DNS in order to authenticate and join the domain. Here is an example of the DNS records you will need for a Windows 2008 R2 server to join a domain (the domain controller is also Win2008R2):
ip host ns.example.com 10.88.33.4  
ip host example.com ns ns.example.com  
ip host dc1.example.com 10.88.33.2  
ip host _ldap._tcp.example.com srv 0 0 389 dc1.example.com  
ip host _ldap._tcp.dc._msdcs.example.com srv 0 0 88 dc1.example.com 
ip host _kdc._tcp.example.com srv 0 0 88 dc1.example.com  
ip host WIN-IRQG06G53P6.example.com 10.88.33.2  
!  
interface GigabitEthernet0/0
 description WAN
 ip address 10.89.28.33 255.255.255.0
 ip nat outside
 ip dns view-group default
interface GigabitEthernet0/1
 description LAN
 ip address 10.88.33.4 255.255.255.0
 ip nat outside
 ip dns view-group default
!
ip dns view default
 logging
 domain name example.com
 domain name-server 10.88.33.4
 dns forwarder 8.8.8.8
 dns forwarder 8.8.4.4
 dns forwarding source-interface GigabitEthernet0/1
ip dns view-list default
 view default 5
!
ip dns server  
ip dns primary example.com soa ns.example.com admin@example.com 21600 900 7776000 86400
!

The line 'ip host WIN-IRQG06G53P6.example.com 10.88.33.2' is there to show that even though I set the dc1's hostname to "dc1" in Windows, this domain controller still responds to domain join requests using this name (and the client could not join the domain until this entry was here). If you have issues finding this, debug DNS on the Cisco router like this:
debug ip dns name-list
debug ip dns view
debug ip dns view-list
terminal monitor

Sunday, March 24, 2013

Resetting a Cisco IOS device

When you need to reset a Cisco IOS device password/configuration, you need it to boot with the config register set to boot without loading the saved configuration. This register is stored in non-volatile memory. You can set this register in ROMMON or in Enable-privilege config mode in IOS.

Normal boot, read config file: 0x2102
boot without reading config file: 0x2142

ROMMON command to set config register to boot without reading the config file:
rommon 1 > confreg 0x2142

IOS command to set config register to boot normally, reading the config file at bootup:
router# conf t
router(config)# config-register 0x2102

Sunday, March 3, 2013

Handy IOS bits

Dynamic DNS: http://nerdy-notes.blogspot.com/2010/07/dyndns-on-cisco-ios.html
Break sequences (case-sensitive!): Ctrl-^, Ctrl-^ then x, Ctrl-], Ctrl-R, Ctrl-C, Ctrl-c
Escape sequence for literal '?': Ctrl-V