Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Richarddb

Pages: 1 2 3 [4]
46
General Asterisk configuration / Re: Tracking an unpicked call
« on: March 11, 2010, 11:49:45 »
I'm still wondering where i can configure QM so that i can see the unpicked calls. Can i add somewhere the RINGNOANSWER verb, or put it active? Because i don't see them in the queuelog.

47
Thanks for your answer.

Some time ago i already changed the limit from 2000 to 5000 but yesterday an agent wasnt on the monitor after already 27 minutes, so he should be longer visible. I'll try to put it on 0, maybe it helps. I'll put the result later.

48
Hi,

Sometimes it happens (not always and not on a particulair time) that agents are calling for a while and suddenly dissapear from the realtime monitor, while they are still calling. Their status in QM changes into green (free) but in fact are still busy. How is this possible, and is there a way to fix this?

Thanks!

49
Scripting QueueMetrics / Re: Wallboard Example script
« on: March 02, 2010, 10:36:38 »
Which file should i replace with the script posted here to use the custom wallboard? Or should i add it to an excisting script (if yes, which?)

50
Running QueueMetrics / Re: Agent's couldn't get calls
« on: February 11, 2010, 14:41:59 »
In the queue_log there are no lines as 'autologoff', so it means it has another cause.. is there anything else to solve this?

51
Running QueueMetrics / Agent's couldn't get calls
« on: February 03, 2010, 09:54:27 »
Hello,

Yesterday at 13.34 there was a problem with Queuemetrics. There were two agents busy with a call and one agent was on pause. The other 12 agents were available at that moment, but still there were some callers on a waittime. It seemed that either the agents were automically put on pause or were logged off. On the realtime screen they were available but they didn't get calls, even not the ones who were waiting.
After logging the agents in again, they could answer the calls. This never happened before...

How is this possible? And what can i do about this?

Thanks for the help

52
Scripting QueueMetrics / Re: Custom Realtime View
« on: February 03, 2010, 09:04:17 »
That's clear, but where can i find / edit this XMI-RPC? Is this to create custom views?

53
Scripting QueueMetrics / Custom Realtime View
« on: January 28, 2010, 15:19:07 »
Hi,

I would like to change the view of our Real Time monitor. Now i have a few things i would like to change, but not sure how and where:

1) I want to delete the parts: title + time, querow and the buttons (all in the upper screen)
2) The links to export as buttons under the tables
3) Some culomns in tables

I see i can delete some things from realtime_view.jsp but the data in the tables i dont see there, where can i change/delete these values?
Also i would like to put two tables next to eachother instead of under, so we dont have to scroll down if the table is very long. How can i do this?

Anyone who can help me? The script of my realtime_view is like this:

Thanks already!

<%@ page language="java" %>
<%@ page import="it.loway.tpf.*" %>
<%@ page import="it.loway.tpf.common.containers.*" %>
<%@ page import="it.loway.tpf.common.debug.*" %>
<%@ page import="it.loway.tpf.common.interfaces.*" %>
<%@ page import="it.loway.tpf.common.exceptions.*" %>
<%@ page import="it.loway.tpf.presentation.html.*" %>
<%@ page import="it.loway.tpf.presentation.html.decorators.*" %>
<%@ page import="it.loway.app.queuemetrics.*" %>
<%@ page import="it.loway.app.queuemetrics.caricamento.*" %>
<%@ page import="it.loway.app.queuemetrics.caricamento.DataObjects.*" %>
<%@ page import="it.loway.app.queuemetrics.asterisk.logs.*" %>
<%@ page import="it.loway.app.queuemetrics.liveData.*" %>
<%@ page import="it.loway.app.queuemetrics.smartTableDecorators.realtime.*" %>
<%@ page import="java.text.*" %>

<%@ include file="../00_page_header.jsp" %>
<script src="../img/js/LTF-ddm.js"></script>
<%
    // $Id: realtime_view.jsp,v 1.33 2009/11/13 16:20:23 lenz-mobile Exp $

    // Instanzia Data  Object appropriato
    BasicDO doRT = new RealtimeDO();
    doRT.init( oC, oDec, oU );
    doRT.initWebHere( stWebHere );
   
    // inizializza Timer
    LTimer t = new LTimer();
    SmartTable T = null;
%>           

<div id="soundSpan" ></div>     

<script defer>         
function onLoadApplicativo() {
   // transazione standard
   document.forms[0].<%= K.REQ_VERBO %>.value = "";
   document.forms[0].<%= K.REQ_PARAM %>.value = "";
       
        playSoundIfAlarms();
        startCountdown( <%= oC.getI( "REALTIME_reload_time" ) %> * 2 );
        aggiungiEventoOnchangeAComboLocation();
       
}

var inCdown = 0;
var inCdownMax = 0;
function countdown() {
    inCdown=inCdown-1;
    VuMeter( '#F00', '#CCC', inCdown, inCdownMax );
    if ( inCdown < 1 ) {
        startTransaction( "qm_realtime", "" );
    } else {
        setTimeout( "countdown()", 500 );
    }
}

function startCountdown( max ) {
   inCdown = max-1;
   inCdownMax = max;
   VuMeter( '#F00', '#CCC', max, max );
   setTimeout( "countdown()", 500 );   
}

function VuMeter( stCss1, stCss2, nCounter, nMax ) {
   var myT = document.getElementById( "vmeter" );
   var rows = myT.rows;
   var cells = rows[0].cells;
   
   var nCells = cells.length;
   var last1  = (nCounter / nMax) * nCells;
      
   for ( var i = 0; i < cells.length; i++ ) {
      var cell = cells;
      if ( i < last1 ) {
         cell.style.background = stCss1;
      } else {
         cell.style.background = stCss2;
      }
   }
}

//
// per non incasinare i controlli, aggiungo l'onChange alla combo delle location
// in maniera programmatica
//

function aggiungiEventoOnchangeAComboLocation() {
    document.getElementById( "CODA_F_idLocation" ).onchange = OnChangeCboLocation;
}

function OnChangeCboLocation() {
    startTransaction('qm_realtime', '');
}
 
function openPopUpListen( stNumRiga, stServer, stDirezione ) {
    verb = "qm_popup_audiomon.do";
    unique = new Date().getTime();
    stUrl = verb + "?POPUP_agent=" + escape(stNumRiga) + "&POPUP_server=" + escape(stServer) + "&POPUP_direction=" + escape(stDirezione) + "&cachebreak=<%= U.getRandomString(9) %>" + unique;
    eval("page" + unique + " = window.open( stUrl, '" + unique + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=300,left = 490,top = 200');");
}

function openPopUpQA( agent, clid, tst, queue, caller ) {
    unique = new Date().getTime();
    stUrl = "qm_qa_popup.do?QAE_agent=" + escape(agent) + "&QAE_astclid=" + escape(clid) + "&QAE_call_tst=" + escape(tst) + "&QAE_queue=" + escape(queue) + "&QAE_caller=" + escape(caller) + "&QAE_comment=" + "&cachebreak=<%= U.getRandomString(9) %>" + unique;
    eval("page" + unique + " = window.open( stUrl, 'QA', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=650,height=700,left = 200,top = 200');");
}

//
//                      S U O N I    A L     C A R I C A M E N T O
//

function playSoundIfAlarms() {

        var stSoundYellow = "<%= oC.getS( "SOUND_URL_yellow" ) %>";
        var stSoundRed    = "<%= oC.getS( "SOUND_URL_red" ) %>";

        var soundChosen   = "";
   
   var inNumYellows = countCellsInClass( 'STRIASS', '<%= answerDecor.stYellowCssCellBackground %>' )
                    + countCellsInClass( 'CALLS', '<%= answerDecor.stYellowCssCellBackground %>' )
                    ;
                    
   var inNumReds    = countCellsInClass( 'STRIASS', '<%= answerDecor.stRedCssCellBackground %>' )
                    + countCellsInClass( 'CALLS', '<%= answerDecor.stRedCssCellBackground %>' )
                    ;

   if ( inNumReds > 0 ) {
      soundChosen = stSoundRed;
   } else
   if ( inNumYellows > 0 ) {
      soundChosen = stSoundYellow;
   };
   
   if ( soundChosen.length > 0 ) {
      document.getElementById("soundSpan").innerHTML= "<embed src='" + soundChosen + "' width='0' height='0' hidden=true autostart=true loop=false>";               
   }
   
}

function countCellsInClass( stTableId, stClass ) {   
   
   var n = 0;
   var i = 0;
   var j = 0;
   var table = document.getElementById( stTableId );   
   
   if ( !table ) {
      return 0;
   }
   
   for ( i = 0; i < table.rows.length; i++ ) {
      for ( j = 0; j < table.rows.cells.length; j++ ) {         
         myCell = table.rows.cells[j];
         if ( myCell.className ) {
            if ( myCell.className == stClass ) {
               n += 1;
            }
         }            
      }
   }      
   return n;
}

</script>

<h1><%= oDec.k("rt_realtime_call_center_monitoring") %> - <%= oC.getS( "REALTIME_dataOra" ) %></h1>

<%= oDec.k("rt_queues") %>
<%= oC.getS( "REALTIME_includedCodeName" ) %>
<p>

<%= oH.button( oDec.k("rt_reload_now") , oU.hasKey("REALTIME"), "", "qm_realtime", "" ) %>

<%= realtimeHelper.toggleButton( oH, oDec.k("rt_show_calls"), oDec.k("rt_hide_calls"),
                oU.hasKey("REALTIME") && oC.getS( "REALTIME_SHOWBTN_calls" ).equals("1"),
                "qm_realtime_toggles", "c", oC.getS( "REALTIME_toggle_calls" ) ) %>
               
<%= realtimeHelper.toggleButton( oH, oDec.k("rt_show_agents"), oDec.k("rt_hide_agents"),
                oU.hasKey("REALTIME") && oC.getS( "REALTIME_SHOWBTN_agents" ).equals("1"),
                "qm_realtime_toggles", "a", oC.getS( "REALTIME_toggle_agents" ) ) %>
               
<%= realtimeHelper.toggleButton( oH, oDec.k("rt_active_queues"), oDec.k("rt_all_queues"),
                oU.hasKey("REALTIME") && oC.getS( "REALTIME_SHOWBTN_showAllSubqueues" ).equals("1"),
                "qm_realtime_toggles", "q", oC.getS( "REALTIME_toggle_showAllSubqueues" ) ) %>
               
<%= realtimeHelper.toggleButton( oH, oDec.k("rt_show_any_agent"), oDec.k("rt_show_members_only"),
                oU.hasKey("REALTIME") && oC.getS( "REALTIME_SHOWBTN_memberagentsonly" ).equals("1"),
                "qm_realtime_toggles", "s", oC.getS( "REALTIME_toggle_memberagentsonly" ) ) %>

<%= oDec.k("rt_location") %> <%= oH.combo( "CODA_F_idLocation", true, "width: 150px;", oC.getLt( "DATI_locations_selectable" ), 0, 1, "" ) %>

<p>
<%
if ( oC.getI( "CODA_F_supervision" ) > 0  ) {
    out.println( oDec.k("clhdr_supervised_by") + oU.getRealName() + "<p>" );
}
%>

<%
    T = doRT.dispatch( RealtimeDO.RIASSUNTO_REALTIME );
    out.println(T.render());
%>

<%
    if ( !oC.defined( "CODA_rt_hideExportButtons" ) ) {
        out.print( doRT.exportButtons( RealtimeDO.THIS_DO, RealtimeDO.RIASSUNTO_REALTIME)  );
    }
%>
<% t.label( "OK: tabella iniziale " ); %>

<p>

<% if ( realtimeHelper.panelEnabled( oC.getS("REALTIME_toggle_calls") ) ) { %>

<b><%= oDec.k("rt_calls_being_processed") %></b>

<%
    T = doRT.dispatch( RealtimeDO.CALLS_BEING_PROC );
    out.println(T.render());
%>
<%
    if ( !oC.defined( "CODA_rt_hideExportButtons" ) ) {
        out.print( doRT.exportButtons( RealtimeDO.THIS_DO, RealtimeDO.CALLS_BEING_PROC) );
    }
%>

<% t.label( "OK: calls being procd " ); %>

<% }; %>
   
<p>

<% if ( realtimeHelper.panelEnabled( oC.getS("REALTIME_toggle_agents" )) ) { %>

<b><%= oDec.k("rt_agents_currently_logged_in") %></b>
<%
    T = doRT.dispatch( RealtimeDO.AGENTS_LOGGED_IN);
    out.println(T.render());
%>
<%
    if ( !oC.defined( "CODA_rt_hideExportButtons" ) ) {
        out.print( doRT.exportButtons( RealtimeDO.THIS_DO, RealtimeDO.AGENTS_LOGGED_IN )  );
    }
%>

<% t.label( "OK: agents logged in " ); %>

<% }; %>

<p>&nbsp; <p>

<center>
<small><%= oDec.k("rt_in_order_to_mantain_session_information") %></small>

<style>
.red {
   background-color: #EE0000;
   width: 5px;
}

.blk {
   background-color: #CCCCCC;
   width: 5px;
}
</style>

<table id="vmeter">
<tr>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>

<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>

<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>

<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
<td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td> <td class="blk">&nbsp;</td>
</tr>
</table>
</center>

54
General Asterisk configuration / Re: Tracking an unpicked call
« on: January 27, 2010, 16:38:32 »
No i don't see them in the queuelog. So if there would be somewhere RINGNOANSWER, then it should show the names of the agents who didn't pick up?

55
General Asterisk configuration / Re: Tracking an unpicked call
« on: January 26, 2010, 09:24:19 »
I understand that when i look at the unanswered page, there is no name in the field 'agent'. But when i look at the attempts page, i also don't see who did pick it up. When i look at the field 'attempts' on the unanswered page, there is always a '0' when the agent us unknown. Is that why it doesn't show it on the attempts page? And how can i make this work?

To make it clear i will put a screenshot:





Thanks

56
General Asterisk configuration / Tracking an unpicked call
« on: January 19, 2010, 15:29:10 »
Hi,

I'm wondering if there is a possibility that Queuemetrics can log which agent is getting a call and doesn't pick it up.

Regards

Queuemetrics 1.5.5
Asterisk 1.4.21.2

57
Hi, i have two questions about logging calls

1) When an agent is calling or being called from within the company, he is still available according to Queuemetrics. Is it possible to log these internal calls too, so that his status will be ‘busy’?

2) When a call is taken over by another agent (with the code *8 ), the status of this agent in Queuemetrics is still free, while he is busy with the call he took over. Is it possible to give the agents the status of busy when they take over a call?

Regards

Queuemetrics 1.5.5
Asterisk 1.4.21.2

Pages: 1 2 3 [4]