" /> Reading an rbn file - Genesys CTI User Forum

Author Topic: Reading an rbn file  (Read 10373 times)

Offline elwan

  • Newbie
  • *
  • Posts: 49
  • Karma: 0
Reading an rbn file
« on: December 07, 2006, 05:45:54 AM »
Advertisement
Hi all,
I'm just new with Genesys, so please bear with me.
Is it possible to read an rbn file outside genesys. I would like to create an application using VB.net to display certain variables in the subroutine, in a very user friendly screen. This application would be use by non technical people.
Thanks heaps.

Koki

  • Guest
Re: Reading an rbn file
« Reply #1 on: December 07, 2006, 10:28:05 AM »
Hello, Elwan!
Thank you for your post.  :) I do not think that anyone has tried to do it before because Genesys strategies are stored in rbn files and its binary form is stored in Configuration Database under Scripts folder. Even if you manage to access variables inside rbn files you will still need means of compiling the strategy and storing it in CME.

Can you please tell me why you want to develop a program like this?

Offline Haldane

  • Jr. Member
  • **
  • Posts: 72
  • Karma: 1
Re: Reading an rbn file
« Reply #2 on: December 07, 2006, 03:17:03 PM »
Elwlan,
    I remember in 5.1 you could link visio docs to the annex tabs of scrips and pull out varialble names and values but this has changed since 6.0. I don't think there is anyway to access the rbn.... not that I've tried...Ask nicely to Genesys for the uncompiler  ;)

Offline elwan

  • Newbie
  • *
  • Posts: 49
  • Karma: 0
Re: Reading an rbn file
« Reply #3 on: December 07, 2006, 11:17:29 PM »
Thanks Koki for your response. The rbn file that I want to read out is a subroutine that contains operational hours of all our centres. It contains variables for different call types and centres and its corresponding operational hours. My manager wants me to create an application that would read out this file and tell the operational hours of all the centres and present it in a very user friendly format viewable to all who manages the center's resources. And this application would also error codes specific for each call type.
Any idea of how I would be doing this? I'm just new to Genesys applications, and i'm having a very steep learning curve on this one. I just started on this new job a few weeks ago and my background is purely software/report development.


[quote author=Koki link=topic=1941.msg6471#msg6471 date=1165487285]
Hello, Elwan!
Thank you for your post.  :) I do not think that anyone has tried to do it before because Genesys strategies are stored in rbn files and its binary form is stored in Configuration Database under Scripts folder. Even if you manage to access variables inside rbn files you will still need means of compiling the strategy and storing it in CME.

Can you please tell me why you want to develop a program like this?
[/quote]

Offline Kevin S

  • Full Member
  • ***
  • Posts: 145
  • Karma: 4
Re: Reading an rbn file
« Reply #4 on: December 08, 2006, 12:49:33 AM »
Elwan -
This solution will only work if your version of IRD is 7.0 or greater...

Lists are a feature in IRD 7.x that allow you to create Key-Value lists and to pull them into routing strategies. I suggest investigating these because:

1 - They are more dynamic than Attributes and Business Rules. If you make a change to a business rule or an attribute, you need to recompile/reload the strategy in order for the changes to be activated. Changes in a list are seen automatically. (This is beneficial if you add new service teams, or if the hours change).

2 - You should be able to query these using your VB client - with a little probing of the config server logs, you can determine what the tables/queries would be for your DBMS. I use these lists for dynamic routing, and use my queries to pull my lists into an Excel spreadsheet for review/pre-implementation archiving. Using Filters, I can then view the list(s) that I need.

3 - If you have a non-production environment that you develop in, then export and import your strategies into production, any strategy that explicitly specifies a list will also export and import the associated list values into the new environment.

Since you're looking at a query-only option, this may make the most sense, instead of trying to sift through an RBN file.

Please let me know if you have any questions on this.

Offline elwan

  • Newbie
  • *
  • Posts: 49
  • Karma: 0
Re: Reading an rbn file
« Reply #5 on: December 08, 2006, 03:43:03 AM »
Hi Kevin,
Thanks for this.  :) We are using IRD 7.1.
Would you be able to guide me through with this?
How would i know what to look for in the logs? what tables that the lists i have created in IRD would go into, etc?
???

Offline elwan

  • Newbie
  • *
  • Posts: 49
  • Karma: 0
Re: Reading an rbn file
« Reply #6 on: December 08, 2006, 04:08:14 AM »
Also, upto howmany records can a list contain? we have so many different calltypes and these calltypes would have different times for different days(M-F,Sat/Sun,Public holidays, etc)

Offline Kevin S

  • Full Member
  • ***
  • Posts: 145
  • Karma: 4
Re: Reading an rbn file
« Reply #7 on: December 08, 2006, 01:57:09 PM »
Theoretically, the list length is unlimited, since it is stored in the database.

The script (MS SQL) that I use to extract the data is (run against your configuration database):

/* Begin Script */
select t.name, c1.prop_name, c2.prop_name, c2.prop_value
from cfg_transaction t, cfg_flex_prop c1, cfg_flex_prop c2
where t.type = 21 and t.dbid = c1.object_dbid
and c2.object_type = 16
and c1.object_type = 16
and c1.dbid = c2.parent_dbid
/* End Script */

The List is created in the cfg_transaction table, and any of the Key-Value pairs are created in the cfg_flex_prop table.

I'm including a quick extract of part of one of our lists. Refer to attachments for how they appear in IRD:
The list comprises the "Major Category" - Business Hours, Service Teams, etc. In this case, "AfterHoursModel" is the list.
Underneath the list, you create a subcategory - in this case, "Participant_Core".
Finally, you create the Key Value pairs . In my example below, the HoursRule refers to a specific Business Rule within a subroutine. I still need to use a Segmentation object before I check the business rule (unfortunately), I can limit the Segmentation objects to only the Business Rules instead of the Teams [u]and[/u] the Business Rules. The ScriptName refers to a Voice Treatment script, and the VoiceID Keys refer to Voice Treatment prompts, by DBID.

AfterHoursModel Participant_Core Handling Hangup
AfterHoursModel Participant_Core HoursRule MF_0830_1900
AfterHoursModel Participant_Core ScriptName ParticipantAfterHours
AfterHoursModel Participant_Core ScriptTimeout 15
AfterHoursModel Participant_Core AfterHoursVoiceID 1032
AfterHoursModel Participant_Core GreetingVoiceID 1025
AfterHoursModel Participant_Core ClosingVoiceID 1026

I then have a list that has the "AfterHours" as a Key, and "Participant_Core" as the associated value. Using the list, I can have the same set of values assigned to multiple service teams, if desired.

If this doesn't quite click, feel free to send me your business hours routine, and I'll take a look at it. It did take me a few days and some guidance from another member of the forum to comprehend the power available.

Offline elwan

  • Newbie
  • *
  • Posts: 49
  • Karma: 0
Re: Reading an rbn file
« Reply #8 on: December 11, 2006, 05:24:05 AM »
Thanks Kevin for this. I really appreciate it.

I also found out that our group don't have access to the configuration  database server. But hopefully, we may request access to the server if it's read only. Until then, if I'm sure we can have a read access to the db server, i might send you an email to your yahoo account listed in here, if that's ok with you.

thanks again.

Offline Kevin S

  • Full Member
  • ***
  • Posts: 145
  • Karma: 4
Re: Reading an rbn file
« Reply #9 on: December 12, 2006, 09:40:16 PM »
elwan -
To run the script, you would only need read-only access to the database server itself, without any Genesys components (i.e. dbserver) involved. The lists objects themselves are accessable through IRD. Though I'm not sure of the details, it should be possible for your Genesys Administrator to grant you access to just the lists (or at minimum , read -only access).

Feel free to contact me at my e-mail as necessary.

URSMan

  • Guest
Re: Reading an rbn file
« Reply #10 on: December 13, 2006, 07:24:05 AM »
If you just want to access/change business hours I would suggest something much-much simpler -

use CME!

Yes, I know you think I am crazy, but this is true.

Here is a concept:

1. you will have two options inside URS, called 'start_time' and 'end_time' which will store start and closing times for your center
2. your strategy will be retrieving this option to control the call flow
3. SV's will be always able to change the times by going and logging into Configuration Manager and just changing the value there
4. you can use a simple SQL statement to do a DB dip into CME DB and retrieve the value of these options

The option you want to use in your strategy is pretty simple:

GetConfigOption['start_time',StartFromRouter] -> will return value stored in start_time under URS options in CME
GetConfigOption['stop_time',StartFromRouter] -> will return value stored in stop_time


Needless to say, you can create 'start_time_billing', 'start_time_claims', etc, for each callflow that needs to have its own open/close business hours.

And to retrieve the values for your application you either do a dip into CME db or even better - use Genesys Active X to login into Config Server and query the values directly. This will also fix your security concern regarding having access to CME DB.

Pretty nifty eh?

Both approaches should work. Kevin S approach is probably the simplest one and does not require too much planning, thus easy to implement.

My approach will allow you make your application part of Genesys environment but at the same time it will require some Genesys Active X-related programming.

Up to you! :D But either ones should work.





Offline elwan

  • Newbie
  • *
  • Posts: 49
  • Karma: 0
Re: Reading an rbn file
« Reply #11 on: December 19, 2006, 11:07:01 PM »
Hi URSMan,
We have too many routers so for each tenant, so I think the list objects approach would be easier to implement in this case... though I'm keen on using the ActiveX.... do you have some sample applications/code on how to use this ActiveX to read the configdb server?
we're still on the process of getting access to the configdb, which I think would take time to be granted(office politics & red tape)... :-[
thanks again...