Genesys CTI User Forum

Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: Adam_W on May 13, 2008, 11:49:03 AM

Title: Reporting on outbound calls within specific agent group
Post by: Adam_W on May 13, 2008, 11:49:03 AM
Having a bit of trouble with this one, hopefully someone may know of an answer!

I have a department which is split into 2 different agent groups for 2 separate job functions.  A couple of the members of this department work in both job roles, so they alternate between both agent groups on different days of the week.

Because they are 2 separate job roles, they have different performance targets.  The problem is that if you run a monthly agent report for the people concerned in CCPulse, it doesn't really care what group they logged into or what skills they had, it simply reports on that agent's activity for the month.

I've managed to get around this for things like inbound calls and changes in agent state because there are KV pairs which I could use to make filters.  Thing is, they want to report on numbers of outbound calls as well and I can't really see anything that could be used to make a filter - there is no information in the EventDialling or EventEstablished for outbound calls that relates to the group they are logged on to.

Is there any way of forcing something identifiable to be added to the TEvent so I can do this, or does anyone know an easier way around it?
Title: Re: Reporting on outbound calls within specific agent group
Post by: svsergey on May 13, 2008, 10:04:39 PM
Hello Adam_W!

In case Genesys Desktop is used you can customize it in order to add KV pair to all outbound calls in Dialing state. If you develop your own desktop application you can also do it. I think it is not possible to do something in case you use Gplus Adapter (SAP, Sieble, MS CRM, Peoplesoft).

With Best Wishes,
Sergey.
Title: Re: Reporting on outbound calls within specific agent group
Post by: Adam_W on May 14, 2008, 01:29:49 PM
Thanks Sergey

We do use Genesys Desktop so that could be an option.  I suppose the next question is how to customize it to insert a KV pair?  The ideal would be to add a KV Pair for each EventEstablished for calltype 3 (outbound), which showed the agent group of the agent making the call.

I've read over the Desktop developer documentation so I'm familiar with customizing the desktop but I am not clear on how to customize it in this particular way, so if anyone has any tips or knows any further documentation that might help, I'd love to hear about it!
Title: Re: Reporting on outbound calls within specific agent group
Post by: svsergey on May 15, 2008, 11:33:44 PM
Hello,

Something like this:

custom.xml file:
==========================================
<gcn-resources>
    <desktop>
        <javascript-onload>
            <![CDATA[
                document.forms.PlaceListener.elements.userName.value = userName;
                document.forms.PlaceListener.submit();
            ]]>
        </javascript-onload>
        <html-body>
            <![CDATA[
                <form name="PlaceListener" action="custom/PlaceListener.jsp" method="POST" target="PlaceListenerActionFrame">
                    <input name="userName" type="hidden">
                </form>
                <iframe name="PlaceListenerActionFrame" style="visibility: hidden;"></iframe>
            ]]>
        </html-body>
    </desktop>
</gcn-resources>
==========================================

PlaceListener.jsp file:
==========================================
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@ page import="com.genesyslab.ail.*" %>
<%@ page import="com.genesyslab.ail.event.*" %>
<%@ page import="com.genesyslab.ail.exception.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.servlet.http.HttpSessionBindingListener" %>

<%!
class Listener implements PlaceListener,HttpSessionBindingListener {
    protected Place place;
    protected AilFactory ailFactory;

    public Listener(String userName) {
        ailFactory = AilLoader.getAilFactory();
        place = ((Agent)ailFactory.getPerson(userName)).getPlace();
    }

    public void valueBound(HttpSessionBindingEvent event) {
        if (place!=null) {
            place.addPlaceListener(this);
        }
    }

    public void valueUnbound(HttpSessionBindingEvent event) {
        if (place!=null) {
            place.removePlaceListener(this);
        }
    }

    public void handleInteractionEvent(InteractionEvent event) {
        Interaction interaction = event.getInteraction();

        if (interaction.getType() == Interaction.Type.PHONE_CALL) {
            InteractionVoice intvoice = (InteractionVoice)interaction;

            if (event.getEventReason() == InteractionEvent.EventReason.ESTABLISHED) {
                Person person = ailFactory.getPerson(interaction.getUserName());
                if (person.isAgent()) {
                    Agent ag = (Agent) person;
                    Collection agentgrs = ag.getAgentGroups();
                    if ((agentgrs != null) && (agentgrs.size() > 0)) {
                        Iterator it = agentgrs.iterator();
                        AgentGroup agentgr = (AgentGroup) it.next();
                        try {
                            intvoice.setAttachedData(new String("key"),agentgr.getId());
                            intvoice.saveAttachedData();
                        } catch (Exception exception) {
                            System.out.println("Data cannot be attached: "+exception);
                        }
                    }
                }
            }
        }
    }

    public void handlePlaceEvent(PlaceEvent event) {}

    public void idModified(String newId) {}

    public void dnAdded(String dn) {}

    public void dnRemoved(String dn) {}

    public void handleDnEvent(DnEvent event) {}

    public void contactChanged(InteractionEvent event) {}

    public void deleted() {}
   
}
%>

<%
    session.setAttribute("placeListener", new Listener(request.getParameter("userName")));
    response.setStatus(HttpServletResponse.SC_NO_CONTENT);
%>
==========================================


Good luck!

WBW,
Sergey.

Title: Re: Reporting on outbound calls within specific agent group
Post by: Adam_W on May 16, 2008, 10:23:24 AM
That works perfectly, absolutely brilliant thank you!