[AsteriskBrasil] RES: monitoring preditivo elastix
Danilo Almeida
danilo.almeida em g1telecom.com.br
Sexta Novembro 30 16:23:46 BRST 2012
Roger
Não consegui realizar algumas alterações de acordo como te passei no e-mail,
porém, quando voltei os 2 arquivos que havia feito backup, não estou
conseguindo fazer download das gravações que caem na fila, elas armazenam no
banco mais não consigo realizar o download, da que o arquivo não existe.
url que aparece: https://IP_SERVIDOR/index.php?menu=monitoring
<https://IP_SERVIDOR/index.php?menu=monitoring&action=download&id=1354299076
.11971&rawmode=yes> &action=download&id=1354299076.11971&rawmode=yes
o que será que fiz de errado pra acontecer isso?
obrigado
att
Danilo Ricardo de Almeida
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Roger
Pitigliani
Enviada em: Thursday, November 29, 2012 11:25 PM
Para: asteriskbrasil em listas.asteriskbrasil.org
Cc: elastixbrasil em googlegroups.com
Assunto: Re: [AsteriskBrasil] monitoring preditivo elastix
Boa Noite Danilo..
É possível sim..
Não é a melhor forma, mas aí vai ela.. ( Testei aqui em um Elastix 2.3 )
Você terá que alterar dois arquivos, são eles:
/var/www/html/modules/monitoring/index.php
/var/www/html/modules/monitoring/libs/paloSantoMonitoring.class.php
Fazendo as alterações, você poderá filtrar por Agente e por Numero discado.
Note que as alterações
são para que funcione com callcenter ativo (discador), o recpetivo não.
Teriam que haver mais mudanças para isso.
Vamos lá...
No index.php é para ajustar os campos de filtro, encontre os blocos de
codigos e deixe-os da seguinte maneira:
// Aprox linha 110
switch($filter_field){
case "dst":
$filter_field = "dst";
$nameFilterField = _tr("Destination");
break;
case "dstcall":
$filter_field = "dstcall";
$nameFilterField = _tr("CallCenter-Dst");
break;
case "agent":
$filter_field = "agent";
$nameFilterField = _tr("CallCenter-Agent");
break;
case "userfield":
$filter_field = "userfield";
$nameFilterField = _tr("Type");
break;
default:
$filter_field = "src";
$nameFilterField = _tr("Source");
break;
}
// Aprox linha 570
$arrFilter = array(
"src" => _tr("Source"),
"dst" => _tr("Destination"), // Filtra destino tanto do
callcenter quanto das chamadas de ramal
"agent" => _tr("Agente"), // Adicionei filtro por Agente.
"userfield" => _tr("Type"),
);
No arquivo paloSantoMonitoring.class.php, altere as duas funções
"getMonitoring" e "getNumMonitoring", segue como ficam:
function getMonitoring($limit, $offset, $filter_field, $filter_value,
$extension, $date_initial, $date_final)
{
$where = "";
$arrParam = array();
if(isset($filter_field) & $filter_field !=""){
if($filter_field == "userfield"){
$in_val = strtolower($filter_value);
switch($in_val){
case "outgoing":
$where = " AND (userfield like 'audio:O%' OR
userfield like 'audio:/var/spool/asterisk/monitor/O%') ";
break;
case "group":
$where = " AND (userfield like 'audio:g%' OR
userfield like 'audio:/var/spool/asterisk/monitor/g%') ";
break;
case "queue":
$where = " AND (userfield like 'audio:q%' OR
userfield like 'audio:/var/spool/asterisk/monitor/q%') ";
break;
default :
$where = " AND userfield REGEXP '[[:<:]]audio:[0-9]'
";
break;
}
}else{
$arrParam[] = "$filter_value%";
if( $filter_field == 'agent' ){
$where = " AND a.number like ? AND userfield LIKE
'audio:%' ";
}else if( $filter_field == 'dstcall' ){
$where = " AND cc.phone like ? AND userfield LIKE
'audio:%' ";
}else{
$where = " AND $filter_field like ? AND userfield
LIKE 'audio:%' ";
}
}
}
if((isset($date_initial) & $date_initial !="") &&
(isset($date_final) & $date_final !="")){
$arrParam[] = $date_initial;
$arrParam[] = $date_final;
$where .= " AND (calldate >= ? AND calldate <= ?) ";
}else{
$date_initial = date('Y-m-d')." 00:00:00";
$date_final = date('Y-m-d')." 23:59:59";
$arrParam[] = $date_initial;
$arrParam[] = $date_final;
$where .= " AND (calldate >= ? AND calldate <= ?) ";
}
if(isset($extension) & $extension !=""){
$arrParam[] = $extension;
$arrParam[] = $extension;
$where .= " AND (src=? OR dst=? ) ";
}
$arrParam[] = $limit;
$arrParam[] = $offset;
$query = "SELECT c.calldate,
c.clid,
IF( cc.phone IS
NULL,c.src,CONCAT('Agent/',a.number)) as src,
IF( cc.phone IS NULL,c.dst,cc.phone) as dst,
c.dcontext,
c.channel,
c.dstchannel,
c.lastapp,
c.lastdata,
c.duration,
c.billsec,
c.disposition,
c.amaflags,
c.accountcode,
c.uniqueid,
c.userfield
FROM asteriskcdrdb.cdr c
LEFT JOIN call_center.calls cc ON ( c.uniqueid =
cc.uniqueid )
LEFT JOIN call_center.agent a ON ( cc.id_agent =
a.id )
WHERE c.userfield <> '' $where ORDER BY c.uniqueid
DESC LIMIT ? OFFSET ?";
$result=$this->_DB->fetchTable($query, true, $arrParam);
if($result==FALSE){
$this->errMsg = $this->_DB->errMsg;
return array();
}
return $result;
}
// ------
function getNumMonitoring($filter_field, $filter_value, $extension,
$date_initial, $date_final)
{
$where = "";
$arrParam = array();
if(isset($filter_field) && $filter_field !="" &&
isset($filter_value) && $filter_value !=""){
if($filter_field == "userfield"){
$in_val = strtolower($filter_value);
switch($in_val){
case "outgoing":
$where = " AND (userfield like 'audio:O%' OR
userfield like 'audio:/var/spool/asterisk/monitor/O%') ";
break;
case "group":
$where = " AND (userfield like 'audio:g%' OR
userfield like 'audio:/var/spool/asterisk/monitor/g%') ";
break;
case "queue":
$where = " AND (userfield like 'audio:q%' OR
userfield like 'audio:/var/spool/asterisk/monitor/q%') ";
break;
default :
$where = " AND userfield REGEXP '[[:<:]]audio:[0-9]'
";
break;
}
}else{
$arrParam[] = "$filter_value%";
if( $filter_field == 'agent' ){
$where = " AND a.number like ? AND userfield LIKE
'audio:%' ";
}else if( $filter_field == 'dstcall' ){
$where = " AND cc.phone like ? AND userfield LIKE
'audio:%' ";
}else{
$where = " AND $filter_field like ? AND userfield
LIKE 'audio:%' ";
}
}
}
if((isset($date_initial) & $date_initial !="") &&
(isset($date_final) & $date_final !="")){
$arrParam[] = $date_initial;
$arrParam[] = $date_final;
$where .= " AND (c.calldate >= ? AND c.calldate <= ?) ";
}else{
$date_initial = date('Y-m-d')." 00:00:00";
$date_final = date('Y-m-d')." 23:59:59";
$arrParam[] = $date_initial;
$arrParam[] = $date_final;
$where .= " AND (c.calldate >= ? AND c.calldate <= ?) ";
}
if(isset($extension) & $extension !=""){
$arrParam[] = $extension;
$arrParam[] = $extension;
$where .= " AND (c.src=? OR c.dst=?)";
}
$query = "SELECT COUNT(*) FROM asteriskcdrdb.cdr c
LEFT JOIN call_center.calls cc ON ( c.uniqueid =
cc.uniqueid )
LEFT JOIN call_center.agent a ON ( cc.id_agent =
a.id )
WHERE userfield <> '' $where";
$result=$this->_DB->getFirstRowQuery($query,false,$arrParam);
if($result==FALSE){
$this->errMsg = $this->_DB->errMsg;
return 0;
}
return $result[0];
}
** É bom criar indices no campo "uniqueid" das tabelas do mysql.
ALTER TABLE `call_center`.`calls` ADD INDEX `idx_uniqueid`(`uniqueid`);
Espero ter ajudado..
Abraço.
Em 29 de novembro de 2012 21:22, <danilo.almeida em g1telecom.com.br> escreveu:
Bom...
Havia perguntado essa semana como fazer para que no monitoring do
elastix, quando uma chamada saísse pelo discador automático do call
Center, em vez de binar o meu numero de saída, queria que binasse o
numero que esta sendo discado pelo "discador".
Segui um tutorial sugerido por um amigo aqui da lista e escrito pelo
Alberto Sato, porém, no monitoring, ele somente duplica a coluna
source e não me resolveu o problema.
Observei diretamente no banco de dados e vi que ele não armazena o
numero discado pelo campanha na tabela cdr, mais armazena na tabela
calls do banco de dados call_center.
Será que tem como eu puxar essa coluna no monitoring? Se sim, alguém
pode me dar uma luz de quais arquivos da interface devo alterar
(principalmente os de conexão com o banco)?
Desde já agradeço quem puder me ajudar
Att
Danilo Almeida
_______________________________________________
KHOMP Inovação: External Board Series
Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e
FreeSWITCH.
Tenha a External Series Experience na sua aplicação. Visite www.khomp.com
_______________________________________________
DIGIVOICE Fabricante de Placas de Voz e Channel Bank
20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
Centro Treinamento - Curso de PABX IP - Asterisk - Site
www.digivoice.com.br
________
YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do
mercado.
email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
<tel:%2811%29%205503-1011>
______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para
asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
--
--
Roger Pitigliani
rogerwinter em gmail.com
Skype: roger.pitigliani
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20121130/ba79e77b/attachment-0001.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil