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-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Roger Pitigliani Enviada em: Thursday, November 29, 2012 11:25 PM Para: asteriskbrasil@listas.asteriskbrasil.org Cc: elastixbra...@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.alme...@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: yeal...@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-unsubscr...@listas.asteriskbrasil.org -- -- Roger Pitigliani rogerwin...@gmail.com Skype: roger.pitigliani
_______________________________________________ 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: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 ______________________________________________ Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org