" /> Reporting on outbound calls within specific agent group - Genesys CTI User Forum

Author Topic: Reporting on outbound calls within specific agent group  (Read 5134 times)

Adam_W

  • Guest
Reporting on outbound calls within specific agent group
« on: May 13, 2008, 11:49:03 AM »
Advertisement
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?

svsergey

  • Guest
Re: Reporting on outbound calls within specific agent group
« Reply #1 on: May 13, 2008, 10:04:39 PM »
  • Best Answer
  • 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.

    Adam_W

    • Guest
    Re: Reporting on outbound calls within specific agent group
    « Reply #2 on: May 14, 2008, 01:29:49 PM »
  • Best Answer
  • 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!

    svsergey

    • Guest
    Re: Reporting on outbound calls within specific agent group
    « Reply #3 on: May 15, 2008, 11:33:44 PM »
  • Best Answer
  • 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.


    Adam_W

    • Guest
    Re: Reporting on outbound calls within specific agent group
    « Reply #4 on: May 16, 2008, 10:23:24 AM »
  • Best Answer
  • That works perfectly, absolutely brilliant thank you!