PureConnect

 View Only

Discussion Thread View
  • 1.  Addins in the .Net client

    Posted 09-09-2011 07:07
    Hi, Does anyone have any experience using the ININ.InteractionClient.AddIn Namespace? I have implemented the samples given in the documentation, but would like to hear from any of you who have done more complex coding with addins. Maybe you can answer some of my questions: - How can we combine the functionality from "QueueMonitor" and "AddInWindow". Ie if I want an incoming call to trigger on InteractionAdded, and have Interaction details displayed in an addin page. Probably this is a question regarding programming technics, but still.. - Is it possible to combine AddIn with IceLib, or do we need IceLib? I would love to see a more complex sample on how to use AddIns, and I appreciate any comments helping me understand the concept of AddIns in cic. Regards Mari


  • 2.  RE: Addins in the .Net client

    This message was posted by a user wishing to remain anonymous
    Posted 09-22-2011 15:32
    I can help explain some more advanced scenarios with the Add-In API. The Add-In API is designed around two primary ways of using it: 1. Low level "access to everything" interfaces to use all nitty-gritty bits of the API itself. The add-in developer is responsible for hooking everything up, etc. 2. Scenario-based usages: this is where the abstract base class helpers come into play. QueueMonitor and AddInWindow are two examples of that. Each one focuses on a scenario (monitoring a queue, or adding a window) and does some of the add-in API grunt work needed so that the add-in developer only has to override a few methods and can focus on implementing their own logic. That said, for your specific questions: If you want to do a client window that shows interaction details, then you aren't going to be able to take advantage of the QueueMonitor and AddInWindow helper classes. You're going to have to create a class that implements the IAddIn interface and then uses the IQueueService to retrieve an IQueue instance, as well as uses IWindowManager to register an IWindow implementation, and hooks all of that up together so that all the relevant components know how to talk to each other appropriately. That said, we do have an SCR to add helpers for this particular scenario since it has come up more than once. We also have an SCR to add an add-in API to allow access to retrieve the currently selected interaction in the "My Interactions" view, so that you could (for example) add a custom window that displays information about the currently selected interaction and the user could then select new interactions to view information about them. Both of these SCRs have a lower priority currently due to the efforts underway to get our new release out, but they do exist. As for combining Add-Ins with IceLib, I mentioned it in a reply to another post, but yes, this is possible if your server has the IceLib SDK license applied to it. If it does, you can retrieve the client's IceLib Session instance and use it. But this comes with a huge warning: there can be undefined behavior as a result. If you disconnect the session, the client will disconnect from the server. This is a very low level and invasive thing, so use it with care. There are other scenarios also where undefined behavior can occur due to internal design decisions/tradeoffs in the client itself. The rule of thumb regarding using the Session is this: if there is an Add-In API to do what you want (queue monitor, interaction watch, etc.) then use the Add-In API. If there isn't an API for it, you can use the IceLib Session. (For example, changing the user's status, sending custom notifications, etc.) Also, when you deploy your add-in, ensure that only your add-in specific binaries are installed in the client's "addins" subdirectory. We've tried to protect against it but there are some cases where including "duplicate" binaries (like ININ.IceLib.dll, for example) can cause odd behavior due to how .NET identifies and loads assemblies. Hopefully that helps, I would very much like to produce some screencasts to demonstrate some more advanced scenarios, but time for that has been in short supply lately. I'm hoping to get more done in this area after our next release is finished.


  • 3.  RE: Addins in the .Net client

    Posted 09-23-2011 13:36
    Originally posted by alerch;23468
    I can help explain some more advanced scenarios with the Add-In API. The Add-In API is designed around two primary ways of using it: 1. Low level "access to everything" interfaces to use all nitty-gritty bits of the API itself. The add-in developer is responsible for hooking everything up, etc. 2. Scenario-based usages: this is where the abstract base class helpers come into play. QueueMonitor and AddInWindow are two examples of that. Each one focuses on a scenario (monitoring a queue, or adding a window) and does some of the add-in API grunt work needed so that the add-in developer only has to override a few methods and can focus on implementing their own logic. That said, for your specific questions: If you want to do a client window that shows interaction details, then you aren't going to be able to take advantage of the QueueMonitor and AddInWindow helper classes. You're going to have to create a class that implements the IAddIn interface and then uses the IQueueService to retrieve an IQueue instance, as well as uses IWindowManager to register an IWindow implementation, and hooks all of that up together so that all the relevant components know how to talk to each other appropriately. That said, we do have an SCR to add helpers for this particular scenario since it has come up more than once. We also have an SCR to add an add-in API to allow access to retrieve the currently selected interaction in the "My Interactions" view, so that you could (for example) add a custom window that displays information about the currently selected interaction and the user could then select new interactions to view information about them. Both of these SCRs have a lower priority currently due to the efforts underway to get our new release out, but they do exist. As for combining Add-Ins with IceLib, I mentioned it in a reply to another post, but yes, this is possible if your server has the IceLib SDK license applied to it. If it does, you can retrieve the client's IceLib Session instance and use it. But this comes with a huge warning: there can be undefined behavior as a result. If you disconnect the session, the client will disconnect from the server. This is a very low level and invasive thing, so use it with care. There are other scenarios also where undefined behavior can occur due to internal design decisions/tradeoffs in the client itself. The rule of thumb regarding using the Session is this: if there is an Add-In API to do what you want (queue monitor, interaction watch, etc.) then use the Add-In API. If there isn't an API for it, you can use the IceLib Session. (For example, changing the user's status, sending custom notifications, etc.) Also, when you deploy your add-in, ensure that only your add-in specific binaries are installed in the client's "addins" subdirectory. We've tried to protect against it but there are some cases where including "duplicate" binaries (like ININ.IceLib.dll, for example) can cause odd behavior due to how .NET identifies and loads assemblies. Hopefully that helps, I would very much like to produce some screencasts to demonstrate some more advanced scenarios, but time for that has been in short supply lately. I'm hoping to get more done in this area after our next release is finished.
    Really interesting discussion. Thanks, Aaron. By the way, where can i find the list (and functional description) of the different types of currently supported Client.NET services that can be retrieved by the add-in serviceProvider class, through its GetService method?


  • 4.  RE: Addins in the .Net client

    This message was posted by a user wishing to remain anonymous
    Posted 09-23-2011 13:49
    Currently this is your best bet for more information: http://blog.inin.com/tech/so-what-can-i-do-with-an-interaction-client-add-in/ Notice that in a comment on that post I pointed someone to the Technical Reference document, which I would recommend here as well. You can find it in the online documentation library: https://my.inin.com/support/products/ic30/Documentation/mergedProjects/wh_tr/interaction_client_programmable_add-in.htm (I think that link should work, after logging in.)


  • 5.  RE: Addins in the .Net client

    Posted 09-23-2011 14:20
    I think there is also a .chm file with the complete Client Add-IN API reference, but i cannot find it in the ININ Website. Any chance for you to post here the direct link, or, if it isn't there, upload it here? Thanks in advance


  • 6.  RE: Addins in the .Net client

    This message was posted by a user wishing to remain anonymous
    Posted 09-23-2011 15:13
    The ININ.InteractionClient.AddIn.chm file should be installed with the Interaction Client and found in (typically) c:\prog files\Interactive Intelligence\ICUserApps But, there was an install issue with that preventing it from being included, and I don't recall what SU it was fixed in - so if it's not there, it might just be that bug and a newer SU will include it. (Sorry about that!)


Need Help finding something?

Check out the Genesys Knowledge Network - your all-in-one access point for Genesys resources