[AsteriskBrasil] para quem trab com callcenter
j u n i o u
junior em dssnet.com.br
Quarta Maio 23 20:26:28 BRT 2007
Pessoal, este script que pega o status
Do asterisk (1.2.13) relacionado a filas, agentes e canais e joga em tabelas
em um banco postgre.
Pra quem quiser usar. Depois é só fazer uma tela "for Windows" dando refresh
nas tabelas para supervisão.
Att:
Jr.
#!/bin/sh
# Data: 22/05/2007
# Captura DADOS do asterisk e envia para DB # junior em dssnet.com.br #
pablo em dssnet.com.br
#Inicializa LOOP infinito
ZZZ=XXX
AAA=UUU
while [ "$ZZZ" != "$AAA" ];
do
# Limpa Tabelas temporarias
psql -c "delete from motor_dac where dac <> 'X9X'" asterisk;
psql -c "delete from motor_agente_livrea where codigo <> 'X9X' " asterisk;
psql -c "delete from motor_agente_ocupa where codigo <> 'X9X' " asterisk;
psql -c "delete from motor_agente_pausa where codigo <> 'X9X' " asterisk;
#psql -c "delete from motor_agentes where codigo <> 'X9X' " asterisk;
psql -c "delete from motor_canais where canal <> 'X9X' " asterisk;
#Inicializa variaveis
DAC="nonono"
CODAGENTE="nonono"
CADASTRA TODOS OS AGENTES
BUFFERA=`asterisk -rx "show agents" |grep '(' |awk '{ print $0}'`
CONTA=1
FIM=`echo "$BUFFERA" |awk '{ print $1}'|tail -n1`
while [ "$CODAGENTE" != "$FIM" ];
do
CODAGENTE=`echo "$BUFFERA" |awk '{ print $1}' |head -n$CONTA |tail -n1`
NOME=`echo "$BUFFERA" |awk '{ print $2}' |head -n$CONTA |tail -n1`
CONTA=$(($CONTA+1));
psql -c "insert into motor_agentes(CODIGO,NOME)
values('$CODAGENTE','$NOME')" asterisk;
done
CANAL="XXXX"
# CANAIS ATIVOS
BUFFERF=`asterisk -rx "show channels verbose" `
CONTF=1
FIMF=`echo "$BUFFERF" | awk '{ print $1}'|tail -n1`
while [ "$CANAL" != "$FIMF" ];
do
CANAL=`echo "$BUFFERF" | awk '{ print $1}'
|head -n$CONTF |tail -n1`
CONTEXTO=`echo "$BUFFERF" | awk '{ print
$2}' |head -n$CONTF |tail -n1`
APP=`echo "$BUFFERF" | awk '{ print $6}'
|head -n$CONTF |tail -n1`
DADO=`echo "$BUFFERF" | awk '{ print $7}'
|head -n$CONTF |tail -n1`
CALLERID=`echo "$BUFFERF" | awk '{ print
$8}' |head -n$CONTF |tail -n1`
DURACAO=`echo "$BUFFERF" | awk '{ print $9}'
|head -n$CONTF |tail -n1`
CONTF=$(($CONTF+1));
psql -c "insert into
motor_canais(CANAL,CONTEXTO,APP,DADO,CALLERID,DURACAO)
values('$CANAL','$CONTEXTO','$APP','$DADO','$CALLERID','$DURACAO')"
asterisk;
done
CODAGENTE="XXXX"
# Cadastro dos DACs
BUFFER=`asterisk -rx "show queues" |grep strategy |awk '{ print $0}'`
CONT=1
FIM=`echo "$BUFFER" | grep strategy |awk '{ print $1}' |tail -n1`
while [ "$DAC" != "$FIM" ];
do
DAC=`echo "$BUFFER" | grep strategy |awk '{ print $1}' |head -n$CONT
|tail -n1`
CHE=`echo "$BUFFER" | grep strategy |awk '{ print $3}' |head -n$CONT
|tail -n1`
TME=`echo "$BUFFER" | grep strategy |awk '{ print $10}' |head -n$CONT
|tail -n1`
CHR=`echo "$BUFFER" | grep strategy |awk '{ print $13}' |head -n$CONT
|tail -n1`
CHA=`echo "$BUFFER" | grep strategy |awk '{ print $14}' |head -n$CONT
|tail -n1`
SLV=`echo "$BUFFER" | grep strategy |awk '{ print $15}' |head -n$CONT
|tail -n1`
NSR=`echo "$BUFFER" | grep strategy |awk '{ print $17}' |head -n$CONT
|tail -n1`
CONT=$(($CONT+1));
psql -c "insert into motor_dac(DAC,CHE,TME,CHR,CHA,SLV,NSR)
values('$DAC','$CHE','$TME','$CHR','$CHA','$SLV','$NSR')" asterisk;
# AGENTE LIVRE POR DAC
BUFFERA=`asterisk -rx "show queue $DAC" |grep 'Not in use' |awk '{
print $0}'`
CONTA=1
FIMA=`echo "$BUFFERA" | grep 'Not in use' |awk '{ print $1}'|tail
-n1`
while [ "$CODAGENTE" != "$FIMA" ];
do
CODAGENTE=`echo "$BUFFERA" | grep 'Not in use' |awk
'{ print $1}' |head -n$CONTA |tail -n1`
NOME=`echo "$BUFFERA" | grep 'Not in use' |awk '{
print $2}' |head -n$CONTA |tail -n1`
QTD_CH=`echo "$BUFFERA" | grep 'Not in use' |awk '{ print
$7}' |head -n$CONTA |tail -n1`
TEMPO=`echo "$BUFFERA" | grep 'Not in use' |awk '{
print $11}' |head -n$CONTA |tail -n1`
CONTA=$(($CONTA+1));
psql -c "insert into
motor_agente_livrea(CODIGO,NOME,QTD_CH,TEMPO,DAC)
values('$CODAGENTE','$NOME','$QTD_CH','$TEMPO','$DAC')" asterisk;
done
CODAGENTE="nonononon"
# AGENTE EM PAUSA POR DAC
BUFFERE=`asterisk -rx "show queue $DAC" |grep 'paused' |awk '{ print
$0}'`
CONTE=1
FIME=`echo "$BUFFERE" | grep 'paused' |awk '{ print $1}'|tail -n1`
while [ "$CODAGENTE" != "$FIME" ];
do
CODAGENTE=`echo "$BUFFERE" | grep 'paused' |awk '{
print $1}' |head -n$CONTE |tail -n1`
NOME=`echo "$BUFFERE" | grep 'paused' |awk '{ print
$2}' |head -n$CONTE |tail -n1`
QTD_CH=`echo "$BUFFERE" | grep 'paused' |awk '{ print $8}'
|head -n$CONTE |tail -n1`
TEMPO=`echo "$BUFFERE" | grep 'paused' |awk '{ print
$12}' |head -n$CONTE |tail -n1`
CONTE=$(($CONTE+1));
psql -c "insert into
motor_agente_pausa(CODIGO,NOME,QTD_CH,TEMPO,DAC)
values('$CODAGENTE','$NOME','$QTD_CH','$TEMPO','$DAC')" asterisk;
done
CODAGENTE="nonononon"
# AGENTE OCUPADO POR DAC
BUFFERD=`asterisk -rx "show queue $DAC" |grep 'Busy' |awk '{
print $0}'`
CONTD=1
FIMD=`echo "$BUFFERD" | grep 'Busy' |awk '{ print $1}'|tail
-n1`
while [ "$CODAGENTE" != "$FIMD" ];
do
CODAGENTE=`echo "$BUFFERD" | grep 'Busy'
|awk '{ print $1}' |head -n$CONTA |tail -n1`
NOME=`echo "$BUFFERD" | grep 'Busy' |awk '{
print $2}' |head -n$CONTA |tail -n1`
CONTD=$(($CONTD+1));
psql -c "insert into
motor_agente_ocupa(CODIGO,NOME,DAC) values('$CODAGENTE','$NOME','$DAC')"
asterisk;
done
done
echo "Aguardando intervalo de 5s"
sleep 5
echo "OK!"
done
# Fim done loop
Mais detalhes sobre a lista de discussão AsteriskBrasil