Author Topic: Some Useful Genesys Configuration Database PL/SQL Scripts...  (Read 22308 times)

Adam G

  • Guest
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #15 on: April 29, 2016, 11:45:14 AM »
...not really what we are trying to achieve, here.  These are scripts which extracts different levels of detail from the configuration layer - not routing.... I think you might need to look at the reporting tools more closely...

Offline cavagnaro

  • Administrator
  • Hero Member
  • *****
  • Posts: 7640
  • Karma: 56330
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #16 on: April 29, 2016, 12:11:27 PM »
[quote author=adamgill link=topic=9136.msg41958#msg41958 date=1452938578]
Does anyone have a cfg plsql script that might extract the UDATA/SDATA KVP's, as used in Routing Strategies?  Or, as I suspect, do they only exist between the Strategy/Sub-Routing and the URS?

Thanks!
[/quote]
Udata is not stored on DB Adam. What do exactly wanna achieve?

Enviado de meu E6633 usando Tapatalk


Adam G

  • Guest
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #17 on: April 29, 2016, 12:22:56 PM »
...a very old reporting problem, cav;

Which Skill and Skill Level was actually used in the Routing, to deliver the Call to the Agent.

I know it should be indicated by the Routing/(V)Q which is in use - but when you start using Groups things get a little... "hazy".  Was wondering if anyone had found a definitive way to determine something like;

Timestamp | ConnID | Target (Original/Required) Skill/Level | Skill/Level actually used to Route Caller | Target Agent

The idea is to be able to report on the effectiveness of the Routing to use Skill and Skill Levels more effectively.  Not sure if it already exists, though - or whether it is achievable?

Thanks!

Offline nonny

  • Full Member
  • ***
  • Posts: 218
  • Karma: 2
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #18 on: April 30, 2016, 07:45:51 AM »
Possibly reporting on VAGs in GIM then filter by VQ?

Sent from my SM-N9005 using Tapatalk


Offline hsujdik

  • Hero Member
  • *****
  • Posts: 541
  • Karma: 30
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #19 on: April 30, 2016, 01:06:05 PM »
Yeah you can get this in GIM if report_targets is set to true on URS.

On cfg db, only the compiled strategy is saved on cfg_flex_prop as binary, so you cannot get from there :(

Offline siralos

  • Newbie
  • *
  • Posts: 10
  • Karma: 1
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #20 on: April 30, 2016, 04:00:33 PM »
Some more SQL script stuff. Both should work for MSSQL and Oracle.

[code]-- all installed applications (except GUIs) and their parameters and autostart options
SELECT
cfg_host.name AS "Host",
cfg_host.ip_address AS "IP",
cfg_application.name AS "App",
cfg_app_tenant.tenant_dbid AS "Tenant",
cfg_application.version AS "Version",
cfg_server.port AS "Port",
cfg_application.work_directory AS "Path",
cfg_application.command_line AS "Command Line",
cfg_application.cmd_line_args AS "Arguments",
CASE cfg_application.auto_restart
WHEN 1 THEN 'no'
WHEN 2 THEN 'yes'
ELSE 'unknown'
END AS "Auto-Restart",
cfg_application.startup_timeout AS "Startup Timeout",
CASE (
SELECT LOWER (prop_value)
FROM cfg_flex_prop
WHERE prop_name = 'autostart'
and object_dbid = cfg_application.dbid
and object_type = 9) -- CfgObjectType Application
WHEN 'true' THEN 'true'
WHEN 'false' THEN 'false'
ELSE 'null'
END AS "autostart"
FROM cfg_application
INNER JOIN cfg_app_tenant ON cfg_application.dbid = cfg_app_tenant.app_dbid
INNER JOIN cfg_server ON cfg_application.dbid = cfg_server.app_dbid
INNER JOIN cfg_host ON cfg_server.host_dbid = cfg_host.dbid
-- WHERE cfg_application.type != 8 -- Optional to omit DAPs
ORDER BY "Host", "APP"
[/code]

The next one is not from me (found it either somewhere here  ;D ) or on Genesys Knowledge Base

[code]-- all applications and their connections with ADDP parameters
SELECT
hst.name AS "Host",
appfrom.name AS "Application",
appto.name AS "Connects To",
con.conn_protocol AS "Protocol",
con.timout_local AS "Local T/O",
con.timout_remote AS "Remote T/O",
lc.lc_value AS "Trace Mode"
FROM cfg_application appfrom
INNER JOIN cfg_app_server con
ON appfrom.dbid = con.app_dbid
INNER JOIN cfg_application appto
ON con.app_server_dbid = appto.dbid
INNER JOIN cfg_server srv
ON srv.app_dbid = appfrom.dbid
INNER JOIN cfg_host hst
ON srv.host_dbid = hst.dbid
INNER JOIN cfg_locale lc
ON con.mode_ = lc.lc_subtype
WHERE
lc.lc_class = 8
AND lc.lc_type = 30
ORDER BY hst.name, appfrom.name, appto.name
[/code]

Offline hsujdik

  • Hero Member
  • *****
  • Posts: 541
  • Karma: 30
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #21 on: May 02, 2016, 02:49:24 AM »
[quote author=adamgill link=topic=9136.msg43187#msg43187 date=1461932576]
...a very old reporting problem, cav;

Which Skill and Skill Level was actually used in the Routing, to deliver the Call to the Agent.

I know it should be indicated by the Routing/(V)Q which is in use - but when you start using Groups things get a little... "hazy".  Was wondering if anyone had found a definitive way to determine something like;

Timestamp | ConnID | Target (Original/Required) Skill/Level | Skill/Level actually used to Route Caller | Target Agent

The idea is to be able to report on the effectiveness of the Routing to use Skill and Skill Levels more effectively.  Not sure if it already exists, though - or whether it is achievable?

Thanks!
[/quote]



maybe you can start from here, assuming a properly configured Info Mart (works on Oracle, might need some changes for connid and timestamps in sqlserver):



[code]
select

to_char(to_date('19700101', 'yyyymmdd') + msf.end_ts / 86400 + cast(dt.label_tz as number)/24,'yyyy-mm-dd hh24:mi:ss') as route_time,
to_char(to_date('19700101', 'yyyymmdd') + msf.end_ts / 86400,'yyyy-mm-dd hh24:mi:ss') as route_time_gmt,
vq.resource_name as virtual_queue,
lpad(trim(to_char(i.media_server_ixn_id, 'XXXXXXXXXXXXXXXX')),16,'0') as connid,
rt.SKILL_EXPRESSION as skill_expression,
ag.resource_name as agent_username,
ag.employee_id as agent_employee_id

from mediation_segment_fact msf
inner join resource_ vq on vq.resource_key = msf.resource_key
inner join interaction_resource_fact irf on irf.interaction_resource_id = msf.TARGET_IXN_RESOURCE_ID
inner join strategy s on s.strategy_key = irf.strategy_key
inner join date_time dt on dt.date_time_key = msf.start_date_time_key
inner join technical_descriptor td on td.technical_descriptor_key = msf.technical_descriptor_key
inner join ROUTING_TARGET rt on rt.ROUTING_TARGET_KEY = irf.routing_target_key
inner join interaction_fact i on i.interaction_id = msf.interaction_id
inner join resource_ ag on ag.resource_key = irf.resource_key

where dt.label_yyyy_mm_dd = '2016-05-01'
and td.technical_result_code = 'DIVERTED'
and td.result_reason_code = 'ANSWEREDBYAGENT'
[/code]

Adam G

  • Guest
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #22 on: May 04, 2016, 02:14:32 AM »
Thank you - I will give this a try.//

To put some context around this;

A lot of complex Routing can get a bit messy and, sometimes, it's a good idea to try and find out exactly which Skill/Level the URS used (in the end) on which to base the route for the call.  It's also very useful to troubleshoot your Routing Strategies and Sub-Routines and compare them with actual results.

I knew it would be possible in GI2 but I never got around to finding a definitive answer - I'm hoping this is it!

Thanks again!

Adam G

  • Guest
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #23 on: May 05, 2016, 11:06:01 AM »
....I think this also belongs here - it's not 100% accurate, but better than nothing for attempting an "offline" conversion between DB Scripting languages (Oracle<>SQL Server):

[url=http://www.sqlines.com/online]http://www.sqlines.com/online[/url]


Adam G

  • Guest
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #24 on: May 05, 2016, 12:06:28 PM »
[b]Yes! [/b] With a little tweaking for SQL Server - and the removal of the provided date constraints, this returns all of the routing/vq/skill/level information, per interaction, for everything on record;

[color=blue][font=times new roman]select

dateadd(s, dt.DATE_TIME_KEY, '19700101') as effective_date_timeslice,
vq.resource_name as virtual_queue_used,
rt.SKILL_EXPRESSION as skill_and_skill_level_used,
ag.resource_name as target_agent_username,
ag.employee_id as target_agent_id

from mediation_segment_fact msf
inner join resource_ vq on vq.resource_key = msf.resource_key
inner join interaction_resource_fact irf on irf.interaction_resource_id = msf.TARGET_IXN_RESOURCE_ID
inner join strategy s on s.strategy_key = irf.strategy_key
inner join date_time dt on dt.date_time_key = msf.start_date_time_key
inner join technical_descriptor td on td.technical_descriptor_key = msf.technical_descriptor_key
inner join ROUTING_TARGET rt on rt.ROUTING_TARGET_KEY = irf.routing_target_key
inner join interaction_fact i on i.interaction_id = msf.interaction_id
inner join resource_ ag on ag.resource_key = irf.resource_key

where td.technical_result_code = 'DIVERTED'
and td.result_reason_code = 'ANSWEREDBYAGENT'[/font][/color]

This is getting [i]really [/i]interesting... (sad? lol) I see this as "Part 2" of 3 Parts;

For each ConnID:
Part 1 = What did the customer ask for?  Answer = collect digits/decode from the IVR
Part 2 = What did the routing do? Answer = collect Skill/Level data from URS
Part 3 = What did the agent confirm? Answer = collect data from DispositionCode/ReasonCode/Softphone/ACW

In this way, it would be possible to check the [i]business and operational effectiveness[/i] of all of the (voice) routing, end-to-end.  And I've not seen that done before....

Is anyone else keeping up with me...? :)

Marked as best answer by on Today at 05:17:02 PM

Offline hsujdik

  • Hero Member
  • *****
  • Posts: 541
  • Karma: 30
Good :)

The date constraint was intentional, because I am used to work with very large GIM databases, so if you don't filter those, well... that's a looot of wait time and processing on the DBMS.

Note that the requested skills is only possible to extract on GIM when a target to the call is actually selected. This, because URS attach some RTarget* user data just before it issues a RequestRouteCall to T-Server/SIP Server when the option default\report_targets is set to true on URS.

So, to avoid taking wrong data (e.g. calls that Agent did not answer the call, got back to the strategy and then was abandoned), I filtered that query to only get the calls that have been effectively answerer (result_reason_code = 'ANSWEREDBYAGENT').

For Part 1, depending on the details, I would think the best way would be to get some reports from Reporting Server on Genesys Administrator [Extension].
For Part 3, maybe a StatServer view with filters could help.

It is also possible to take both information on GIM, given the proper configuration and some tweaking.


IMPORTANT: don't get too close to GIM. It eats people alive!

Adam G

  • Guest
Re: Some Useful Genesys Configuration Database PL/SQL Scripts...
« Reply #26 on: May 05, 2016, 01:40:35 PM »
lol - I have been swimming in CCA and GIM data for quite some time.... I know what you mean.... ;)