[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