« Back to CTIOS Toolkit Questions

RE: New Message from Arthur Shats in Computer Telephony Integration Object

Combination View Flat View Tree View
Threads [ Previous | Next ]
Showing 61 - 80 of 87 results.
of 5
David,
In the agent desktop, I suppose I have to be logged in order to call GetAllSkillGroups(), so I added m_pCtiSession-->GetAllSkillGroups()  in the OnSkillGroupStatisticsUpdated event (but I am calling it only once). However, it returned duplicate groups, such as this:
(skillgroup.5022.3657.0:skillgroup.5022.3657.0 skillgroup.5022.915.0:skillgroup.5022.915.0)  where 3657 and 915 are my skillGroups. But why do they appear twice?
Thanks.

I do not know. Do they have different priorities? Is there anything else different about the duplicate Skillgroup objects?

1. Priorities were 0 for all groups when we were on 7.5(6); now we upgraded to 7.5(10) and DumpArgs don't display priorities anymore, so I assume they are still 0. I don't see any difference between the groups besides the difference in IDs.
2. Also, I notice that GetAllSkillGroups() returns all 7 groups I am setup for; then I logout/disconnect/exit the app and start over and this time GetAllSkillGroups() returns only 2 groups; then I exit out and start over the app again and it returns only 1 group.  Why does it behave like that?
3. Another thing: maybe in VB, GetAllSkillGroups() returns array of skillgroups like you said, but according to the docs, in C++ and Java/.NET, it returns an array of Arguments, so I can't simply take the length of it like in VB. 
4. And the last observation: I see that in 7.5(10) the array that holds skillgroup statistics is called 'Stats', not 'Statistics' as in 7.5(1) or 7.5.(6); also the names of the the variables in that array changed as well, 'AgentsLoggedOn' in 7.5(6) became 'AGsLogdOn' in 7.5(10).  I noticed this when I was doing DumpArgs. Is this change just for displaying purposes? My code still refers to 'Statistics' and to 'AgentsLoggedOn', but I am running 7.5(10). All seems to work fine, but I am curious if I should change the naming in my code?
Thanks.

1. What happens when you display the skillgroups in the CTIOS Agent Desktop?

2. The GetAllSkillGroups returns the skillgroups that it has seen in onskillgroupupsdated events. Are you enabling skillstats on all the skills?

3. Use the numElements method of the Arguments array

4. DumpArgs was modified to assist with reducing the size of CTIOS Server and Client logs so yes it is just for displaying purposes. In fact, you cant use DumpArgs on an array of callvariables unless you have the tracing set high enough. This information is in the CTIOS 9.0 Developer’s Guide secton on Logging and states:
For CTIOS server versions 7.5(10), 8.0(3) and later the default trace level will not print the call variable in
CTIOS sever logs. This has been done as an enhancement to reduce the log size in these two versions and

1. above. To get the call variable in CTIOS logs you need to set the trace level to 0x400000.

David,
I am enabling stats for all skillgroups. Using numElements did return the number of skillGroups even though when I print out the groups, they appear to be duplicated. However this total number may be different every time I start the C++Phone app (if I am lucky, I may get the correct total number from the 1st time, but most of the time I am not lucky). I noticed that on the CTIOS Agent Desktop, the list of skil groups doesn't appear at once, there is some delay and I see only few groups appear at first, then I wait a bit, then few more appear until all are displayed. I don't know why such a delay, but it means I have to call GetAllSkillGroups more than once, so I put the call into OnSkillGroupStatisticsUpdated event and now it's going to be called every time for every skillGroup which is not efficient.
Another problem is when I call .Release() after calling GetAllSkillGroups, it gives me a reference count of 2 and since I am callling it for every skill group, the reference count keeps growing by 1 every time OnSkillGorupStatisticsUpdated event is executed. Here is the code:
Arguments &groups = Arguments::CreateInstance();
groups = m_pCtiSesson->GetAllSkillGroups();
int totalGroups = groups.NumElements();
unsigned long errCode = groups.Release();
If I call errCode=groups.Release() 3 times so it returns 0, the app crashes when onSkillGroupStatisticsUpdated event is executed 2nd time. It seems to crash on the line groups=m_pCtiSession->GetAllSkillGroups().  Looks like .Release() affects something it shouldn't because calling it once or none at all, doesn't make the app crash.
Any thoughts about all this?
Thanks.

Try calling the GetSkillGroups from the agent object rather than the GetAllSkillGroups from the session object. From the CTIOS Developer’s guide section on Agent object GetSkillGroups:

“If skillgroupstats is enabled, the GetSkillGroups method allows a client to retrieve a list that contains references
to all the skill group objects to which the agent belongs. To retrieve skill groups enable skill group statistics,
and turn off agent event minimization by setting its value to 0 on the CTI OS server in the registry key, for
example:
HKLM\SOFTWARE\Cisco
Systems,Inc.\Ctios\<Customer-Instancename>\CTIOS1\Server\Agent\MinimizeAgentStateEvents
The skill group information is available on the agent state change event if the minimization is turned off.”

There is a C++ sample under GetSkillGroups in the developer’s guide.

David,
In the 7.5(1) guide I read that To retrieve skill groups WITHOUT enabling skill group statistics, turn off agent event minimization by setting its value to 0 on the CTIOS server in the registry key. I DO enable skill group statistics, so I don't have to make changes on the server. Am I reading it right? 

The latest documentation says both.

David,
If I print out rArgumens in OnConnection Event, the EvtTime parameter displays, I assume, a number of seconds of some sort. What's the starting point for the count of seconds? I am actually looking for a way to convert this time to a readable format.
Thanks,
Arthur. 
 

Since it is time of day it is the number of seconds since midnight.

David,
I connected around 10am EST, so the EvtTime should show a number around 36000, but it shows 18629898.

The time is in milliseconds not seconds. The evttime for 10am would be 36,000,000 18,692,898 would be around 5am I think. Is your server set to EST?

Thanks David.  Miliseconds makes sence now.

David,
Is it a problem if  EnableSkillGroupStatistics is called more than once? I call it from OnQueryAgentStateConf handler and notice that this handler is executed more than once and hence would be the call to EnableSkillGroupStatistics. Would calling EnableSkillGroupStatistics more than once cause any problems?
thanks,
Arthur.

I am not aware of any issue calling the request more than once, but maybe you should place the request somewhere where it will be called once.

David,
I am running C++Phone sample application. When connection failure occurs, it automatically reconnects to a backup server, but I don't think the agent is re-logged in. I believe you mentioned somewhere that reconnection is configured by default and I don't have to do anything in the code to insure this kind of failover happens. But what if I want the app to re-login after failover? Would setting CTIOS_AUTOLOGIN to 1 for the agent object inside OnLogin() event insure re-login happens after failover? 
Thanks,
Arthur.

Yes, See Chapter 4 of the CTIOS Developer Guide section on Configuring the Agent to Automatically Log In after Failover:

If you are using CTI OS in an Unified Contact Center Enterprise (Unified CCE) environment, you can
configure the agent to automatically relogin in the event of a failover.
To configure the agent to log back in automatically, add the CTIOS_AUTOLOGIN keyword with the
value “1” to the Arguments instance used to configure the agent:
rArgs.SetValue(CtiOs_IKeywordIDs.CTIOS_AUTOLOGIN, “1”);

David,
I am using C++Phone sample which is an Agent Desktop app. I believe it's been mentioned that in the Agent Desktop in order to get skillGroupStatistics, the agent needs to be logged in. However, in the event of failover, the agent is not relogged in, but I am still getting the statistics. How do you explain this?
Thanks.

It would appear the statistics EnableSkillGroupStatistics request is cached between CTIOS Servers.

Here is a bit more info. I have to say that I call EnableSkillGroupStatistics inside OnQueryAgentStateConf event which is triggered at some point after server fails over. But since the app isn't getting logged in after failing over, the call to EnableSkillGroupStatistics doesn't do anything, so the fact that I still get stats after failover is (as you said) because of cashing. Right?
Thanks.
 

Showing 61 - 80 of 87 results.
of 5
David Lender (467)
Shannon McCoy (91)
Arthur Shats (57)
Christopher Nagel (47)
GEOFFREY THOMPSON (38)