Genesys CTI User Forum

Genesys CTI User Forum => Genesys-related Development => Topic started by: MJaskowski on November 18, 2018, 06:46:57 PM

Title: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on November 18, 2018, 06:46:57 PM
Hello,

I work on new tab in InteractionDetailsRegion.
I want achieve exactly the same tab like Disposition Code tab but with different Buisness Attribute.
I created new Business Attribute - Test1 with Attribute Values: Sample1, Sample2.

I need tab with all behavior based on Disposition Code tab, is any way to get it?
How should I start?
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on November 19, 2018, 12:20:33 PM
Anyone knows something about it?

I checked I think whole guide but no information there about similar situation :(
Generally tree view has been reproduced but I need add/update information to database and isMandatory option is necessary - these are the most important for me.

Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on November 20, 2018, 08:21:57 AM
Still I need help - maybe any signposts? Any ideas? Any tips?
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: Kubig on November 20, 2018, 11:27:49 AM
May be I do not understand your needs well, but if you want to achieve exactly the same as the disposition view provides, what is the reason for overwritting the code at all?
On other hand, you could develop your own view which will cover exactly your needs and wont't be based and depend on existing solution.
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: cavagnaro on November 20, 2018, 11:49:11 AM
[quote author=MJaskowski link=topic=11185.msg50928#msg50928 date=1542566817]

I want achieve exactly the same tab like Disposition Code tab but with different Buisness Attribute.


[/quote]


Wouldn't just be easier to send the new Disposition Code Business Attribute value by strategy?
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on November 20, 2018, 12:39:54 PM
Thank you for answers.

"May be I do not understand your needs well, but if you want to achieve exactly the same as the disposition view provides, what is the reason for overwritting the code at all?
On other hand, you could develop your own view which will cover exactly your needs and wont't be based and depend on existing solution."

I can't overwritting the code for Disposition Code view because is not available - I only have access to IDispositionCode, but I do not have everything what I need in this interface.
I don't have body for these methods.

"Wouldn't just be easier to send the new Disposition Code Business Attribute value by strategy?"

I have already sent this value, I have recreated the treeview in which my Business Attribute was placed.

[code]
          ICollection<CfgEnumeratorValue> readDataList = helper.GetDataFromObjectById(1304, CfgObjectType.CFGEnumerator);

          foreach (var row in readDataList)
                {
                    itemsToFillView.Add(new Class
                    {
                        Name = row.Name
                    });
                }

        treeView.ItemsSource = itemsToFillView;

        public ICollection<CfgEnumeratorValue> GetDataFromObjectById(int dbId, CfgObjectType cfgObjectType)
        {
            ConfServerProtocol confServerProtocol =
                new ConfServerProtocol(
                      new Endpoint(
                                  myUserName,
                                  myIP,
                                  anyPort));

            confServerProtocol.UserName = myUserName;
            confServerProtocol.UserPassword = "password";
            IProtocol protocol = confServerProtocol;
            protocol.Open();

            IConfService confService = ConfServiceFactory.CreateConfService(protocol);
            ICfgObject readObject = confService.RetrieveObject(dbId, cfgObjectType);


            CfgEnumeratorQuery cfgEnumeratorQuery = new CfgEnumeratorQuery(confService)
            {
                Dbid = readObject.ObjectDbid
            };

            CfgEnumerator cfgEnumerator = cfgEnumeratorQuery.ExecuteSingleResult();
            CfgEnumeratorValueQuery cfgEnumeratorValueQuery = new CfgEnumeratorValueQuery(confService)
            {
                EnumeratorDbid = cfgEnumerator.DBID
            };

            return cfgEnumeratorValueQuery.Execute();
        }
[/code]

But now I have to save these data and I need isMandatory option. That's mean if Agent doesn't select any item in treeView then he gets information/alert about it (orange window message).
I don't know how should I save this data - I read something about AttachedData but I'm not sure how it's work.

Maybe I will explain again more specifically what I mean.
I want to create bookmarks "Call status" and "Source of knowledge" - I will have Disposition Code, Call status and Source of knowledge tabs.
These windows should behave similarly to DispositionCode but with different input data.
Each agent before the end of a call must mandatory select one of the options in these tabs.

I wanted to refer to DispositionCode by copying its behavior - unfortunately I do not have access to this code.
Maybe I think badly and there is another way to solve this topic?


Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: cavagnaro on November 20, 2018, 02:08:30 PM
?? Just send the values selected as Attached Data. Then your Reporting interface will store them if you configure it to catch those KVP
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on November 20, 2018, 02:25:09 PM
[quote]
?? Just send the values selected as Attached Data. Then your Reporting interface will store them if you configure it to catch those KVP
[/quote]

And exactly I read about it but I can't find example of use - how can I call method "Attached Data" - which class handle this area? I cannot find any implementation in guide. Could you share with me this knowledge?
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: Kubig on November 20, 2018, 02:50:36 PM
Sorry, but I do not see any difference between your needs and benefits that standard (OOB) Disposition Code solution brings. What is the reason for not using the disposition code? Do not reinvent the wheel...
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MatSzafraniec on November 20, 2018, 04:24:59 PM
[quote author=Kubig link=topic=11185.msg50942#msg50942 date=1542725436]
Sorry, but I do not see any difference between your needs and benefits that standard (OOB) Disposition Code solution brings. What is the reason for not using the disposition code? Do not reinvent the wheel...
[/quote]

But how we can use standard OOB Disposition Code solution to handling our predefined business attributes?
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on November 20, 2018, 04:26:29 PM
Of course, I just want to use the benefits of DispositionCode, but I need to do it on 2 separate tabs, but still based on DC. And I do not know how to bite it - what class allows me to use this resource?
In general, I understand that it is possible to do something like this?
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: PeteHoyle on November 21, 2018, 12:13:18 PM
Have a look at the ExtensionSample that is provided with the WDE Samples, that has an example of how to implement your own DispositionCode View.

https://docs.genesys.com/Documentation/IW/8.5.1/Developer/AbouttheExtensionSamples
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on November 21, 2018, 01:44:26 PM
Thank you for answer.

I know this part of documentation - I created own view, I have treeview with binded own Business Attributes, that's working. But I need know how can I use it/handle it like DispositionCode tab. I mean how can I set isMandatory option, how can I save data to database when I selected some Business Attribute inside tab - these situation are unclear for me, I do not know which class allow me handle it.

Should I use delegate to DispositionCode class or maybe can I use any references? There is no information about it, no use example. That's why I'm asking about it.
Maybe someone created something similar? If something is incomprehensible or wrong explained, please give me information then I will try explain it in other words.

Regards,
Matt
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: Kubig on November 21, 2018, 01:55:17 PM
Just debug the chain (InteractionVoiceIfPossibleCloseInteraction) and find out what parameters are used and how they are filled.
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: cavagnaro on November 21, 2018, 02:19:12 PM
[quote author=MJaskowski link=topic=11185.msg50949#msg50949 date=1542807866]
Thank you for answer.

I know this part of documentation - I created own view, I have treeview with binded own Business Attributes, that's working. But I need know how can I use it/handle it like DispositionCode tab. I mean how can I set isMandatory option, how can I save data to database when I selected some Business Attribute inside tab - these situation are unclear for me, I do not know which class allow me handle it.

Should I use delegate to DispositionCode class or maybe can I use any references? There is no information about it, no use example. That's why I'm asking about it.
Maybe someone created something similar? If something is incomprehensible or wrong explained, please give me information then I will try explain it in other words.

Regards,
Matt
[/quote]


I think you need to understand how disposition code works in first place. You are creating scenarios in your head that simply doesn't exists. DC or WDE doesn't store anything to a DB, as I said before, there are other components who achieve this, say ICON or OCS. Depends on your needs.
Your DC only sends KVPs, then something else react! on these KVPs and store them for historical (ICON/GIR), report (CCA) or just store the value at a Calling List (OCS).


So, better understand how each Genesys component works and do with the DC KVPs.

Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on December 06, 2018, 03:04:12 PM
Thank you cavagnaro for reply,

Your comments were very useful - unfortunately still I have problem with use isMandatory option.
In case where we use DispositionCode tab, if you don't tick any position then you'll obtain orange alert "Disposition Code is mandatory value" ( or something similar ).
Can I achieve it for my own tab ( "own tab" I mean not DispositionCodeEx, only own with TreeView where I can select option from list )?

Regards
Matt
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: PeteHoyle on December 07, 2018, 10:06:29 AM
There are a few different ways you could do this, probably the easiest way is to create a custom command and add it to the BundleClose command

[code]container.Resolve<ICommandManager>().CommandsByName["BundleClose"].Insert(0, new CommandActivator() { CommandType = typeof(MarkDoneCustomCommand) });[/code]

Your custom command will be called when the Mark Done button is pressed.

In your custom command you then need to check if IsMandatory is enabled, if so you then need to check if there is a value set in your custom view, if not then return true and display a message, returning true mean that the BundleClose command does not continue..

[code]if(interaction.DispositionCode.IsMandatory)
{
if (!myCustomViewValueSet)
{
                //Display a message explaining that no value is selected in the custom view.
              //Return True means the chain of command will not continue
return true;
}
}
//return false and the chain of command will continue
return false;[/code]
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on December 17, 2018, 09:11:22 PM
Pete thank you for your help, that was it! :)

I suppose the last question is, can I get anywhere, any description of Style resources?

For example: I have DeleteDispositionButton, for this button we have style "vistaSmallButtonStyle".
e.g. Style="{DynamicResource vistaSmallButtonStyle}

Can I get somewhere list of styles for concrete controls?

Regards,
Matt
Title: Re: Create tab in InteractionDetailsRegion based on Disposition Code tab
Post by: MJaskowski on December 21, 2018, 10:59:55 AM
Any ideas?

Additionaly  I have trouble with one else situation. I try handle ApplicationClose command:

[code]
container.Resolve<ICommandManager>().CommandsByName["ApplicationClose"].Insert(0, new CommandActivator() { CommandType = typeof(ApplicationCloseCustomCommand) });
[/code]

Question is, how is implementing Interaction?

When I used
[code]
container.Resolve<ICommandManager>().CommandsByName["BundleClose"].Insert(0, new CommandActivator() { CommandType = typeof(MarkDoneCustomCommand) });
[/code]
inside MarkDoneCustomCommand I can use IIteraction interface, in ApplicationCloseCustomCommand I can't.
Body for both class is the same, exactly the same.

What determine Interaction?

Regards
Matt