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 - eduararley

Pages: [1]
1
Hello everyone.

We're trying to deploy a call center with dynamic agents. This is, an extension could be used by several agents, maybe someone works in the morning, and some other works using same device in the afternoon.

WE're using PBX In a Flash 3
Asterisk 11.16.0
FreePBX 2.11
QueueMetrics 15.10.3

We've done following setup:

We've used extensions_queuemetrics_freepbx2.11.conf file included in mysql_utils/extensions_examples folder, unmodified.

In QueueMetrics:

Code: [Select]
default.hotdesking=86400
default.rewriteLocalChannels=true

We use QueueMetrics web interface to login, pause, unpause and logout agent 216 on queue 807, using SIP extension 1006. That extension is a softphone. Incoming call to queue works OK, and agent logins and logouts correctly from queue.

This is what Asterisk reports when agent is logged in:

Code: [Select]
*CLI> queue show 807
807 has 0 calls (max unlimited) in 'ringall' strategy (9s holdtime, 19s talktime), W:0, C:4, A:1, SL:100.0% within 60s
   Members:
      Extension 1006 (Local/1006@from-queue/n from hint:1006@ext-local) (ringinuse enabled) (dynamic) (Not in use) has taken no calls yet
   No Callers

This is what we get in queue_log in our full test:

Code: [Select]
1455831494|1455831493.147|NONE|Agent/216|HOTDESK|Agent/1006||
1455831494|1455831493.147|807|Local/1006@from-queue/n|ADDMEMBER|
1455831553|1455831553.149|807|NONE|DID|
1455831553|1455831553.149|807|NONE|ENTERQUEUE|||1
1455831562|1455831553.149|807|Extension 1006|CONNECT|9|1455831553.151|9
1455831593|1455831553.149|807|Extension 1006|COMPLETEAGENT|9|31|1
1455831606|NONE|NONE|Local/1006@from-queue/n|PAUSEALL|
1455831606|NONE|807|Extension 1006|PAUSE|
1455831606|1455831605.155|NONE|Agent/216|PAUSEREASON|11
1455831626|NONE|NONE|Local/1006@from-queue/n|UNPAUSEALL|
1455831626|NONE|807|Extension 1006|UNPAUSE|
1455831651|1455831651.159|807|Local/1006@from-queue/n|REMOVEMEMBER|

Note that the string "Extension 1006" is taken from FreePBX field "Display Name":



However, as Extension 1006 is here, calls are not tied to Agent 216 in QueueMetrics:



Sure, if I put in QM, in Asterisk Aliases for Agent 216, the string "Extension 1006", it works as expected. However, that's not the desired behavior, because not always this extension will be used by this agent. Maybe tomorrow another agent will use this extension.

How can we accomplish this as needed? I wonder if we should use "Devices and Users" in FreePBX, or if there're some way to make this work with Extensions mode.

2
Scripting QueueMetrics / Re: QM.qaformgrading
« on: October 01, 2014, 21:02:28 »
Hello Mirko, thanks for your reply.

Yes, I've looked manually in QueueMetrics (I've clicked on the magnifier icon to check call details, and then on QA tab), but I don't see the QA form filled. I've reloaded the report, and also logged out/in from QueueMetrics, but still don't see anything. However, if I fill manually the QA form, the data is saved OK.

About the DetailsDO.CallsOK analysis, it's just something I call to make sure that the date and time data is OK, so the right call is retrieved. I don't use that info for anything else. What I just want is to fill que QA form, nothing else.

Thanks!

3
Scripting QueueMetrics / QM.qaformgrading
« on: September 30, 2014, 22:19:00 »
Hello everyone.

I'm trying to fill a QA form using XML-RPC API. I'm using PHP, so I'm using a sightly modified version of sample_client.php shipped with the product.

This is what I have:



So, I use the following code:

Code: [Select]
<?php
require_once 'XML/RPC.php';

// Variables
$qm_server "localhost";           // the QueueMetrics server address
$qm_port   "8080";                // the port QueueMetrics is running on 
$qm_webapp "queuemetrics";        // the webapp name for QueueMetrics 

// Function: Output a response block as HTML
function printBlock$blockname$blocks ) {
    echo 
"<h2>Response block: $blockname </h2>";
    echo 
"<table border=1>";
    
$block $blocks[$blockname];
    for ( 
$r 0$r sizeof$block ); $r++ ) {
        echo 
"<tr>";
        for ( 
$c 0$c sizeof$block[$r] ); $c++ ) {
            echo( 
"<td>" $block[$r][$c] . "</td>" );
        }
        echo 
"</tr>\n";
    }
    echo 
"</table>";
}

// ---------------------------------------

// PART 1: QM STATS
// Blocks: Set which response blocks we are looking for

$req_blocks_analysis = new XML_RPC_Value(array(
        new 
XML_RPC_Value("DetailsDO.CallsOK")
    ), 
"array");

// Parameters: General invocation parameters - see the documentation
$params = array(
            new 
XML_RPC_Value("801"),
            new 
XML_RPC_Value("robot"),
            new 
XML_RPC_Value("robot"),
            new 
XML_RPC_Value(""),
            new 
XML_RPC_Value(""),
            new 
XML_RPC_Value("2014-09-30.00:00:00"),
            new 
XML_RPC_Value("2014-09-30.23:59:59"),
            new 
XML_RPC_Value(""),
            
$req_blocks_analysis
          
);

$msg = new XML_RPC_Message('QM.stats'$params);
$cli = new XML_RPC_Client("/$qm_webapp/xmlrpc.do"$qm_server$qm_port);
//$cli->setDebug(1);
$resp $cli->send($msg);
if (!
$resp) {
    echo 
'Communication error: ' $cli->errstr;
    exit;
}
if (
$resp->faultCode()) {
    echo 
'Fault Code: ' $resp->faultCode() . "\n";
    echo 
'Fault Reason: ' $resp->faultString() . "\n";
} else {
    
$val $resp->value();
    
$blocks XML_RPC_decode($val);

     
// now we print out the details....
     
printBlock"result"$blocks );
     
printBlock"DetailsDO.CallsOK"$blocks );
}

// ---------------------------------------

// PART 2: QM QA FORM GRADING
// Blocks: Set which response blocks we are looking for 

$req_blocks_qaitems = new XML_RPC_Value(array(
        new 
XML_RPC_Value(array(
                   new 
XML_RPC_Value("ENE"),
                   new 
XML_RPC_Value("75")
        ))
    ), 
"struct");

$req_blocks_notes = new XML_RPC_Value(array(
        new 
XML_RPC_Value("")
    ), 
"array");

$req_blocks_analysis = new XML_RPC_Value(array(
        new 
XML_RPC_Value("DetailsDO.CallsOK")
    ), 
"array");

// Parameters: General invocation parameters - see the documentation
$params = array(
            new 
XML_RPC_Value("801"), 
            new 
XML_RPC_Value("robot"), 
            new 
XML_RPC_Value("robot"), 
            new 
XML_RPC_Value("2014-09-30.00:00:00"), 
            new 
XML_RPC_Value("86400"), 
            new 
XML_RPC_Value("Encuesta"), 
            new 
XML_RPC_Value("1412105718.6"), 
            new 
XML_RPC_Value("grader"), 
            
$req_blocks_qaitems,
            
$req_blocks_notes,
            
$req_blocks_analysis
          
);
          
$msg = new XML_RPC_Message('QM.qaformgrading'$params);
$cli = new XML_RPC_Client("/$qm_webapp/xmlrpc.do"$qm_server$qm_port);
//$cli->setDebug(1);
$resp $cli->send($msg);
if (!
$resp) {
    echo 
'Communication error: ' $cli->errstr;
    exit;
}
if (
$resp->faultCode()) {
    echo 
'Fault Code: ' $resp->faultCode() . "\n";
    echo 
'Fault Reason: ' $resp->faultString() . "\n";
} else {
    
$val $resp->value();
    
$blocks XML_RPC_decode($val);

     
// now we print out the details....    
     
printBlock"result"$blocks );
     
printBlock"DetailsDO.CallsOK"$blocks );
}

?>


And this is my result:

Quote
Response block: result
Status   OK
Description   
Time elapsed (ms)   26
QM Version   14.03.3

Response block: DetailsDO.CallsOK
Date   Caller   Queue   IVR   Wait   Duration   Pos.   Disconnection   Handled by   Attempts   Code   Stints   Srv       
09/30 - 15:35:18   102   PRUEBA-QA   0:00     0:05     0:42     1   Agent   agent/john doe   1                 
09/30 - 15:43:25   102   PRUEBA-QA   0:00     0:04     0:35     1   Agent   agent/john doe   1                 

Response block: result
Status   OK
Description   
Time elapsed (ms)   30
QM Version   14.03.3

Response block: DetailsDO.CallsOK
Date   Caller   Queue   IVR   Wait   Duration   Pos.   Disconnection   Handled by   Attempts   Code   Stints   Srv       
09/30 - 15:35:18   102   PRUEBA-QA   0:00     0:05     0:42     1   Agent   agent/john doe   1                 
09/30 - 15:43:25   102   PRUEBA-QA   0:00     0:04     0:35     1   Agent   agent/john doe   1                 

I suspect there is something wrong with my struct, as everything else seems to work, and I'm getting no errors. However, the QA form is not filled  :(

Thanks!

4
Improving QueueMetrics / Survey with QueueMetrics IVR
« on: September 18, 2014, 18:31:17 »
Hello everyone!

I was wondering if we could implement come kind of customer satisfaction survey, using QueueMetrics IVR functionality. Our idea is, once a call is finished, redirect a customer to an IVR, where they will hear options for their response (1 for good service, 2 for average, 3 for bad, etc), and track those answers in the IVR tool on QueueMetrics (currently, we don't use that module at all), so we would check the survey results using that tool.

Please let us know if this is feasible using QueueMetrics, or if you know any other option or tool to accomplish this.

Thanks!

Pages: [1]