Queue Monitor

Discussion in 'General' started by Refuge, Apr 20, 2009.

  1. Refuge

    Joined:
    Mar 30, 2009
    Messages:
    13
    Likes Received:
    0
    I would like to put forth a potential new module, or perhaps just a new feature: A queue monitor, a real time monitor system that shows calls in the queue, which extensions are currently logged into the queue, are available, etc. I have a basic system like this that I managed to find. that just shows the calls in the queue waiting, and their caller ID. It was submitted to FreePBX by it's author to be added in, but it's had nothing done with it since then. I think it would work great, and would offer something almost no other distro has, which would help support call centers immensely.

    The system I am using is here
    The author states there is no license for it, and can be done with as needed. It's biggest problem is it's basic-ness, and spartan look. Integrated in elastix, it would probably look great.

    There is also another queue monitor system based off ofRuby on Rails, and Adhearsion, however, I've not been able to bring my self to install it on the production system, for fear of breaking something. This project can be found here: here/
     
  2. Bob

    Bob

    Joined:
    Nov 4, 2007
    Messages:
    2,400
    Likes Received:
    1
    Refuge,

    This would be a good idea as a module for Elastix.

    There are many call centres (in particular inbound call centres) where all they want is a simple Wall Board application.

    Main details they want are
    * Ability to decide what Queues they display (e.g. they may have queues that are not part of SLA's)
    * Current Position of call
    * CID of Caller
    * Time in Queue
    * Show Calls Abandoned
    * Show calls answered with SLA times

    This would, for many inbound call centres, be a great Elastix "Feature"

    For your information, I have implemented Queue-Tip on Elastix, and while it does a nice job, its configuration is very limited (e.g. displays every queue), and the way it works its stats, have confused me and also a call centre (who have the experience with Queue stats). It is possible to make some changes, but the way it is written (e.g. just iterates Queues via loop), makes it a little hard to make minor changes, and my Ruby skills are extremely limited. For anyone else that wants to play, I have written a tutorial on how to install Ruby On Rails and Queuetips which I will pop up on Elastixconnection.com in the next week or so.

    I hadn't seen the queuemon tool before, so will have a look at it and see what it does. Thanks for the heads up.

    In the meantime, I will push this idea back to the Elastix developers....as I believe it is an achievable one.

    Regards
    Bob
     
  3. rafael

    Joined:
    May 14, 2007
    Messages:
    1,454
    Likes Received:
    1
  4. Refuge

    Joined:
    Mar 30, 2009
    Messages:
    13
    Likes Received:
    0
    I've been trying to find a GOOD queue monitor setup for our call center for about 2 years now. (Our original system was a Asterisk@home based system, running off a asterisk 1.0rc2 revision, and a alpha version of freepbx.) Our old Siemens PBX system used to tell us how many calls were in the queue on the phones themselves. I would prefer a display board of some sore to output it too, or something the tech support manager could look at to see who was, and was not logged in taking calls.

    the queuemon application I linked to is customizable per queue, and works off the asterisk manager system (manager.conf). Unfortunately, like I said, it's VERY basic, but based off PHP and Java Script (something about prototype.js) It's great for how simple it is, but it is basic, like I said.

    I actually had to dig pretty deep to find queuemon, but it seems like it's perfect for building a realtime queue monitor off of, because it's so basic. Unfortunately, I don't know anything about java, php, or other web-based coding, so I can't really do much with it, besides install it, otherwise I'd try to set this up as a module myself, and release it. Hopefully I can be more active on the forums, now that I have my Elastix system actually in production. (And it doesn't like migrating from Trixbox much :p).
     
  5. Refuge

    Joined:
    Mar 30, 2009
    Messages:
    13
    Likes Received:
    0
    The way I currently have the queuemon system setup is my creating a directory called 'qmon' and a subdirectory of that with the name of the queue, so you can go to http://elastixmachine/qmon/7100, and it shows the calls stats for queue 7100. Then I just configure the queuemon config file to show stats for that queue. This seems to work really well, and helps keep the call center manager informed on what's going on, and when to ask for help. (Having management experience in call centers helped me know what I needed to look for in a queue monitor, so far, I've got call logs I can manually parse every month, and now the qmon.)
     
  6. shaks

    Joined:
    Feb 13, 2011
    Messages:
    29
    Likes Received:
    0
    Hi Bob,

    Your tutorials have been extremely helpful for me in building my first Elastix setup.

    You mention you had writted a tutorial on installing Queue-Tups/Ruby on Rails on Elastix.
    Do you still have this? If you do, are you able to share it? If you can I'd really appreciate it.

    I am currently using asternic (as per your guide) which now has a free realtime sections. I tried isymphony as well but wasn't really happy with it.

    I've also seen another two free apps: "Monast" and "Asterisk Guru Queue Statistics" but installing is a little bit of an issue.

    Thanks again for the great work!

    Regards
     
  7. fmvillares

    Joined:
    Sep 8, 2007
    Messages:
    1,785
    Likes Received:
    0
    Why people always ask for all for free....??? here is a micro stat menu that we have made for aguas santafesinas in Argentina in less than an hour...
    You could use it is GPL V2 - Authors Fabian Pighin - Fernando Villares
     
  8. fmvillares

    Joined:
    Sep 8, 2007
    Messages:
    1,785
    Likes Received:
    0
    perdón no me pego los attachs el damn firefox y no me los sigue pegando adjunto solo el texto ...de los files...recalco de nuevo GPL v2 importante recalcar los autores y nunca olvidarse si uno lo mejora o cambia de ponerlos nuevamente

    cola.php
    <?php
    $output = shell_exec('asterisk -rx "queue show"');
    echo "$output";
    ?>

    myuptm.php
    <?php
    $output = shell_exec('asterisk -rx "core show uptime"');
    $output = str_replace("System uptime", "UP",$output);
    $output = str_replace("Last reload", "RD",$output);
    if ($output == '') echo "Error Time"; echo "$output";
    ?>

    call.asp
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="refresh" content="30" />
    </head>
    <%
    Function sObtenerDatos(sMyCola,sFind1,sFind2,iCntChar)
    Dim myINI, myFIN
    myINI = 0: myFIN = 0
    myINI = InStr(1,sMyCola,sFind1)
    if sFind2 <> "" Then
    myFIN = InStr(1,sMyCola,sFind2)
    sObtenerDatos = Mid(sMyCola,myINI + Len(sFind1),myFIN - myINI - 1)
    Else
    sObtenerDatos = Mid(sMyCola,myINI + Len(sFind1),iCntChar)
    End if
    End Function

    Dim sUpTime, sCola, s7900, s7901, s7902, s7903, s7904, s7906, s7907
    Dim sCntSIP00, sCntSL00


    sUpTime = "": sCola = "": s7900 = "": s7901 = ""
    s7902 = "": s7903 = "": s7904 = "": s7906 = "": s7907 = ""
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    ' Acceso para obtener el tiempo de ejecucion de Asterisk
    objXMLHTTP.open "GET", "http://10.197.49.104/call/myuptm.php", false
    objXMLHTTP.send()
    sUpTime = trim("" & objXMLHTTP.responseText)
    iINI = InStr(1,sUpTime,"UP:")
    iFIN = InStr(1,sUpTime,"RD:")
    sUpTime = Mid(sUpTime,iINI,(iFIN - iINI))
    sUpTime = Replace(sUpTime,"days","Dias")
    sUpTime = Replace(sUpTime,"day","Dia")
    sUpTime = Replace(sUpTime,"hours","Hs")
    sUpTime = Replace(sUpTime,"hour","Hs")
    sUpTime = Replace(sUpTime,"minutes","Min")
    sUpTime = Replace(sUpTime,"minute","Min")
    sUpTime = Replace(sUpTime,"seconds","Sec")
    sUpTime = Replace(sUpTime,"second","Sec")
    sUpTime = Replace(sUpTime,",","")

    sUpTime = Replace(sUpTime,"Ini: ","<b>UP: </b>")

    ' Acceso para obtener los datos de las colas
    objXMLHTTP.open "GET", "http://10.197.49.104/call/cola.php", false
    objXMLHTTP.send()
    sCola = trim("" & objXMLHTTP.responseText)
    sCola = Replace(sCola,"","")
    sCola = Replace(sCola,"",vbcrlf & "FIN")
    sCola = Replace(sCola,"7903 ",vbcrlf & "7903" & vbcrlf & "INI" & vbcrlf)

    sCola = Replace(sCola,"7902 ",vbcrlf & "FIN" & vbcrlf & "7902" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7900 ",vbcrlf & "FIN" & vbcrlf & "7900" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7901 ",vbcrlf & "FIN" & vbcrlf & "7901" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7904 ",vbcrlf & "FIN" & vbcrlf & "7904" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7906 ",vbcrlf & "FIN" & vbcrlf & "7906" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7907 ",vbcrlf & "FIN" & vbcrlf & "7907" & vbcrlf & "INI" & vbcrlf)

    ' Paso a un Array de String - Unidimensional
    aCola = Split(sCola,vbcrlf)
    'Recorro el array para obtener los datos y lo guardo en variable string
    for ii = 1 to uBound(aCola)
    If InStr(1,aCola(ii),"7900") > 0 Then
    s7900 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7901") > 0 Then
    s7901 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7902") > 0 Then
    s7902 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7903") > 0 Then
    s7903 = Trim("" & aCola(ii + 2))
    End If
    If InStr(1,aCola(ii),"7904") > 0 Then
    s7904 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7906") > 0 Then
    s7906 = Trim("" & aCola(ii + 2))
    End If
    If InStr(1,aCola(ii),"7907") > 0 Then
    s7907 = Trim("" & aCola(ii + 2))
    End if
    next
    'Obtengo Telefonos Logueados
    sAux = s7900: sCntSIP00 = 0
    While Instr(1,sAux,"SIP",0) <> 0
    sCntSIP00 = sCntSIP00 + 1
    sAux = Mid(sAux,Instr(sAux,"SIP") + 3)
    Wend
    'Obtengo Telefonos Pausados
    sAux = s7900: sCntPAU00 = 0
    While Instr(1,sAux,"paused",0) <> 0
    sCntPAU00 = sCntPAU00 + 1
    sAux = Mid(sAux,Instr(sAux,"paused") + 4)
    Wend
    'Obtengo Telefonos In use
    sAux = s7900: sCntUSE00 = 0
    While Instr(1,sAux,"In use",0) <> 0
    sCntUSE00 = sCntUSE00 + 1
    sAux = Mid(sAux,Instr(sAux,"In use") + 4)
    Wend
    'Obtengo Telefonos con Tecla HOLD
    sAux = s7900: sCntHLD00 = 0
    While Instr(1,sAux,"On Hold",0) <> 0
    sCntHLD00 = sCntHLD00 + 1
    sAux = Mid(sAux,Instr(sAux,"On Hold") + 4)
    Wend
    'Obtengo Telefonos que estan Ringing
    sAux = s7900: sCntRNG00 = ""
    While Instr(1,sAux,"(dynamic) (Ring",0) <> 0
    iPOS = Instr(1,sAux,"(dynamic) (Ring",0)
    sCntRNG00 = sCntRNG00 & Mid(sAux,iPOS - 5,4) & "-"
    sAux = Mid(sAux,iPOS + 4)
    Wend

    'Obtengo llamadas en Cola
    sAux = s7900: sCntDAH00 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH00 = sCntDAH00 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7901: sCntDAH01 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH01 = sCntDAH01 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7902: sCntDAH02 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH02 = sCntDAH02 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7903: sCntDAH03 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH03 = sCntDAH03 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7904: sCntDAH04 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH04 = sCntDAH04 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7906: sCntDAH06 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH06 = sCntDAH06 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7907: sCntDAH07 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH07 = sCntDAH07 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend

    'Obtengo los SLA de cada COLA
    sCntSL00 = Replace(sObtenerDatos(s7900,"SL:","",4),"%","")
    sCntSL01 = Replace(sObtenerDatos(s7901,"SL:","",4),"%","")
    sCntSL02 = Replace(sObtenerDatos(s7902,"SL:","",4),"%","")
    sCntSL03 = Replace(sObtenerDatos(s7903,"SL:","",4),"%","")
    sCntSL04 = Replace(sObtenerDatos(s7904,"SL:","",4),"%","")
    sCntSL06 = Replace(sObtenerDatos(s7906,"SL:","",4),"%","")
    sCntSL07 = Replace(sObtenerDatos(s7907,"SL:","",4),"%","")
    'Obtengo las Llamadas Recibidas de cada COLA
    sCntRC00 = Replace(sObtenerDatos(s7900,"C:",", A",0),",","")
    sCntRC01 = Replace(sObtenerDatos(s7901,"C:",", A",0),",","")
    sCntRC02 = Replace(sObtenerDatos(s7902,"C:",", A",0),",","")
    sCntRC03 = Replace(sObtenerDatos(s7903,"C:",", A",0),",","")
    sCntRC04 = Replace(sObtenerDatos(s7904,"C:",", A",0),",","")
    sCntRC06 = Replace(sObtenerDatos(s7906,"C:",", A",0),",","")
    sCntRC07 = Replace(sObtenerDatos(s7907,"C:",", A",0),",","")
    'Obtengo las Llamadas ABANDONADAS de cada COLA
    sCntAB00 = Replace(sObtenerDatos(s7900,"A:",", SL",0),",","")
    sCntAB01 = Replace(sObtenerDatos(s7901,"A:",", SL",0),",","")
    sCntAB02 = Replace(sObtenerDatos(s7902,"A:",", SL",0),",","")
    sCntAB03 = Replace(sObtenerDatos(s7903,"A:",", SL",0),",","")
    sCntAB04 = Replace(sObtenerDatos(s7904,"A:",", SL",0),",","")
    sCntAB06 = Replace(sObtenerDatos(s7906,"A:",", SL",0),",","")
    sCntAB07 = Replace(sObtenerDatos(s7907,"A:",", SL",0),",","")

    'Cierro el objeto para las consultas WEB
    Set objXMLHTTP = Nothing
    'Fin del Script

    'Atención Aguas 7900
    'Atención Cloacas 7901
    'Atención Pagos 7903
    'Atención Descarte 7904
    'Atención R.Comer. 7902
    'Llamadas salientes 7906
    'Emergencias 7907


    %>

    <body>
    <div id="mycall">
    <table border=1 cellpadding=0 cellspacing=0>
    <tr height=20>
    <td height=20></td>

    <td colspan=5 bgcolor="#D56A00"><font size="3" color="#FFFFFF"><b><%=sUpTime %></b></font></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td colspan=5>OPR: <%=sCntSIP00 %>. USE: <%=sCntUSE00 %>. PAU: <%=sCntPAU00 %>. LIB: <%=Int(sCntSIP00 - (sCntUSE00+sCntPAU00)) %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center> - </td>
    <td align=center><b>Cola</b></td>
    <td align=center><b>Reci</b></td>
    <td align=center><b>Aban</b></td>
    <td align=center><b>SLA</b></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>ER:</td>
    <td align=center><%=sCntDAH07 %></td>
    <td align=center><%=sCntRC07 %></td>
    <td align=center><%=sCntAB07 %></td>
    <td align=center><%=sCntSL07 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>AG:</td>
    <td align=center><%=sCntDAH00 %></td>
    <td align=center><%=sCntRC00 %></td>
    <td align=center><%=sCntAB00 %></td>
    <td align=center><%=sCntSL00 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>CL:</td>
    <td align=center><%=sCntDAH01 %></td>
    <td align=center><%=sCntRC01 %></td>
    <td align=center><%=sCntAB01 %></td>
    <td align=center><%=sCntSL01 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>PG:</td>
    <td align=center><%=sCntDAH03 %></td>
    <td align=center><%=sCntRC03 %></td>
    <td align=center><%=sCntAB03 %></td>
    <td align=center><%=sCntSL03 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>DS:</td>
    <td align=center><%=sCntDAH04 %></td>
    <td align=center><%=sCntRC04 %></td>
    <td align=center><%=sCntAB04 %></td>
    <td align=center><%=sCntSL04 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>RC:</td>
    <td align=center><%=sCntDAH02 %></td>
    <td align=center><%=sCntRC02 %></td>
    <td align=center><%=sCntAB02 %></td>
    <td align=center><%=sCntSL02 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>SAL:</td>
    <td align=center><%=sCntDAH07 %></td>
    <td align=center><%=sCntRC07 %></td>
    <td align=center><%=sCntAB07 %></td>
    <td align=center><%=sCntSL07 %></td>
    </tr>
    </table>
    <font size="3">RING: <b><%=sCntRNG00 %></b></font><br>
    <font size="3">HOLD: <b><%=sCntHLD00 %></b></font><br>
    </div>

    </body>

    </html>


    espero les sirva como base para algo simple sencillo y util de verdad y que mas gente colabore
     
  9. fmvillares

    Joined:
    Sep 8, 2007
    Messages:
    1,785
    Likes Received:
    0
    perdón no me pego los attachs el damn firefox y no me los sigue pegando adjunto solo el texto ...de los files...recalco de nuevo GPL v2 importante recalcar los autores y nunca olvidarse si uno lo mejora o cambia de ponerlos nuevamente

    cola.php
    <?php
    $output = shell_exec('asterisk -rx "queue show"');
    echo "$output";
    ?>

    myuptm.php
    <?php
    $output = shell_exec('asterisk -rx "core show uptime"');
    $output = str_replace("System uptime", "UP",$output);
    $output = str_replace("Last reload", "RD",$output);
    if ($output == '') echo "Error Time"; echo "$output";
    ?>

    call.asp
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="refresh" content="30" />
    </head>
    <%
    Function sObtenerDatos(sMyCola,sFind1,sFind2,iCntChar)
    Dim myINI, myFIN
    myINI = 0: myFIN = 0
    myINI = InStr(1,sMyCola,sFind1)
    if sFind2 <> "" Then
    myFIN = InStr(1,sMyCola,sFind2)
    sObtenerDatos = Mid(sMyCola,myINI + Len(sFind1),myFIN - myINI - 1)
    Else
    sObtenerDatos = Mid(sMyCola,myINI + Len(sFind1),iCntChar)
    End if
    End Function

    Dim sUpTime, sCola, s7900, s7901, s7902, s7903, s7904, s7906, s7907
    Dim sCntSIP00, sCntSL00


    sUpTime = "": sCola = "": s7900 = "": s7901 = ""
    s7902 = "": s7903 = "": s7904 = "": s7906 = "": s7907 = ""
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    ' Acceso para obtener el tiempo de ejecucion de Asterisk
    objXMLHTTP.open "GET", "http://10.197.49.104/call/myuptm.php", false
    objXMLHTTP.send()
    sUpTime = trim("" & objXMLHTTP.responseText)
    iINI = InStr(1,sUpTime,"UP:")
    iFIN = InStr(1,sUpTime,"RD:")
    sUpTime = Mid(sUpTime,iINI,(iFIN - iINI))
    sUpTime = Replace(sUpTime,"days","Dias")
    sUpTime = Replace(sUpTime,"day","Dia")
    sUpTime = Replace(sUpTime,"hours","Hs")
    sUpTime = Replace(sUpTime,"hour","Hs")
    sUpTime = Replace(sUpTime,"minutes","Min")
    sUpTime = Replace(sUpTime,"minute","Min")
    sUpTime = Replace(sUpTime,"seconds","Sec")
    sUpTime = Replace(sUpTime,"second","Sec")
    sUpTime = Replace(sUpTime,",","")

    sUpTime = Replace(sUpTime,"Ini: ","<b>UP: </b>")

    ' Acceso para obtener los datos de las colas
    objXMLHTTP.open "GET", "http://10.197.49.104/call/cola.php", false
    objXMLHTTP.send()
    sCola = trim("" & objXMLHTTP.responseText)
    sCola = Replace(sCola,"","")
    sCola = Replace(sCola,"",vbcrlf & "FIN")
    sCola = Replace(sCola,"7903 ",vbcrlf & "7903" & vbcrlf & "INI" & vbcrlf)

    sCola = Replace(sCola,"7902 ",vbcrlf & "FIN" & vbcrlf & "7902" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7900 ",vbcrlf & "FIN" & vbcrlf & "7900" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7901 ",vbcrlf & "FIN" & vbcrlf & "7901" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7904 ",vbcrlf & "FIN" & vbcrlf & "7904" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7906 ",vbcrlf & "FIN" & vbcrlf & "7906" & vbcrlf & "INI" & vbcrlf)
    sCola = Replace(sCola,"7907 ",vbcrlf & "FIN" & vbcrlf & "7907" & vbcrlf & "INI" & vbcrlf)

    ' Paso a un Array de String - Unidimensional
    aCola = Split(sCola,vbcrlf)
    'Recorro el array para obtener los datos y lo guardo en variable string
    for ii = 1 to uBound(aCola)
    If InStr(1,aCola(ii),"7900") > 0 Then
    s7900 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7901") > 0 Then
    s7901 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7902") > 0 Then
    s7902 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7903") > 0 Then
    s7903 = Trim("" & aCola(ii + 2))
    End If
    If InStr(1,aCola(ii),"7904") > 0 Then
    s7904 = Trim("" & aCola(ii + 2))
    End if
    If InStr(1,aCola(ii),"7906") > 0 Then
    s7906 = Trim("" & aCola(ii + 2))
    End If
    If InStr(1,aCola(ii),"7907") > 0 Then
    s7907 = Trim("" & aCola(ii + 2))
    End if
    next
    'Obtengo Telefonos Logueados
    sAux = s7900: sCntSIP00 = 0
    While Instr(1,sAux,"SIP",0) <> 0
    sCntSIP00 = sCntSIP00 + 1
    sAux = Mid(sAux,Instr(sAux,"SIP") + 3)
    Wend
    'Obtengo Telefonos Pausados
    sAux = s7900: sCntPAU00 = 0
    While Instr(1,sAux,"paused",0) <> 0
    sCntPAU00 = sCntPAU00 + 1
    sAux = Mid(sAux,Instr(sAux,"paused") + 4)
    Wend
    'Obtengo Telefonos In use
    sAux = s7900: sCntUSE00 = 0
    While Instr(1,sAux,"In use",0) <> 0
    sCntUSE00 = sCntUSE00 + 1
    sAux = Mid(sAux,Instr(sAux,"In use") + 4)
    Wend
    'Obtengo Telefonos con Tecla HOLD
    sAux = s7900: sCntHLD00 = 0
    While Instr(1,sAux,"On Hold",0) <> 0
    sCntHLD00 = sCntHLD00 + 1
    sAux = Mid(sAux,Instr(sAux,"On Hold") + 4)
    Wend
    'Obtengo Telefonos que estan Ringing
    sAux = s7900: sCntRNG00 = ""
    While Instr(1,sAux,"(dynamic) (Ring",0) <> 0
    iPOS = Instr(1,sAux,"(dynamic) (Ring",0)
    sCntRNG00 = sCntRNG00 & Mid(sAux,iPOS - 5,4) & "-"
    sAux = Mid(sAux,iPOS + 4)
    Wend

    'Obtengo llamadas en Cola
    sAux = s7900: sCntDAH00 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH00 = sCntDAH00 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7901: sCntDAH01 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH01 = sCntDAH01 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7902: sCntDAH02 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH02 = sCntDAH02 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7903: sCntDAH03 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH03 = sCntDAH03 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7904: sCntDAH04 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH04 = sCntDAH04 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7906: sCntDAH06 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH06 = sCntDAH06 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend
    sAux = s7907: sCntDAH07 = 0
    While Instr(1,sAux,"DAHDI",0) <> 0
    sCntDAH07 = sCntDAH07 + 1
    sAux = Mid(sAux,Instr(sAux,"DAHDI") + 4)
    Wend

    'Obtengo los SLA de cada COLA
    sCntSL00 = Replace(sObtenerDatos(s7900,"SL:","",4),"%","")
    sCntSL01 = Replace(sObtenerDatos(s7901,"SL:","",4),"%","")
    sCntSL02 = Replace(sObtenerDatos(s7902,"SL:","",4),"%","")
    sCntSL03 = Replace(sObtenerDatos(s7903,"SL:","",4),"%","")
    sCntSL04 = Replace(sObtenerDatos(s7904,"SL:","",4),"%","")
    sCntSL06 = Replace(sObtenerDatos(s7906,"SL:","",4),"%","")
    sCntSL07 = Replace(sObtenerDatos(s7907,"SL:","",4),"%","")
    'Obtengo las Llamadas Recibidas de cada COLA
    sCntRC00 = Replace(sObtenerDatos(s7900,"C:",", A",0),",","")
    sCntRC01 = Replace(sObtenerDatos(s7901,"C:",", A",0),",","")
    sCntRC02 = Replace(sObtenerDatos(s7902,"C:",", A",0),",","")
    sCntRC03 = Replace(sObtenerDatos(s7903,"C:",", A",0),",","")
    sCntRC04 = Replace(sObtenerDatos(s7904,"C:",", A",0),",","")
    sCntRC06 = Replace(sObtenerDatos(s7906,"C:",", A",0),",","")
    sCntRC07 = Replace(sObtenerDatos(s7907,"C:",", A",0),",","")
    'Obtengo las Llamadas ABANDONADAS de cada COLA
    sCntAB00 = Replace(sObtenerDatos(s7900,"A:",", SL",0),",","")
    sCntAB01 = Replace(sObtenerDatos(s7901,"A:",", SL",0),",","")
    sCntAB02 = Replace(sObtenerDatos(s7902,"A:",", SL",0),",","")
    sCntAB03 = Replace(sObtenerDatos(s7903,"A:",", SL",0),",","")
    sCntAB04 = Replace(sObtenerDatos(s7904,"A:",", SL",0),",","")
    sCntAB06 = Replace(sObtenerDatos(s7906,"A:",", SL",0),",","")
    sCntAB07 = Replace(sObtenerDatos(s7907,"A:",", SL",0),",","")

    'Cierro el objeto para las consultas WEB
    Set objXMLHTTP = Nothing
    'Fin del Script

    'Atención Aguas 7900
    'Atención Cloacas 7901
    'Atención Pagos 7903
    'Atención Descarte 7904
    'Atención R.Comer. 7902
    'Llamadas salientes 7906
    'Emergencias 7907


    %>

    <body>
    <div id="mycall">
    <table border=1 cellpadding=0 cellspacing=0>
    <tr height=20>
    <td height=20></td>

    <td colspan=5 bgcolor="#D56A00"><font size="3" color="#FFFFFF"><b><%=sUpTime %></b></font></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td colspan=5>OPR: <%=sCntSIP00 %>. USE: <%=sCntUSE00 %>. PAU: <%=sCntPAU00 %>. LIB: <%=Int(sCntSIP00 - (sCntUSE00+sCntPAU00)) %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center> - </td>
    <td align=center><b>Cola</b></td>
    <td align=center><b>Reci</b></td>
    <td align=center><b>Aban</b></td>
    <td align=center><b>SLA</b></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>ER:</td>
    <td align=center><%=sCntDAH07 %></td>
    <td align=center><%=sCntRC07 %></td>
    <td align=center><%=sCntAB07 %></td>
    <td align=center><%=sCntSL07 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>AG:</td>
    <td align=center><%=sCntDAH00 %></td>
    <td align=center><%=sCntRC00 %></td>
    <td align=center><%=sCntAB00 %></td>
    <td align=center><%=sCntSL00 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>CL:</td>
    <td align=center><%=sCntDAH01 %></td>
    <td align=center><%=sCntRC01 %></td>
    <td align=center><%=sCntAB01 %></td>
    <td align=center><%=sCntSL01 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>PG:</td>
    <td align=center><%=sCntDAH03 %></td>
    <td align=center><%=sCntRC03 %></td>
    <td align=center><%=sCntAB03 %></td>
    <td align=center><%=sCntSL03 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>DS:</td>
    <td align=center><%=sCntDAH04 %></td>
    <td align=center><%=sCntRC04 %></td>
    <td align=center><%=sCntAB04 %></td>
    <td align=center><%=sCntSL04 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>RC:</td>
    <td align=center><%=sCntDAH02 %></td>
    <td align=center><%=sCntRC02 %></td>
    <td align=center><%=sCntAB02 %></td>
    <td align=center><%=sCntSL02 %></td>
    </tr>
    <tr height=20>
    <td height=20></td>
    <td align=center>SAL:</td>
    <td align=center><%=sCntDAH07 %></td>
    <td align=center><%=sCntRC07 %></td>
    <td align=center><%=sCntAB07 %></td>
    <td align=center><%=sCntSL07 %></td>
    </tr>
    </table>
    <font size="3">RING: <b><%=sCntRNG00 %></b></font><br>
    <font size="3">HOLD: <b><%=sCntHLD00 %></b></font><br>
    </div>

    </body>

    </html>


    espero les sirva como base para algo simple sencillo y util de verdad y que mas gente colabore
     
  10. nexo

    Joined:
    Feb 23, 2008
    Messages:
    1
    Likes Received:
    0
    encuentro muy buena la idea, es algo que busco hace bastante tiempo. la verdad no soy programador y me gustaria tu asesoria al respecto. por su puesto que pagada.

    te dejo mi correo por si te interesa cmutinelli at gmail.com
     
  11. Elendil

    Joined:
    Jul 14, 2011
    Messages:
    17
    Likes Received:
    0
    Muy buena aportación Refuge, lo estoy usando ahora

    Good post Refuge, I'm using it right now
     
  12. scoelho79

    Joined:
    Jul 29, 2011
    Messages:
    1
    Likes Received:
    0
    Does any one know a queue monitor that keeps call history in real time? What I need is this: I have one CallCenter with 3 queues and 2 agents assigned in the 3 queues. If someone calls and there's no free agents the person may hangup due the whaiting time. So how can I call him back if I dont know the number. I need some call history as in the extensions. In the extension when a call is lost we go to call history and there is lost calls log. But if a call is lost in the queue, no one knows the lost call number. In the callcenter module we only see the number of lost calls, and not the CID of the caller. Any help, please.
     

Share This Page