Wallboard noun
: a screen or web page designed to be shown on a tv/display mounted in a call center. It provides real time stats that are easily view-able.
The Background
My company has never had a real wallboard – we’ve shown the built in UCCX real time statistics page on a projector in the past, but it’s always been a low rent affair. So, as part of a new new system install, I was asked to integrate with the site’s wallboard. It turns out that their wallboard was just a plasma TV displaying some queue and agent stats. I think we can do this.
So, I began researching free wallboards that would work with my Unified Cisco Contact Center Express (UCCX) call center. There are a number available, including a nice one from Tenox, as well as the Free of charge Wallboard 2.4. I liked the Free of charge Wallboard, but it was broken for UCCX 8, and had a pretty dated look, so I decided to update this wallboard, making it compatible with UCCX 8 and up, as well as giving it a significant face-lift.
A new free UCCX wallboard is born
On to the good stuff, a description of this free to use Cisco call center wallboard. Let’s start with some of the screenshots of what the system looks like:
You can show multiple CSQs (customer service queues) on one screen
Or you can focus on only one CSQ
You can also show summary CSQ data
About the UCGuru.com Wallboard
This wallboard is free to use. As mentioned before, I am not the original author, however I’ve done a number of updates and modifications to the script, and think it looks and works quite nicely. Some key features:
- It’s free!
- All configuration data is stored in a single commented file – it’s easy to see what need to be changed.
- Updated style – most styling (the look and size of elements) is stored in a css stylesheet.
- Works with UCCX 8 – 10 – this is reason enough to use this script (in my book)
What is shown on the display:
- Logged in Agents
- Available Agents
- Talking Agents
- Calls in Queue
- Calls Handled
- Total Calls
- Calls Abandoned
- Current Wait Time
- Longest Wait Time
What do the different colors mean (gray / yellow / red)
- grey – if you have available agents then the row containing your queue will show as grey
- yellow – If you currently have no available agents (no one logged in, everyone talking, etc) the row will turn yellow
- red – calls are holding in the queue for an agent to become available.
Installation
The overall idea is that you will have a windows server that will connect via an odbc connection to your UCCX server. To view the wallboard, a client pc or wallboard machine will simply view the windows server default website.
Here’s how I did it:
- Create a windows server (I used a virtual machine). I found it easier to use the 32 bit version of windows, since UCCX will only use the 32 bit Informix drivers.
- Install IIS on the Windows server, and include ASP. Once installed, go to the IP of your Windows server and make sure that you see the default IIS website.
- Download and and extract the UCGuru.com Wallboard (link at the bottom of this article). Put these files in the default directory of your IIS install (usually C:\inetpub\wwwroot).
- On your UCCX server, you’ll need to know the uccxwallboard user password. I had no idea, so needed to reset this. Just go to Tools -> Password Mangement and change the password for the Wallboard User. Do not use Special Characters like &!”$£, as it won’t work. You’ll need to do this (and make the passwords match) on both servers if you have an HA cluster. Note about wallboard users – Cisco specifically recommends not using the uccxhruser, as it can cause high CPU utilization, so to stay on their good side, we’ll use the wallboard users and forego any agent data.
- Also on your UCCX server, go to Tools > Real Time Snapshot Config and enable the “Data Writing Enable”, “ICD CSQs Summary”, “ICD System Summary”, and set the Data writing to whatever you like.
- Now you’ll need to download and install the IBM Informix database drivers. You can find them here: ciscounitytools.com. I used the 4.10 version. Please note the extra hoops you’ll need to jump through to install this on Windows 64bit. I installed all features except the OpenAdmin Tool
- Now it’s time to configure the ODBC connection on your windows box.
- Launch the ODBC Datasource Administrator (Start -> Administrative Tools -> Data Sources (ODBC)
- Click the System DSN tab
- hit ADD
- Choose IBM Informix ODBC Driver
- Finish
- For Datasource name enter UCCX (you could pick anything you’d like)
- on the connection tab, enter the following
- Server Name – the name of your server with _uccx appended
- Convert all uppercase characters to lowercase characters
- Replace all hyphens with underscores
- If the host name starts with a number, add the prefix i
- Append _uccx to the server name
- For example, if your host name is 123-UCCX-1, your instance name will be i123_uccx_1_uccx
- Host Name – enter the DNS host name of your UCCX server (make sure the Windows server can ping this box – if not then you may need to add an entry in your hosts file for the name resolution).
- Service – 1504
- Protocol – onsoctop
- Database Name – db_cra
- User Id – uccxwallboard
- Password – the password from step 5
- Server Name – the name of your server with _uccx appended
- Click the apply button
- On the Environment tab set the Client and Database locales to en_US.UTF8
- You should now be able to go back to the connection tab and hit “apply & test connection”, and have the test succeed.
- Finally, we’ll need to edit the parameters.cfg file that is currently in the wwwroot folder.
Configuring the parameters.cfg file
There are a ton of options in the parameters.cfg file, but luckily, there aren’t too many that have to be changed. The file is well commented, so you should be able to figure it out. Here are the highlights:
- ServerURL = the url to your windows server that hosts your file. include the full url with trailing /
- DBsource = the IP address of your primary UCCX server
- DBServer = the Server Name of your UCCX server from step 7.1 above
- DBuserID and DBpass = the credentials for your wallboard user.
- DSN = the name of your DSN connection from step 6 above
- OnlyOneQueue = if you have only 1 CSQ then set this to 1. this will cause the page to display taller, but will only show one CSQ
That should get you started. You’ll notice that there is a good bit of coding in the script for agent data and stats. It is not possible to use this to pull agent stats using the uccxwallboard user. if you want to go against Cisco recommendations and use the uccxhruser, you can change the DisplayAgentsStatsTrue to 1, and pull information about agents. I don’t do this on my production server.
Required files (you only need the latest version):
UCGuru Wallboard v1.42
Agent status using the Finesse desktop by Lucas Marcel
Lucas added some code to show the status of individual agents without using the unsupported uccxhruser. This only works if you are using the finesse desktop and uses the ‘User – Get List‘ (https://developer.cisco.com/site/finesse/docs/#userget-list) finesse API which returns the current state of the agents in a XML file. It won’t give you user stats so it’s not a replacement for using uccxhruser.
Test that the API is working for you by browsing to:
http://:8082/finesse/api/Users
or
https://:8445/finesse/api/Users
Below is the code added to generate a basic table with two columns: Agent (showing the agent first and last name) and State (shows READY, NOT_READY, TALKING, etc.). I am filtering on the team name to show only a subset of agents. You will need to replace “https://nctdgao-cuccx1:8445/finesse/api/Users/”, “admin_user”, and “admin_password” with what makes sense in your environment.
Dim objRequest, objXMLDoc, objXmlUsers Dim user, user_property Dim node_firstname, node_lastname, node_state Set objRequest = Server.createobject("MSXML2.ServerXMLHTTP") With objRequest .SetOption 2, objRequest.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS .open "GET", "https://nctdgao-cuccx1:8445/finesse/api/Users/", false, "admin_user", "admin_password" .send("") End With Set objXMLDoc = Server.createobject("MSXML2.DOMDocument") objXMLDoc.Load(objRequest.ResponseXML) Set objXmlUsers = objXMLDoc.getElementsByTagName("User") Response.Write("AgentState") For Each user In objXmlUsers For Each user_property In user.ChildNodes If (StrComp(user_property.nodeName,"teamName") = 0) AND (StrComp(user_property.text, "name_of_your_team") = 0) Then Set node_firstname = user_property.parentNode.getElementsByTagName("firstName") Set node_lastname = user_property.parentNode.getElementsByTagName("lastName") Set node_state = user_property.parentNode.getElementsByTagName("state") Response.Write("" & node_firstname.item(0).Text & " " & node_lastname.item(0).Text & "" & node_state.item(0).Text & "") End If Next Next Response.Write("")
Support
Looking for support? Please go to the UC Guru support forum
For 64 bit OS (Windows 2008R2 / W2012 / Win7 64 bit), its best NOT to install teh Informix drivers as detailed above, but to install the bit versions, which are located at the below URL.
You can then use the 64 bit ODBC and default install. No workarounds needed.
Informix Downloads – (Informix Client SDK Developer Edition for Windows x86_64, 64-bit)
http://www14.software.ibm.com/webapp/download/search.jsp?q=&pf=&S_TACT=&S_CMP=&status=Active&sr=1&cat=&q0=&k=ALL&b=&pn=&pid=&rs=ifxdl&fpf=Windows+%2864bit%29&fdt=&flang=&sb=rd&ibm-search.x=15&ibm-search.y=13&ibm-search=Search
P.S. Thank you for a great wallboard!
Regards,
Gerry
Hi LeadFoot,
I have an interesting scenario I’m wondering you can shed some light on. My company runs UCGuru for our service desk, and it has been reported to me that the service isn’t behaving correctly – at the moment, the first page with all the call stats (total call, wait times and all that jazz) are working correctly, however the second page showing the status of logged in agents is only showing agents who are in ‘Not Ready’ status. Anyone else with other statuses like Ready or In a Call just disappear from the page. This was working last week, and nobody has modified any of the config files. The people who do show up with ‘Not Ready’ status have correct ‘time in status’ details as well. I’m left scratching my head as to what would make the service only display only a portion of what the database was letting it see previously.
Cheers,
Tim.
So it was working properly for some time, then it stopped. Are you running UCCX in a HA cluster? You may want to see if the cluster has failed over, and what was the secondary has become the master.
The reason I say this is that other users have found that the database is only updated on the master node
https://www.ucguru.com/free-wallboard-for-uccx/comment-page-1/#comment-17861
Hi LeadFoot,
Thanks for your reply – We do run a HA cluster, during this time since you responded I’ve been able to force fail-over on the cluster and take them to the other database – though in my testing, and even with this actual changeover, it didn’t resolve the issue.
What actually fixed our drama last night was the realization that Australian daylight savings have recently finished, and that the server that this wallboard runs off is in Sydney – which was affected by the daylight saving roll back. The service desk is in Manila, so their time zone didn’t change at all. An entry was added into the parameters.cfg that adjusted the time zone forward an hour, and we weren’t informed – changed this back, and boom – back up and running. I’m still not quite sure how it only prevented only the non ‘Not ready’ agent statuses from showing, but there you go.
Cheers again,
Tim.
Hi Leadfoot,
Is there a way of showing Average Speed to Answer on the wallboard? Also, I have two queues I am showing on a particular scenario. Distro and Distro Overflow. I have the first queue to overflow to distro overflow after 120 secs, however the Longest Wait time shows more than 120 secs for the first queue. Wouldn’t that be always 120 secs and not something greater?
IS there a way to get a summary of a group of CSQ’s in one output like the overall CSQ page? I only want to get a summary of specific CSQ’s and not all of them. Not sure it can be done.
Great wallboard, worked right out of the box….
Thanks Egawenda1
As to your question, yes that could be done, but you’d have to do a good bit of custom coding. You’d need to simply add each item together then spit out the results.
Sorry, I know that’s pretty vague, but I wanted you to know it can be done if you have the time.
Let me first say… I love this Wallboard, easy to get set up, and works great out of the box. That being said, our call center makes a lot of outgoing calls alongside the calls that are coming in through the queue, and I’ve been trying to figure out a way to display both the outgoing agent calls as well as the incoming. The closest data I can find is using the reason codes from the agentstatedetail table, but since it only changes if they are moving from ready to not ready or vice versa, it doesn’t count consecutive outgoing calls properly. Are you aware of another way of determining if an agent is actively on an outbound call? Thanks in advance!
Thank you for the kind words Matt.
As to your question, I don’t think that data is in the database, however you can look through the schema to see if you could pull something helpful:
http://www.cisco.com/c/dam/en/us/td/docs/voice_ip_comm/cust_contact/contact_center/crs/express_9_0/user/guide/uccx90dbschemagd.pdf
If you find a way then post back here.
I had to change the IP addresses of the PUb and Sub, I am running the PUB as the Master. I can get the url to open and display all the correct spots however it is not displaying or pulling stats from the UCCX. I have the correct layout and I changed the IP address in the parameters.cfg in all particular spots but it still won’t populate the fields… Suggestions?
Did you update the informix database connection on your windows box as well?
Yes, I did. I do the test connection and it comes back as passed. I am stumped. I look in the CLI of the Publisher and all services are started as well.
The Publisher did not have any summary output for uccx. I restarted the publisher and let the subscriber take over and then restarted the subscriber. All is right in UCCX world now.
Cluster reboot for the win!
Glad you got it working.
Is there a way to put Average Speed to Answer in the Wallboard?
Guys.. would love to get this to work. I’m getting the black screen browsing locally and the 500 internal server error when hitting the default website remotely. What am I missing? I read all the forum responses, but no luck. I have ASP installed- ISAPI Extensions….. The database connection is fine. Does there need to be an app pool defined for the default web site? If so,,,can somebody send details? I’m not a IIS expert so any help is greatly appreciated.
Thanks…..Dennis….
When you get the black screen, are you able to highlight it / select text?
One problem that happens is when there is an error it spits out some text, but because I made the background black, all you see is black text on a black background. You could either highlight the text, or right click on the page and view the page source.
Exact same problem as dtopo, using a 64-bit OS (server 2012 R2); informix drivers and odbc correctly set up, still no love. Fixed by following FNBJason’s post (29jan2014). In short:
64-bit Operating Systems – In IIS manager, for the application pool for the website (typically the default application pool), right click and go to Advanced Settings. Under (General) subsection, change the Enable 32-bit Applications setting to True. This will tell IIS to run in 32-bit compatibility mode in order for UCCX to be able to use the 32-bit Informix drivers.
Thank you very much for posting a solution for this. I know many people have been having problems with 64 bit versions.
On my agent stats page I’m getting a WHERE X.assignedTeamIF=2 on the page. Tried to remove a few lines of code out of default.asp and not getting expected results.
I found some issues with the Stats Agent View page. I did some troubleshooting and found that the SQL queries were not returning the information correctly. I’ve modified the SQL statement and I have an updated wallboard script. I’d be happy to supply the updated script back to the board/group so that others can benefit from my changes.
Hugh McLenaghan
Hugh,
Zip up your script and email it to webmaster at ucguru.
Thanks
I love the wallboard app I’ve been running it from a Windox XP machine for about a year, problem is its on its last leg and they are hounding me to upgrade to a new Windows 7 pc. Desktop support gave me a brand new Windows 7 32 bit PC, I loaded the ODBC drives without any issues, setup the connection to the UCCX server no issues their. Loaded the wallboard stuff in the default location and made the file default.asp the first file it reads, but when I try and laod the webpage I keep getting this:
HTTP Error 404.3 – Not Found
The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.
I’m hoping you can help me out, I went to MS website looking for some info and got lost.
Thanks, Mark
It could be that asp (classic) is not installed on that new windows 7 PC. Take a look at pblosser03’s comment here for more info:
https://www.ucguru.com/free-wallboard-for-uccx/comment-page-2/#comment-17821
That was the fix for things. I forgot to check and make sure taht the IIS and make sure that the APS services were installed and running. Thanks for the help and this is a great thing for the call center to have running.
I am new to Cisco UCCX, and not a programmer, and in need of some help with getting this wallboard working.
I have a new 2012 R2 VM up and running and the IIS appears to be correct.
When I go to the page from the server (http://localservername/) I get a black screen with the “An error occurred on the server when processing the URL. Please contact the system admininistrator”.
I have tested the ASP, and it is working ok.
Please help.
My Company would like to remove the Longest Wait Time and display the Average Wait Time, can that be pulled from the DB and is there a list of variables that we can pull from the db that someone can point me to by chance. Thanks for the help.
It is possible to display the average wait time (it is maintained by the database). We can replace the longest wait with the average by doing this:
1. Backup your files (simple copy the wallboard files somewhere else).
2. Inside default.asp:
replace every instance of “convLongestWaitDuration” with “convavgwaitduration”
3. Inside parameters.cfg
change:CSQStats_Column10 = “Longest Wait Time”
to: CSQStats_Column10 = “Average Wait Time”
You can find out what is stored in the database via this PDF – http://www.cisco.com/c/dam/en/us/td/docs/voice_ip_comm/cust_contact/contact_center/crs/express_8_5/user/guide/uccx85dbschema.pdf
We have been running this for two days, and every couple of minutes we get a 500 error and have to refresh the browser. Refreshing the browser brings the page right back up, however this does not solve the problem. I have tried playing with the refresh settings, and nothing seems to help.
Any ideas?
You may want to look at the connection limits that are in IIS. It may be defaulted to something like a max of 2 connections.
My suspicion is that this is an IIS issue. If it wasn’t connecting to the database / UCCX server then it should at least load the page header.
Maximum Concurrent Connections is set to 4294967295. Maximum Bandwidth is set to the same, and Connection Time-out (seconds) is set to 120.
Does that help?
I have been messing with max connections and bandwidth settings since you posted your response, but nothing is helping. Do you have any other ideas?
Take a look at this article – it may help:
http://mvolo.com/troubleshoot-iis7-errors-like-a-pro/
if you figure it out, please post back here – chances are that others have the same issue.
Still havent figured it out. Not getting the 500’s anymore, but now we get random black pages
I have the same issue. I have tried tracing it from the IIS side and it shows up as an ASP log error on line 442 ErrorCode 80020009
As far as I can tell it could mean a few different things. Here is one example:
http://stackoverflow.com/questions/14880764/classic-asp-error-80020009-exception-occurred
Line 442 in the default.asp file is
Response.Write “stats began at ” & objRS(“startdatetime”) & ” EST”
I am not a code writer nor a web designer so I am not sure how to take this even further.
I went through the steps and have the page displaying on my windows 7 32bit but i’m not getting any stats at all. I tested the ODBC connection and it passes but no data on the wallboard. Any thoughts please, running version 10.5 for UCCX
I just noticed the windows 7 box that I installed last night didn’t have SP1. Trying that now and will do all the window updates to see if that fixes any bugs by chance.
Updated windows 7 32 bit with all current windows. When I got to the webpage all stats are still zero, at the top it says stats began at 1/6/2015 then it shows the correct time to the right. Doesn’t it get that information from the DB?
Any more ideas, i’m willing to try anything at this point because we love the way the wall board looks. I did also restart our pub just for giggles and nothing new there.
under Tools>Real Time Snapshot Writing Configuration for Wallboard is the server name suppose to be the UCCX publisher?
I finally got it figured out…. Always make sure the server you think is the Master in a Cluster actually actually is and didn’t fail over.
I have several of these wall boards built. When I try to use two different wall boards that have almost the same data I keep getting an error. Is this wallboard made to be able to pull the same data into two different wall boards at the same time?
The different wallboards should have no knowledge of each other. I would turn off #1 and see if #2 works, then do the reverse. See if they work independently, but stop working when used together.
Next, I would look at your UCCX cluster, at Tools -> Database Server Configuration. I have not tried this, but I see that on my cluster, DB connections are limited to 5. You may try upping this, however I have no idea what overall impact / best practices for this are.
Please let us know if this helps.
I did not do this. However, we did set the refresh rate to 60 seconds rather than 15. This seemed to clear up the issue.
Great Wallboard. I have an issue with one CSQ not resetting the Calls Handled, Calls Abandoned, and Total Calls stats. Any ideas on how to resolve this?
Thanks so much for posting this – I really like the look of the pages versus the [long in the tooth] free wallboard 2.4!
One question – you said that the “CSQ Summary” rollup page was optional. I would like to display only one CSQ (Image #2 above). How do I stop from switching between ICD and CSQ pages? I made it work by setting the refresh rate to -1 when on the correct page but I’m thinking there should be an easier way since you said the summary CSQ page was optional.
I figured it out – sorry! I didn’t notice this line:
Const DisplayICDStatsTrue = 0
Digging around in the ASP page led me to look for that parameter.
Thanks again!
Bill
Finally got it running on Windows Server 2012 R2 and it looks really nice!
But I want to group the stats from certain CSQ’s to display as one (e.g by country with multiple CSQ’s in it).
BR
strsql = "SELECT " &_
" CSQName, " &_
" SUM(loggedInAgents) as loggedInAgents, " &_
" SUM(availableAgents) as availableAgents, " &_
" SUM(callsWaiting) as callsWaiting, " &_
" SUM(callsHandled) as callsHandled, " &_
" SUM(totalCalls) as totalCalls, " &_
" SUM(callsAbandoned) as callsAbandoned, " &_
" MAX(convoldestContact) as convoldestContact, " &_
" AVG(longestwaitduration) as convAvgWaitDuration, " &_
" MIN(endDateTime) as endDateTime, " &_
" SUM(talkingagents) as talkingagents, " &_
" MIN(startdatetime) as startdatetime" &_
" FROM" &_
" (" &_
" SELECT " &_
" CASE CSQName WHEN 'Service1' THEN 'Service'" &_
" WHEN 'Service2' THEN 'Service'" &_
" WHEN 'Sales1' THEN 'Sales'" &_
" WHEN 'Sales2' THEN 'Sales'" &_
" END as CSQName,loggedInAgents,availableAgents,callsWaiting,callsHandled,totalCalls,callsAbandoned,convoldestContact,longestwaitduration,endDateTime,talkingagents,startdatetime" &_
" FROM RtCSQsSummary) x" &_
" WHERE csqName is not null" &_
" GROUP BY CSQName"
Hey Fredric, if I have multiple CSQs that I’d like to group but I’m grouping CSQs that all contain the same agents I’m assuming I would need to modify the SELECT statement so that it’s not summing the agent data? Would the following statement work?
strsql = “SELECT ” &_
” CSQName, ” &_
” loggedInAgents, ” &_
” availableAgents, ” &_
” SUM(callsWaiting) as callsWaiting, ” &_
” SUM(callsHandled) as callsHandled, ” &_
” SUM(totalCalls) as totalCalls, ” &_
” SUM(callsAbandoned) as callsAbandoned, ” &_
” MAX(convoldestContact) as convoldestContact, ” &_
” AVG(longestwaitduration) as convAvgWaitDuration, ” &_
” MIN(endDateTime) as endDateTime, ” &_
” talkingagents, ” &_
” MIN(startdatetime) as startdatetime” &_
” FROM” &_
” (” &_
” SELECT ” &_
” CASE CSQName WHEN ‘Service1’ THEN ‘Service'” &_
” WHEN ‘Service2’ THEN ‘Service'” &_
” WHEN ‘Sales1’ THEN ‘Sales'” &_
” WHEN ‘Sales2’ THEN ‘Sales'” &_
” END as CSQName,loggedInAgents,availableAgents,callsWaiting,callsHandled,totalCalls,callsAbandoned,convoldestContact,longestwaitduration,endDateTime,talkingagents,startdatetime” &_
” FROM RtCSQsSummary) x” &_
” WHERE csqName is not null” &_
” GROUP BY CSQName”
2 doubts came up..
1) the difference between the wait time in ICD and CSQ..is ICD counting since the IVR? I had 5min47sec on ICD and 5min41sec on CSQ display.
2) My major concern is regarding the Dequeued calls…my script sets all abandoned short calls (until 5sec) as handled. On ICD I see that Handled Calls increased. On CSQ I see Calls Abandoned increasing…I never see Calls Dequeued incrementing and numbers never match. Is there a way to change it?
tks!
1. They should be the same time. I believe they are pulling from the same field in the database.
2. I did something for my environment that may not be right for everyone. You could edit the script to show the calls dequeued from the database. I use math to get the number the script uses. Look at takahb’s comment here:
https://www.ucguru.com/free-wallboard-for-uccx/#comment-10461
Hi! thanks for the wallboard.
i am trying to deploy it on a windows server 2008 r2 x64, UCCX 10.5, but i keep getting black screen with the following error (when i try to open on the server itself):
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.
if i open the asp page on a remote machine I get the error 500.
I reinstalled IIS and had to set “Enable 32bit applications” to False. otherwise i kept seeing internal error 500 “Calling LoadLibraryEx on ISAPI filter”.
I type on the browser: https://localhost/wallboard/ and I see it changing to https://localhost/wallboard/default.asp?Stats=CSQ
Is it normal?
ASP Test script worked fine.
db connection on odbc is always successful. I used the local dns to set the server name.
any idea? thanks in advance!!
Sorry Czy, I’ve got no experience with this on Windows 64bit. When I started down this path I was told that there were issues with the 64bit Informix drivers, so I’ve never tried to get this working on on 64bit myself.
As to the changing url, yes, that is normal. It will cycle between Stats=CSQ and Stats=ICD
Hello LeadFoot !
I tried so many ways, i began to believe that I was doing something wrong, because even with a 32bit version of windows server i got the same error message.
Then I did the following: Const DBServer = “uccx10_uccx” and it worked 😛 :P. I was forgetting the _uccx !!! I will get back to x64 and try again.
one question..how can I change or remove the “stats began” information? it is a different timezone.
thanks !!
Congrats on getting it working. It’s frustrating when the little stuff trips us up.
I have had your wall board installed for several months now and it works great. Thank You..
I have a request from our Customer Support Manager asking if it can Make a sound to alert the Agents when there is a call in the queue. Is this possible?
We added this to te top of our .asp, added a small amp and some speakers to the ceiling in Customer service. Now when someone is in queue and all agents are on the phone is plays a soft ring..
function PlaySound() {
var soundObject = null;
if (soundObject != null) {
document.body.removeChild(soundObject);
soundObject.removed = true;
soundObject = null;
}
soundObject = document.createElement(“embed”);
soundObject.setAttribute(“src”, “./assets/sound/warn.wav”);
soundObject.setAttribute(“hidden”, true);
soundObject.setAttribute(“autostart”, true);
document.body.appendChild(soundObject);
}
$(document).ready(function(){
jQuery(“.callsWaiting”).each(function () {
if (parseInt(this.innerText) > 0) {
PlaySound()
}
});
});
Hello,
I am still trying to get the Wallboard to play sound when there are calls in the queue. Dwilliams posted a way to do this but I can’t get it to work. He mentions that he added the script above to the top of the .asp file? I assume he is referring to the default.asp file? When I try to add the added code to the asp file it breaks the wallboard.
Anyone have any suggestions. I appreciate any help. my email is jmaxheimer@hotmail.com.
function PlaySound() {
var soundObject = null;
if (soundObject != null) {
document.body.removeChild(soundObject);
soundObject.removed = true;
soundObject = null;
}
soundObject = document.createElement(“embed”);
soundObject.setAttribute(“src”, “./assets/sound/warn.wav”);
soundObject.setAttribute(“hidden”, true);
soundObject.setAttribute(“autostart”, true);
document.body.appendChild(soundObject);
}
$(document).ready(function(){
jQuery(“.callsWaiting”).each(function () {
if (parseInt(this.innerText) > 0) {
PlaySound()
}
});
});
This is great. Just what I was looking for. I hope this doesn’t sound to dumb. But where at in the top should this be put? I put it at the very top and it I see the added script in the webpage.
Thank you again for this add on!!!
Jim, I’m not sure what you are referring to. Were you talking about the wallboard overall, or were you replying to someone’s comment?
I was referring to the adding the above lines to make it so it plays a sound when there are calls in the queue. dwiliams mentions putting at the top of the .asp file. When I put it at the very top it just shows the added lines in the wallboard. I have tried putting it other places in the file but it breaks the wallboard.
function PlaySound() {
var soundObject = null;
if (soundObject != null) {
document.body.removeChild(soundObject);
soundObject.removed = true;
soundObject = null;
}
soundObject = document.createElement(“embed”);
soundObject.setAttribute(“src”, “./assets/sound/warn.wav”);
soundObject.setAttribute(“hidden”, true);
soundObject.setAttribute(“autostart”, true);
document.body.appendChild(soundObject);
}
$(document).ready(function(){
jQuery(“.callsWaiting”).each(function () {
if (parseInt(this.innerText) > 0) {
PlaySound()
}
});
});
Thank you for your help
Jim
Since this looked like a script, I put mine in the top inside of a , but it did not play the audio file. Any ideas from anyone?
Since this looked like a script, I put mine in the top inside of a
, but it did not play the audio file. Any ideas from anyone?
Since this looked like a script, I put mine in the top inside of a script tag, but it did not play the audio file. Any ideas from anyone?
Sorry for triple posting, I was trying to get this comment box to show the script tags. I wonder if that snippet of code is missing some much needed lines due to the same issue
The more I play with this, the more it seems like we are missing some code needed to call this javascript script from within an ASP page. Can anyone give us some insight?
Hey Bud,
Only just stumbled upon your awesome wallboard you have here!
Single question – Is it possible to join CSQ stats together?
For example if I had 3 CSQ’s (service1, service2 & sales)
I would like to display service1 & 2 combined, with sales displaying by itself.
As we didnt get any response from the author I managed to make up this query in default.asp.
You might want to check it out!
strsql = "SELECT " &_
" CSQName, " &_
" SUM(loggedInAgents) as loggedInAgents, " &_
" SUM(availableAgents) as availableAgents, " &_
" SUM(callsWaiting) as callsWaiting, " &_
" SUM(callsHandled) as callsHandled, " &_
" SUM(totalCalls) as totalCalls, " &_
" SUM(callsAbandoned) as callsAbandoned, " &_
" MAX(convoldestContact) as convoldestContact, " &_
" AVG(longestwaitduration) as convAvgWaitDuration, " &_
" MIN(endDateTime) as endDateTime, " &_
" SUM(talkingagents) as talkingagents, " &_
" MIN(startdatetime) as startdatetime" &_
" FROM" &_
" (" &_
" SELECT " &_
" CASE CSQName WHEN 'Service1' THEN 'Service'" &_
" WHEN 'Service2' THEN 'Service'" &_
" WHEN 'Sales1' THEN 'Sales'" &_
" WHEN 'Sales2' THEN 'Sales'" &_
" END as CSQName,loggedInAgents,availableAgents,callsWaiting,callsHandled,totalCalls,callsAbandoned,convoldestContact,longestwaitduration,endDateTime,talkingagents,startdatetime" &_
" FROM RtCSQsSummary) x" &_
" WHERE csqName is not null" &_
" GROUP BY CSQName"
Very cool Fredric! Thanks for the contribution.
Fredric,
What if I didn’t want to separate the query into sales vs service…
Rather, just take all the named CSQs (up to 15 as in parameters.cfg file)…
I created a separate page for each department – they sit in different buildings (http:///Sales, http:///Helpdesk, etc…
So, I’d like it to just summarize all the named CSQs into its own summary row…
It should be able to be copied to each of the pages basically, since all the different departments, have their queues named in the parameters file.
Could you help with that?
For some reason, I can’t get the SQL to work…
Am I doing something wrong?
I just get an 500 Internal Server error… and locally on server it just displays an Internal Server 500 error – this website cannot display the page.
The only thing I change is the SQL query.
(removed Quotes and ampersands for clarity – also removed the ‘x’ after parenthesis towards end)
When I activate AgentsStats no info is beïng displayed.
In the logfile I see the following error : GET /test.asp Stats=Agent|913|800a0009|Subscript_out_of_range:_'[number:_2]’ .
I searched for the error message on Google and it seems that I’m trying to access data that doesn’t exist. I’m using the uccxhruser.
I’m trying to find out how the data is selected and retrieved from the database but I can’t find it out. I understand the selectSQL/strsql statement for the CSQStatistics ICDStatistics from the table RtCSQsSummary and RtICDStatistics, but the query for the AgentStats is more complex. I executed the query SELECT * FROM agentstatedetail to check the access to this table and this query returned data.
I hope someone can help me solve this problem. Thanx !
I think I understand the query for AgentStatistics now, forgot to search for the Resource-table. I don’t know if the fieldnames are case sentitive? The fieldnames in our database are all in lowercase, but after changing this in the strSQL command the webpage is still not being displayed (same error).
Coming closer to the solution of this problem, I hope. After changing the error page settings I now have a more detailed error message :
Agent Statistics 14:37:24
(click here to hold page)
WHERE x.assignedTeamID =10
Microsoft VBScript runtime error ‘800a0009’
Subscript out of range: ‘[number: 2]’
/test.asp, line 916
Customer Service Representative Current Status Time in Status
The displayed time on top of webpage is in 24 hour format, line 909 of the script = ‘ The string returned in eventDateTime is a string of the form “MM/DD/YYYY HH:MM:SS [AM/PM]”.
Can this be the cause of not loading data, 24 hour format vs AM/PM ?
Are you sure that 10 is a valid UCCX team ID?
What version of UCCX are you using?
As for the Agent database query, your’re right – it is totally different. The CSQ and ICD stats come from the CRA database. This is the database that Cisco wants you to pull stats from, and has a limited amount of data.
The Agent stats pull from the Historical Reports database, which is actively discouraged by Cisco. To get stats from that database we have to do some Joins that drive the CPU usage up quite a bit.
Hi,
Thanks for your quick reply. I installed an ODBC query tool to lookup information. When I run the query “SELECT * FROM team” , this returns that teamid 10 is in this table and that it’s active.
We use Cisco Hosted Collaboration Solution, release 9. I know that Cisco discourages to pull the agent stats from the Historical Reports database. I’m now just testing with the stats of one team and when I get this to work we will look for the best option to retrieve the information for all teams in our contact center.
I hope I’m one step closer to the solution of my problem with the agent statistics. The line that contains the error is : EventHappenedDateTime = CDate(strArray(0) & ” ” & strArray(1) & ” ” & strArray(2)). When I change this to EventHappenedDateTime = CDate(strArray(0) & ” ” & strArray(1) & ” “) some info is being displayed, but the displayed agent state time is not correct (more than 6 hours in Ready state). The format of the eventdatetime in our database =
resourcename eventtype assignedteamid datetime
Agent 3 3 2014-11-03 14:47:14.428
This format is different from the format that is mentioned in the script (MM/DD/YYYY HH:MM:SS).
Any idea what has to be changed to show the correct agent state time ?
Hi Cor,
Did you manage getting this to work?
Did you write an all new asp page or did you use the default.asp?
Thanks,
Dennis
Hi and thanks for a great Wallboard – though I haven’t been able to try it yet 🙂
Any idea how to fix the error “Database locale information mismatch”? The first search page on Google did nothing for my problem.
I get this when testing the connection on the ConnectTest Demo application. And I have tried different setting for both client and database locale in the ODBC settings as I would think that’s where the problem is…?
Hi there,
Wallboard looks great. Just wondering if it’s possible to get the Service Level on the wallboard also?
Hello again, got a question about the time returned by “objRS(“startdatetime”)”
I see the “EST” timezone is manually input on the code right?
So the question I have is: is the time on “stats began at” in the timezone my server is already? Or I have to manually config that “sOffset” on line 445?
I was also wondering if there is some reason not to use the field “callsdequeued” from RtCSQsSummary instead of doing that “math”.
Thanks again.
Sorry about the EST – I should have just left the timezone out entirely, as the timezone isn’t stored in the database.
Calls Dequeued – In my environment there are some queues that would forward the overflow traffic out to an answering service, and these calls were marked as answered by UCCX. So, on my wallboard the number of calls answered by agents + the calls dequeued did not = the total calls. This is probably unique to my environment, and more than likely the “callsdequeued” table would work fine for you.
This looks like a nice setup. Great job. I have a couple of questions.
1. Is it possible to display working agents? At our call center, our current wallboard software displays both working and talking agents. We have users add these numbers together to determine if they can go to break/lunch. We want to make sure we have at least 20 people on the phones when they go to lunch/break.
2. Is it possible to display the average wait time – the average time users are having to wait before the call is answered. You have the current wait time as well as the longest wait time. I saw a post from Karl on July 9th asking about this, but didnt see a response.
Will I be able to display what I want/do not want listed. If I did not want logged in agents to be displayed, could I remove that from the list?
What I did was add a few items to the Default.asp page, and parameters.cfg page, like this:
In Default.asp – Add WorkingAgents to the SQL Query.
Row 429 – Original:
Row 429 – After (Added “ workingagents,“):
I also added the same to Row 435:
Row 435 – Before:
Row 435 – After (Added “ workingagents,“):
Then I edited the Output on the screen…
Row 549 is for Single Queue, Row 629 for multiple queues… I will demonstrate on Row 629 below, because it is the only one I use. Be sure NOT to copy the whole row if you want to put it in Row 549, because the ‘TD Class=’ is different, and you’ll waste 2 hours figuring out why your ONE cell has a huge font. (Done that!)
Row 629 – Original:
Row 629 – After (Added “& “:” & objRS(“workingagents”)”
Response.Write “” & objRS(“talkingAgents”) & “:” & objRS(“workingagents”) & “”
That’s all for the Default.asp file…
Now go to your Parameters.cfg file, and edit row 96.
Row 96 – Original:
Row 96 – After:
Or whatever you want… The colon is used in the Default.asp file in row 629 as stated above, but you can use your imagination…
Save and refresh…
Hi
would you know how to align the logo to be at the center?
I’ve tried modifying some lines in the default.asp where i think it relates to logo, and changed align=’center’ and reloaded the website but it still goes to the left.
Thanks
Try changing:
ALIGN=’left’
to
ALIGN=’center’
on line 969. That code appears on a few pages, and you may have edited the wrong one. I’ll see about using css to style that in future versions.
lin 969 is my last line, I changed align=left to align=center in all places, and it has had no effect. I thought maybe I was using a newer version of the code since this comment, so I checked the CSS, but I couldn’t find it anywhere in the style sheet.
Hi,
Just thought I’d comment on those with DBSERVERNAME or DBSERVERALIASES issues.
This needs to match the server name in the format “_uccx” NOT the Host Name.
Also for those that are installing on 64-bit platform, you need to enable 32-bit compatiblity for the application pool as the user FNBJason posted.
HTH
Hello, still suffering on this one.
I did this procedure and also tried installing on a 32 bit Win 2008 so I could rule out any issues on that.
Now I’m getting the same error on both:
erro ‘80020009’
/ucguru/default.asp, linha 442
This line would be:
esponse.Write “stats began at ” & objRS(“startdatetime”) & ” EST”
I wonder is this could be related to the fact than I am not in EST timezone, would this be a cause?
I did try editing this but got no luck so far as I am also not sure if there is a “list” of possible timezones that can be configured.
After removing lines 442 and 739 (which looks the same) I can now see the logo, clock and version.. but still no status..
*sigh* lol
takahb – it looks like you are getting errors everytime the script tries to access the UCCX database. Line 442 (specifically “objRS(“startdatetime”)”) just looks in the database for the time that the stats started.
Go back and look at part 7.X of the install, and verify that you can access the database correctly.
Hello LeadFoot,
The “Test Connection” from ODBC is OK, I do get a Succesful there, but still hitting this.
Any other ideas on what I could look into?
Thanks.
So.. after a restart on the Pub it started working..
=/
Thanks for the help and the Wallboard!
Glad it’s working. I’m not sure why restarting the Pub would fix it, but sometime those things happen.
Forgot to mention that I already did the ASP verification suggested on a previous post with this same error.
The Connection test on the ODBC configuration is OK as well.
Hello there, trying to setup this on Win 7 but getting some issues.
When I try to open the URL, I just get a black background page and the following error:
“An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.”
Looking at Firefox inspection it is saying something aboud Character Coding on the HTML document not set.
Any ideas on what could be happening?
Sorry, meant to include that error is what I’m seeing in the IIS log.
Remote machines just get a 500 error, local to web server I get the black ASP page with the link to classic ASP on IIS7.
This is on a 32 bit 2008 IIS 7 server. Other ASP apps work and the Informix ODBC connection tests out fine. Any help would be MOST appreciated!
GET /wallboard/default.asp Stats=CSQ|372|80004005|[Informix][Informix_ODBC_Driver][Informix]INFORMIXSERVER_does_not_match_either_DBSERVERNAME_or_DBSERVERALIASES._ 80 –
Great work effort and collaboration. Thanks! Question…is there a way to create a “Summary” row that will provide a roll up of the call center performance (basically totals from all queues):
Logged In
Available
Talking
Calls in Queue
Calls Handled
Total Calls
Calls Abandoned
Current Wait Time
Longest Wait Time (this should reflect the current longest wait)
Just curious…
Thanks!!
TJ – the ICD page already does some of that.
I think what we’re looking for… Or me at least is…
I have 4 departments…
1- Helpdesk,
2- Financial Aid,
3- Distance Education
4- Veteran’s Affairs…
I’d love to see a summary row on the top of the different Helpdesk queues on their screen, a summary of the different Financial Aid queues on the Financial Aid screen, etc.
The ICD screen will show me a summary of all 40 of my CSQs, for all departments… It doesn’t help the Helpdesk to know there is 900 people on hold in Veteran’s affairs…
Has anyone run this on a Linux server vs Windows?
I would prefer linux as well, but you’d need to do a complete rewrite of the wallboard, since it’s done in asp. You’d also need to find a way to connect to the informix database from linux (I have only seen windows drivers for that).
Just a quick cosmetic issue, it looks like the PAGE FOOTER MODULE in v1.41 hasn’t updated with the new version number. I’ve just spent a few minutes wondering why the upgrade hadn’t taken effect because it was showing 1.2 in the footer 🙂
Sorry about that! I’ll make sure to update that in the next release.
I want to say “Thank You” for creating an absolutely awesome wallboard! Previously I had a wallboard that I created based on HTTP Triggers to collect the CSQ data and display it to our Customer Contact Center. While it worked well and the CCC became very dependent on it, it was limited in that we could not have many users running the actual wallboard. Instead, my work around was to run the software I created on one server, then use ScreenStream to stream the interface to the agents.
If you have never used ScreenStream it is from NCH Software and it basically streams anything on your desktop, another user can view that stream simply by using their browser to see the stream. This worked well but again the HTTP trigger Wallboard was limited. In addition, we found that the ScreenStream software filled up the system disk to the point that it actually damaged the disk file structure. We could not figure that part out (disk space issue), but we required an alternative Wallboard that worked better than the wallboard I had created.
Then I found your site!
Ha-lle-lu-jah!
This wallboard works fantastic! And with a few tweaks I was able to update my front-end application that was used primarily to display the streamed wallboard to display your IIS based wallboard! This part was required since the agents were used to the CSQ Application; my update allows it so that the agent does not need to remember a URL and can view the wallboard in a portable window that can be placed anywhere on their dual-monitor setup with ease.
I would love to show you the interface but can’t attach and image. Anyway thanks again for the awesome wallboard!
RIP (BTW – Those are my initials – 🙂 )
I’m glad you like it!
Feel free to email the screenshot to me. I’m at webmaster @ this domain
Nice work !
I don’t think calls dequeued is accurate.
It goes up and down when calls waiting increase/decrease.
Calculation is now;
callsDequeued = totalCalls – callsHandled – callsAbandoned
Looks like callsWaiting needs subtracted too, so;
callsDequeued = totalCalls – callsHandled – callsAbandoned – callsWaiting
Hans – big thanks. I’ve rolled out version 1.42 which has your change in it.
Disregard my previous question…I believe UCCXTeamID1 is only applicable when using the hruser.
When I set UCCXTeamID1 to the appropriate team id (verified with the mouseover), it still shows all CSQs, even the ones associated to the other teams. Any idea why?
Thanks
Use System DSN instead of USER dsn
techfreak,
What are you referring to?
Hi,
For those wanting to add a beep when calls start backing up, here is what I have added after the if statement at line 472
Response.write “”
Just include the wave file in your web site home directory.
OK The response.write should say “Response.write “” “
Hey Doug – Line 472 on my asp page is in the middle of If>THEN>ELSE statement for available agents. Would you mind sharing your code? I’d love to add a wave file to this.
I’ve gone through the configuration and setttings to get the website and wallboard up and running. I can get a Default website up no problem, when I switch to the wallboard site, I get the following error:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Informix][Informix ODBC Driver][Informix]INFORMIXSERVER does not match either DBSERVERNAME or DBSERVERALIASES.
/default.asp, line 372
Please let me know what is going wrong with this. I thought this was related to the ODBC driver but went back and checked my settings in there and they were all set the way your documentation said to.
Need some assistance with installation of the ODBC driver. I followed the instructions, however when I went to step x – apply & test I get an error window that pops up stating “Test connection was NOT successful. [Informix][Informix ODBC Driver]INFORMIXSERVER does not match either DBSERVER or DBSERVERALIASES.”
I found my problem, the server name was different from the host name. Darn NET ADMIN folks, they changed things on me. I do still have a question though. I have now gone through the parameters.cfg file and everything is setup (I think) the way I want it, how do I actually get the page to display?
You’ll want to put the ip or hostname of your windows IIS server into your PC’s browser. Essentially you’ve stood up a windows web server, and now your going to view the pages on that server.
Did you follow all the silly requirements in part 7 vii? Also, can you ping the host using what you entered at the hostname?
I did follow all the setps in part 7 vii, and can ping the host by name and IP. If I enter the hosts IP it takes me to the UCCX server not the web page to display call stats. I thought it would be something like the “http://localwebserverip/hostname” to see the stats displayed. But that doesnt seem to work either.
I’m sorry, I just realized that I never put that into the original docs.
On your IIS server, drop the files you got from this site (after editing) into the root folder. You would then go to
http:// yourwindowsserver
and it should come up.
I was going through my parameters.cfg file and the 2nd line Const ServerURL = “” //The Server URL with this script in it with trailing /; exactly what should I have there between the quotes? I think this may be where I’m missing something, I originally just “http://webserverIP/”; then I went back this morning and re-read it and thought it should be “http://webserverIP/parameters.cfg”; but I still cant get it to work. Any advice would be greately appreciated.
it should be:
“http://webserverIP/”
unless you have the script in a folder then it would be
“http://webserverIP/foldername/”
From there the server should load the default.asp file automatically. You should NOT be calling parameters.cfg from your browser.
It sounds like you are having problems getting your IIS server working. When you go to “http://webserverIP/” in your browser, what do you see?
I get
404 – File or directory not found.
The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.
Sounds like there is nothing in your IIS root folder. You need to find the IIS root and put your wallboard files there.
This may help:
http://support.microsoft.com/kb/323972
I went through the link you sent me, I have all this already setup. I have the default.asp in the c:\inetpub\winroot folder and the app see’s it, however it wont allow it to run, I’m starting to get so frustrated with this darn thing, I feel I’m right there so close yet so far.
If you’re getting a 404 error then that means no file was found. I would suggest that you remove the wallboard files, and just make a default.asp file with the word hello in it, and see if you can just get IIS working. Once that’s done, put the wallboard files back in the folder and try again.
I was looking at the IIS server settings and I have the ability to select where the server points to and what file it reads. What file should it be attempting to open when I open the “http://webserver_address/whatever.????” I think this is what I’m missing, should it be attemping to read the default.asp file or something in the asset folder.
default.asp should be the default document type for your iis server. You should not have to edit the default document type.
I’m having the same issue. Pretty sure it is some sort of IIS problem. I keep getting either a 404 file not found or a 403 forbidden access. Using default.asp does not work. (Tried with the hello world text file) Index.html works fine. I am trying to add it to an existing website, so maybe that is my problem.
I figured out my issue. It was accepting .aspx files as well. Turns out ASP was not installed on that server, and that is different from aspx. Installed ASP and enabled the 32bit applications under the Advanced Settings for the Application pool and it worked! Thanks for creating this!
Glad to hear that it’s working. I didn’t think of it at the time, but from what I understand “.asp” files are called “ASP Classic” sometimes, and are indeed different from .aspx files. It sounds like ASP classic may not be part of the default IIS install on newer versions of Windows.
hi,
Is the wallboard solution available for UCCX 10.5 and above?
I am more interested in the wallboard that provides multiple CSQs…
Sure, it works with UCCX 10. If you have any problems just let me know.
Sorry. Ignore that. I found the error by viewing the source and fixed it… Looks great!!
What was the problem? Maybe I could code something to keep that from happening to others.
Installing on Windows 7 64bit. All I get is a page with a purple “Here” which links to a Microsoft site “Running Classic ASP Applications on IIS 7 and IIS 8” If I turn on ASP “Send Errors to Browser” I just get a blank page. The db connection works. ASP seem to be working as I have a different Wallboard (written by our external support company) and this works. I wanted to try your one as it looks much better. Any ideas as to what I’m doing wrong?
Many Thanks
If you want to get the unsupported Agents stats working you need to edit line 913 in default.asp. It is doing some funny thing with the date and the code is slightly wrong. Replace line 913 with the below
EventHappenedDateTime = CDate(strArray(0) & ” ” & strArray(1))’ & ” ” & strArray(2))
As leadfoot advises this can cause high cpu issues so be careful using it.
Cheers
Loving this wallboard, fantastic work and thank you for sharing.
I’m trying to change the ‘longest wait time’ to the average wait time (avgWaitDuration in our DB) however it gives me a massive number and not in a time format. (44319 instead of 00:04:43)
Any ideas how I would get this working?
Many thanks and keep up the great work!
I would also like this feature, have you been able to solve it?
Does this wallboard work with CCX 10?
thanks
yes, it should work fine with uccx 10. I believe most of the people running into problems are trying to use the unsupported historical reports user. If you follow the install instructions and use the wallboard user to pull data you should be fine.