cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
20497
Views
29
Helpful
65
Replies

Ask the Expert: Deployment and Troubleshooting Cisco Unified Contact Center Express (UCCX) Deployments

ciscomoderator
Community Manager
Community Manager

With Anirudh Ramachandran  and Abhiram Kramadhati 

Deployment and Troubleshooting Cisco Unified Contact Center Express UCCX Deployments with Anirudh Ramachandran and Abhiram KramadhatiDeployment and Troubleshooting Cisco Unified Contact Center Express UCCX Deployments with Anirudh Ramachandran and Abhiram Kramadhati

Welcome to the Cisco Support Community Ask the Expert conversation. This is an opportunity to learn and ask questions about the latest advancements in Cisco UCCX (such as the integration of Cisco Social Miner to provide agent chat and better reporting using the Cisco Unified Intelligence Center), as well as the existing features of Historical Reporting, custom reporting using the historical database, Agent Email services, JTAPI integration with CUCM, and the HA over WAN cluster mechanism.

Anirudh Ramachandran is a customer support engineer at the Cisco Backbone Technical Assistance Center in Bangalore, India. Working in the Asia-Pacific time zone for the last two years, he focuses on Cisco Unified Contact Center Express issues and specializes in Linux, JTAPI/CTI integration, and UCCX system and database issues. He holds the CCNP Voice and UCCX Specialist certifications, and is also a Red Hat Certified Engineer. Anirudh writes tools and automates bug workarounds for UCCX in addition to working on TAC service requests, and currently has authored and co-authored seven such tools. Anirudh graduated from the National Institute of Technology Karnataka with a Bachelor of Technology in Computer Engineering.

Abhiram Kramadhati is an engineer with the Contact Center Backbone team in the Asia Pacific timezone. He has been working with UCCX since he started with Cisco 2 years ago. During his time at Cisco, he has built his expertise around UCCX Telephony applications, JTAPI integration, UCCX system behaviour, LDAP components and also UCCX as IPIVR in UCCE environments. He also works on other technologies including Unified Communications Manager and UCCE. He has been involved in many technical escalations in the region. Abhiram is a Telecommunications engineer from Bangalore, India.

Remember to use the rating system to let Anirudh and Abhiram know if you have received an adequate response. 

They might not be able to answer each question due to the volume expected during this event. Remember that you can continue the conversation on the Collaboration, Voice and Video Contact Center subcommunity discussion forum shortly after the event. This event lasts through May 3, 2013. Visit this forum often to view responses to your questions and the questions of other Cisco Support Community members.

65 Replies 65

Anas Abueideh
Level 9
Level 9

Dear Experts,

I have other questions about the voice, email and chat agents ?

for the chat agents, do we need a social miner server to enable this feature, is it mandatory ?

for the chat, do we have a chat CSQ ?

can the user be a voice,email and chat agent at the same time ?

for the licensing part, how the UCCX the licensing ports for email and chat, since the licenses are counted on agents and IVR ports?

We have UCCX 9 with premium license

thanks in advance

Anas

Hi Anas,

Need for SocialMiner

Chat is twofold in UCCX:

  • The Chat CSQ, routing, and queuing is taken care by UCCX (Route & Queue Subsystem + Chat Subsystem) in a manner analogous to Telephony (Unified CM Telephony Subsystem + RmCm Subsystem).
  • The chat widget and the XMPP functionality (the back-end, so to say) is provided by SocialMiner.

Hence, SocialMiner is necessary to use the web chat feature.

Chat CSQ

You will find a separate menu in Appadmin > Subsystems called "Chat", where you will see the Chat CSQ configuration, etc. This is separate from the RmCm CSQ.

Multiple roles for agents

An agent can easily take up all 3 roles: chat, email, voice. S/he just needs the right resource skill / resource group configuration.

Chat, email, voice, and licensing

UCCX has separate email seats and agent seats. 1 of each gets checked out upon each login:

admin:show uccx cad license usage
License Report for seat:
        400 of 400 available.
        Lessees:
License Report for email seat:
        200 of 200 available.
        Lessees:

...

Chat is available only on the Premium feature package. You can have any number of agents logged in to Chat Agent Desktop; the limitation is on the number of concurrent sessions.

UCCX supports a maximum of 25 or 50 concurrent chat sessions. The number is dependent on your hardware; check page 142, table 43 of the SRND. However, if your agent seat count is less than 25 or 50, that is your limit.

Examples:

  • If your agent seat count is 100, and your hardware is in the server class 1, 2, or 3: you can have 25 chat sessions. For server classes 4 and 5, you can have 50 chat sessions.
  • If your agent seat count is 10, you can have 10 chat sessions, regardless of the server class.

Aside from the table in the SRND, this seems to have fallen through in the documentation. We have filed doc bug CSCug63683 to get this fixed.

Thanks & Regards,
Anirudh
"Protocol, then product"

Thanks & Regards, Anirudh "Protocol, then product"

Thanks for your reply

Anas

Anthony Holloway
Cisco Employee
Cisco Employee

You guys are too good!  I'll throw another one your way...

This one has to do with the Scritp Editor and a step dissapearing.

Here is a video summarizing the issue: 

http://www.youtube.com/watch?v=-gDnacQnwG8

Details:

If you wanted to use the Java ternary operator in a Set step, and reference the variable you are setting in the ternary operation, you cannot, because the set step simply dissapears from the script.

A ternary operator is one that looks like this:

Set account_number = (! account_number.beginsWith("0000")) ? "0000" + account_number : account_number

That is doing the same thing as this:

If (! account_number.beginsWith("0000"))

  True

    Set account_number = "0000" + account_number

  False

    /* Do nothing */

However, instead of taking up five lines in the script, three steps, and two at execution, it's one line of script, step, and exeuction.

The problem is, since I am referencing account_number in the value section a defect in the editor deletes the step all together and I am left with nothing.

Let me know if this is not clear enough, or if you need me to help you to recreate the problem in a newer version.

Thanks again, and I look forward to your reply.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.

Adding to Anthony,

I too had faced a similar issue like that but then did a turn around for the same and got the code working so a solution to this will help me too.

Ok coming to my issue,

I had a requirement to interact to web services with one of my project and i obviously used the latest version of Axis 2.1.6.2 but strangely the piece of code did not work and whenever the call came to that piece of code where i was invoking the Webservice i got an exception saying

"org.apache.axiom.om.OMFactory.createElement - java.lang.NoSuchMethodError"

Strangely i was using UCCX 9.0 and i even tried the same with Axis 2.1.6.1 and its not working i am getting the same exception. but both the versions of Axis are working fine with UCCX 8.5

I had posted this on the forums and got a response saying its a known bug with UCCX 9.0 as it uses a similar version of Axis jar and hence there is a conflict below is the link to the Post as well which also contains the exact error along with the details.

http://developer.cisco.com/web/ccxs/forums/-/message_boards/message/13759052

Also there are commands suggested to prepend the custom axis jars that i am using but to execute those commands I need a root access for which i need to raise a TAC request with Cisco.

So my actual question is why can we not find details like prepending jars or to find out the list of jars getting used in UCCX out of root access, i understand that once you have root access to have access to the Kernal itself but for issues like these why can we not keep them out side [As in we can get the details via putty ] atleast a read access so that we can know what are the jars getting used by UCCX engine.

FYI: i got my code working as i replaced Axis with Wsimport for which no additional jars are required and moved on.

Thanks in advance!! Looking for your response.

Binny

Hi Binny,

The command "utils uccx prepend custom_classpathCustomJarName" does not need root access.

We have an enhancement request (CSCue88354) which will take care of removing custom JAR files from the classpath.

And finally, you can go to Appadmin > System > Custom File Configuration to view the list of available classpath entries you have uploaded.

Regarding your question on the CDN, it looks like Sharik has asked you to run pmap on the UCCX Engine pid (generates a memory map of the UCCX Engine service), and then search for certain JAR files that UCCX uses. Some of these JAR files should be the ones that clash. I'll follow up with Sharik and check if we can get an external-facing command that will help us do the same without getting remote support access.

Thanks & Regards,
Anirudh
"Protocol, then product"

Thanks & Regards, Anirudh "Protocol, then product"

Thanks Anirudh,

Also,

Appadmin > System > Custom File Configuration will give me only the jar files which i have deployed right but here i assume the issue is with a Jar which UCCX is internally using.

As i did not want to execute the prepend command before checking if there is a real collision of jar happening, as you never know if after doing that there might be some other issues due to which the engine might not work at all but though will give it a shot in my lab.

Binny

You are perfectly right there, Binny. What we need is a way to get a list of the JARs that the UCCX system uses internally. I'll let you know where the dev folks stand on this.

Thanks & Regards,
Anirudh
"Protocol, then product"

Thanks & Regards, Anirudh "Protocol, then product"

Thanks Anirudh,

I tried the prepend command with the version of axis-axiom that my application was using, but after doing that it got cascaded to other jars so i went and did a prepend of those jars as well just to check.

[Some 3 odd axiom-api-1.2.13, axiom-impl-1.2.13, commons-logging-1.1.1] .

but after that it works just fine . But it would be great to have a list of jars which are colliding as you said.

Thanks again.

Rgds/binny

Hi Binny,

Ideally, the prepend should only be used when absolutely necessary. We should ensure that the newer version of the common class is prepended. Unrestricted use of this can lead to system instability, so you should be careful when using it.

The list of JARs in use is static; hence, we plan to share it on DocWiki or a CCO article. I'll keep you posted.

Thanks & Regards,
Anirudh
"Protocol, then product"

Thanks & Regards, Anirudh "Protocol, then product"

Noted Anirudh,

just wanted to isolate the issue so wanted to check out as to what the problem is as it will be easy when projects come in and we are aware of existing issues with Axis when WebServices come into picture.

I agree to this and hence will not be using axis itself till i am very sure that these jars gettign used by uccx are of an older version till then will use wsimport itself as that is working fine and does not require any additional jars apart from jdk 1.6 which is already there, but just to be aware of it wanted to test it.

Waiting for the doc to be released.

Thanks again. Appreciate it.

Rgds/Binny

Hi Anthony,

Thanks for your great question, as always:)

I was able to recreate the same behaviour in my 8.5(1)SU4 lab as well, so it is not version specific.  After further investigation we have come to the conclusion that it is the "+" sign that is playing up here.

If you change the expression from:

Set account_number = (! account_number.startsWith("0000")) ? "0000" : account_number

TO

Set account_number = (! account_number.startsWith("0000")) ? "0000" + account_number : account_number

the issue occurs. Instead, if you change the expression to:

Set account_number = (! account_number.startsWith("0000")) ? ("0000" + account_number) : account_number

the issue is not seen. The use of the paranthesis in this scenario is required. However, this should not remove the step itself. If you are changing the step in a production step and the step disappears, you will be in bit of a bother. We are looking at the code to understand this behaviour, and will keep you updated.

Cheers,

Abhiram Kramadhati

Anas Abueideh
Level 9
Level 9

Dear Experts,

thanks for your answers. I have another question.

if we have more than one call in the queue, can the agent pick up a specific call ?

If we want to prioterize one of the calls if the caller is a VIP customer ?

thanks in advance

Anas

Hi Anas,

Thanks for your questions. To answer both of them:

An agent cannot choose the call which he can recieve. The agent is selected by th UCCX based on the resource-skill or resource-group logic, and the best agent is selected. The different ways an agent is selected is configurable in the CSQ. The algorithms are described in the UCCX Admin guide (Pg 205):

http://www.cisco.com/en/US/docs/voice_ip_comm/cust_contact/contact_center/crs/express_8_5/configuration/guide/uccx851ag.pdf

However, you can increase the priority of a call. If you wish to increase the priority of a call. Say, it is a VIP call and you dont want the person to wait. You can use this logic:

get ANI (get contactInfo)

------>compare with the number stored in the DB using a DBGet and an If step

----------->(true) Increase the priority of the call

All calls have a default priority of 1, but you can increase it to a maximum of 10. Please note that the priority of a call is "global" i.e. the priority holds good accross the call-center. If a call can be queued to 10 CSQs, all 10 CSQs will see this call as a call with the higher priority. How will this help?

Say, there are 3 calls in queue. The VIP call comes in, and you increase the priority of the call. Then that call goes to the front of the queue, than going to the end. That way, the call can be queued immediately to the next available agent. As a supervisor, you can check the priority of the calls in the queue and if you find a high-priority call in the queue for a long time; you can send a chat message to the agent to wrap up the call soon.

More information about the steps used in the UCCX scripts can be found here:

http://www.cisco.com/en/US/docs/voice_ip_comm/cust_contact/contact_center/crs/express_8_5/user/guide/uccx851_step_ref.pdf

Cheers,

Abhiram Kramadhati

thanks a lot for your replies. really, they are helpful

Anas