[app-login] ;----------------------------------------------------------------------------------- ;ATENDIMENTO MANUAL exten => **50,1,NoCDR() exten => **50,n,Noop(${RAMAL} - ${AGENT}) exten => **50,n,Set(__${CHANNEL(peername)}DAC=${DAC}) exten => **50,n,Set(__${CHANNEL(peername)}AGENT=${AGENT}) exten => **50,n,Set(__${CHANNEL(peername)}RAMAL=${CHANNEL(peername)}) exten => **50,n,Set(__${CHANNEL(peername)}RAMAL_ORG=${RAMAL}) exten => **50,n,Set(__${CHANNEL(peername)}ORG=${DB(ORG_ID/${CHANNEL(peername)})}) exten => **50,n,Set(__${CHANNEL(peername)}PENALIDADE=${PENALIDADE}) exten => **50,n,Set(__ATENDIMENTO=MANUAL) exten => **50,n,RemoveQueueMember(${${CHANNEL(peername)}DAC},Local/${CHANNEL(peername)}RAMAL}@app-callcenter/n) exten => **50,n,System(${DELETAR} '${${CHANNEL(peername)}AGENT}' '${DB(ORG_ID/${CHANNEL(peername)})}') exten => **50,n,Noop(${SYSTEMSTATUS}) exten => **50,n,Noop(${DB_DELETE(MATRICULA/${${CHANNEL(peername)}RAMAL})}) exten => **50,n(add),AddQueueMember(${${CHANNEL(peername)}DAC},Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n,${${CHANNEL(peername)}PENALIDADE},,Agent/${${CHANNEL(peername)}AGENT},${DB(DIAL/${CHANNEL(peername)})}) exten => **50,n,Noop(AddQueueMember respondeu == ${AQMSTATUS}) exten => **50,n,Goto(${AQMSTATUS}) exten => **50,n(ADDED),System(${INSERIR} LOGANDO '${${CHANNEL(peername)}AGENT}' '${${CHANNEL(peername)}ORG}') exten => **50,n,Noop(${SYSTEMSTATUS}) exten => **50,n,Goto(app-login,**51,1) exten => **50,n,Hangup() exten => **50,n(MEMBERALREADY),RemoveQueueMember(${${CHANNEL(peername)}DAC},Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n) exten => **50,n,Noop(Removido agente Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n da fila ${${CHANNEL(peername)}DAC} da organização ${${CHANNEL(peername)}ORG}) exten => **50,n,System(${DELETAR} '${${CHANNEL(peername)}AGENT}' '${${CHANNEL(peername)}ORG}') exten => **50,n,Goto(app-login,**50,add) exten => **50,n(NOSUCHQUEUE),System(${INSERIR} FALHA 'Local/${${CHANNEL(peername)}RAMAL_ORG}@app-callcenter/n' '${${CHANNEL(peername)}ORG}') exten => **50,n,Noop(System = ${SYSTEMSTATUS}) exten => **50,n,Noop(FILA ${${CHANNEL(peername)}DAC} NAO EXISTE!!!) exten => **50,n,Playback(agent-incorrect) exten => **50,n,Hangup() exten => **51,1,NoCDR() exten => **51,n,PauseQueueMember(,Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n) exten => **51,n,Goto(${PQMSTATUS}) exten => **51,n(PAUSED),Playback(agent-loginok) exten => **51,n,System(${ATUALIZAR} LOGIN '${${CHANNEL(peername)}AGENT}' '' '${${CHANNEL(peername)}ORG}') exten => **51,n,Set(GLOBAL(AGENTE${${CHANNEL(peername)}RAMAL})=${${CHANNEL(peername)}AGENT}) exten => **51,n,Set(DB(AGENTELOGIN/${${CHANNEL(peername)}RAMAL})=${${CHANNEL(peername)}AGENT}) exten => **51,n,Hangup() exten => **51,n(NOTFOUND),Noop(AGENTE NAO ENCONTRADO) exten => **51,n,Playback(agent-incorrect) exten => **51,n,Hangup() ;----------------------------------------------------------------------------------------------------------- ;ATENDIMENTO AUTOMATICO exten => **60,1,NoCDR() exten => **60,n,Set(__${CHANNEL(peername)}DAC=${DAC}) exten => **60,n,Set(__${CHANNEL(peername)}AGENT=${AGENT}) exten => **60,n,Set(__${CHANNEL(peername)}RAMAL=${CHANNEL(peername)}) exten => **60,n,Set(__${CHANNEL(peername)}RAMAL_ORG=${RAMAL}) exten => **60,n,Set(__${CHANNEL(peername)}ORG=${DB(ORG_ID/${CHANNEL(peername)})}) exten => **60,n,Set(__${CHANNEL(peername)}PENALIDADE=${PENALIDADE}) exten => **60,n,Set(__ATENDIMENTO=AUTO) exten => **60,n,System(asterisk -rx "agent logoff Agent/${${CHANNEL(peername)}AGENT} soft") exten => **60,n,Noop(${SYSTEMSTATUS}) exten => **60,n,RemoveQueueMember(${${CHANNEL(peername)}DAC},Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n) exten => **60,n,System(${DELETAR} '${${CHANNEL(peername)}AGENT}' '${DB(ORG_ID/${CHANNEL(peername)})}') exten => **60,n,Noop(${SYSTEMSTATUS}) exten => **60,n,Noop(${DB_DELETE(MATRICULA/${${CHANNEL(peername)}RAMAL})}) exten => **60,n(add),AddQueueMember(${${CHANNEL(peername)}DAC},Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n,${${CHANNEL(peername)}PENALIDADE},,Agent/${${CHANNEL(peername)}AGENT},Agent:${${CHANNEL(peername)}AGENT}) exten => **60,n,Noop(AddQueueMember respondeu == ${AQMSTATUS}) exten => **60,n,Goto(${AQMSTATUS}) exten => **60,n(ADDED),System(${INSERIR} LOGANDO '${${CHANNEL(peername)}AGENT}' '${${CHANNEL(peername)}ORG}') exten => **60,n,Noop(${SYSTEMSTATUS}) exten => **60,n,Goto(app-login,**61,1) exten => **60,n,Hangup() exten => **60,n(MEMBERALREADY),RemoveQueueMember(${${CHANNEL(peername)}DAC},Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n) exten => **60,n,Noop(Removido agente ${${CHANNEL(peername)}AGENT} da fila ${${CHANNEL(peername)}DAC} da organização ${${CHANNEL(peername)}ORG}) exten => **60,n,System(${DELETAR} '${${CHANNEL(peername)}AGENT}') exten => **60,n,Noop(${SYSTEMSTATUS}) exten => **60,n,System(asterisk -rx "agent logoff Agent/${${CHANNEL(peername)}AGENT} soft") exten => **60,n,Noop(${SYSTEMSTATUS}) exten => **60,n,Goto(app-login,**60,add) exten => **60,n(NOSUCHQUEUE),System(${INSERIR} FALHA '${${CHANNEL(peername)}AGENT}' '${${CHANNEL(peername)}ORG}') exten => **60,n,Noop(System = ${SYSTEMSTATUS}) exten => **60,n,Noop(FILA ${${CHANNEL(peername)}DAC} NAO EXISTE!!!) exten => **60,n,Hangup() exten => **61,1,NoCDR() exten => **61,n,PauseQueueMember(,Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n) exten => **61,n,Goto(${PQMSTATUS}) exten => **61,n(PAUSED),Goto(app-login,**62,1) exten => **61,n,Hangup() exten => **61,n(NOTFOUND),Noop(AGENTE NAO ENCONTRADO) exten => **61,n,Hangup() exten => **62,1,NoCDR() exten => **62,n,System(${ATUALIZAR} LOGIN '${${CHANNEL(peername)}AGENT}' '' '${${CHANNEL(peername)}ORG}') exten => **62,n,Noop(${SYSTEMSTATUS}) exten => **62,n,Answer() exten => **62,n,Set(CHANNEL(dtmf_features)=TH) exten => **62,n,Set(CONNECTEDLINE(all)="Aguardando" <${${CHANNEL(peername)}AGENT}>) exten => **62,n,Set(DB(MATRICULA/${${CHANNEL(peername)}RAMAL})=${${CHANNEL(peername)}AGENT}) ;exten => **62,n,Set(CHANNEL(musicclass)=agentes) exten => **62,n,AgentLogin(${${CHANNEL(peername)}AGENT}) exten => h,1,GotoIf($["${ATENDIMENTO}" = "AUTO"]?2:6) exten => h,n,RemoveQueueMember(${${CHANNEL(peername)}DAC},Local/${${CHANNEL(peername)}RAMAL}@app-callcenter/n) exten => h,n,Noop(Removido agente ${${CHANNEL(peername)}AGENT} da fila ${${CHANNEL(peername)}DAC} da organização ${${CHANNEL(peername)}ORG}) exten => h,n,System(${DELETAR} '${${CHANNEL(peername)}AGENT}') exten => h,n,Noop(${DB_DELETE(MATRICULA/${${CHANNEL(peername)}RAMAL})}) exten => h,n,Hangup() [app-callcenter] exten => _X.,1,Set(CDR_PROP(disable)=1) exten => _X.,n,Noop(BINA == ${BINA}) exten => _X.,n,GotoIf($["${AVISO}" = "OK"]?AUTO) exten => _X.,n,GotoIf($["${TIPODISCAGEM}" = "AGENTE"]?AUTO) exten => _X.,n,GotoIf($["${ISNULL(${MATRICULA-DESTINO})}" = "0"]?AUTO) exten => _X.,n,Set(BINA=${IF($[ "X${BINA}" = "X" ]?${CALLERID(NUM)}:${BINA})}) exten => _X.,n,Noop(CHAMADA ENTRANTE ${BINA} PARA O RAMAL ${EXTEN} IDENTIFICADOR => ${IDENTIFICADOR_CLI}) exten => _X.,n,Set(RAMALDIALAGENTE=${EXTEN}) exten => _X.,n,Set(DB(ULTIMO-RECEBIDO/${EXTEN})=${BINA}) exten => _X.,n,AGI(info_agente.php,BINA_AGENTE,${EXTEN},${BINA},${IDORIGEM},${CHANNEL}) exten => _X.,n,GotoIf($["${DB_EXISTS(MATRICULA/${EXTEN})}" = "0"]?MANUAL) exten => _X.,n(AUTO),AgentRequest(${DB(MATRICULA/${EXTEN})}) exten => _X.,n,Congestion() exten => _X.,n,Hangup() exten => _X.,n(MANUAL),Wait(1) exten => _X.,n,Set(RINGPADRAO=${TEMPODERING}) exten => _X.,n,Set(RING=${IF($[ "X${DB(RING/${EXTEN})}" = "X" ]? ${RINGPADRAO}: ${DB(RING/${EXTEN})} )}) exten => _X.,n,Dial(${DB(DIAL/${EXTEN})},${RING},tkrTU(macro-info-agente,s,1,(${EXTEN}))) exten => _X.,n,Noop(status-${DIALSTATUS}) exten => _X.,n,Goto(status-${DIALSTATUS}) exten => _X.,n(status-NOANSWER),PauseQueueMember(,Local/${EXTEN}@app-callcenter/n) exten => _X.,n,System(${ATUALIZAR} PAUSA-AUSENTE ${EXTEN}) exten => _X.,n,Hangup() exten => _X.,n(status-ANSWER),Noop(Chamada Atendida = ${DIALSTATUS}) exten => _X.,n,Hangup() exten => _X.,n(status-BUSY),PauseQueueMember(,Local/${EXTEN}@app-callcenter/n) exten => _X.,n,System(${ATUALIZAR} PAUSA-RECUSADA ${EXTEN}) ;exten => _X.,n,System(${ATUALIZAR} AGENTE-LOGOFF ${DB(AGENTELOGIN/${EXTEN})} ${DIALSTATUS}) ;exten => _X.,n,System(${LOGOFFAGENTE} ${DB(AGENTELOGIN/${EXTEN})} ${DAC} ${EXTEN} &) exten => _X.,n,Hangup() exten => _X.,n(status-CANCEL),PauseQueueMember(,Local/${EXTEN}@app-callcenter/n) exten => _X.,n,System(${ATUALIZAR} PAUSA-RECUSADA ${EXTEN}) ;exten => _X.,n,System(${ATUALIZAR} AGENTE-LOGOFF ${DB(AGENTELOGIN/${EXTEN})} ${DIALSTATUS}) ;exten => _X.,n,System(${LOGOFFAGENTE} ${DB(AGENTELOGIN/${EXTEN})} ${DAC} ${EXTEN} &) exten => _X.,n,Hangup() exten => _X.,n(status-CONGESTION),PauseQueueMember(,Local/${EXTEN}@app-callcenter/n) exten => _X.,n,System(${ATUALIZAR} PAUSA-RECUSADA ${EXTEN}) ;exten => _X.,n,System(${ATUALIZAR} AGENTE-LOGOFF ${DB(AGENTELOGIN/${EXTEN})} ${DIALSTATUS}) ;exten => _X.,n,System(${LOGOFFAGENTE} ${DB(AGENTELOGIN/${EXTEN})} ${DAC} ${EXTEN} &) exten => _X.,n,Hangup() exten => _X.,n(status-CHANUNAVAIL),ExecIf($["${SIPPEER(${EXTEN},curcalls)}" >= "1"]?Hangup()) exten => _X.,n,PauseQueueMember(,Local/${EXTEN}@app-callcenter/n) exten => _X.,n,System(${ATUALIZAR} PAUSA-RECUSADA ${EXTEN}) ;exten => _X.,n,System(${ATUALIZAR} AGENTE-LOGOFF ${DB(AGENTELOGIN/${EXTEN})} ${DIALSTATUS}) ;exten => _X.,n,System(${LOGOFFAGENTE} ${DB(AGENTELOGIN/${EXTEN})} ${DAC} ${EXTEN} &) exten => _X.,n,Hangup() exten => h,1,Noop(STATUS ==> ${DIALSTATUS}) exten => h,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?hangup) exten => h,n,GotoIf($["${AVISO-CLASSIFICACAO}" = "OK"]?hangup) exten => h,n,ExecIf($["${ISNULL(${RAMALDIALAGENTE})}" = "0"]?System(${ATUALIZAR} RAMAL LIVRE ${RAMALDIALAGENTE})) exten => h,n,ExecIf($["${ISNULL(${RAMALDIALAGENTE})}" = "0"]?AGI(agente_pausa.php,${DB(MATRICULA/${RAMALDIALAGENTE})})) exten => h,n(hangup),Hangup() [call-monitora] exten => s,1,NoCDR() exten => s,n,GotoIf($["X${DB(MONITORAMENTO/${RAMAL})}" = "X"]?negado) exten => s,n,GotoIf($["X${DESTINO}" = "X"]?invalido) exten => s,n,ChanSpy(${DB(DIAL/${DESTINO})},bq) exten => s,n,Hangup() exten => s,n(invalido),Playback(invalid) exten => s,n,Hangup() exten => s,n(negado),Playback(appsounds/ramal-invalido&vm-googbye) exten => s,n,Hangup() exten => h,1,Noop(Ramal ${RAMAL} monitorando => ${DESTINO}) exten => h,n,System(${MONITORAR} ${DESTINO}) exten => s,n,GotoIf($["${LGPD_VAR}" = "0"]?semlgpd) exten => h,n,AGI(intercala_lgpd.php,FIM,${RAMAL_AGENTE}) exten => h,n(semlgpd),Noop(Monitoramento sem aviso LGPD => ${LGPD_VAR}) [call-intercala] exten => s,1,NoCDR() exten => s,n,GotoIf($["X${DB(MONITORAMENTO/${RAMAL})}" = "X"]?negado) exten => s,n,GotoIf($["X${DESTINO}" = "X"]?invalido) exten => s,n,ChanSpy(${DB(DIAL/${DESTINO})},bqw) exten => s,n,Hangup() exten => s,n(invalido),Playback(invalid) exten => s,n,Hangup() exten => s,n(negado),Playback(appsounds/ramal-invalido&vm-googbye) exten => s,n,Hangup() exten => h,1,Noop(Ramal ${RAMAL} intercalando com ${DESTINO}) exten => h,n,System(${INTERCALAR} ${DESTINO}) [call-intercala-lgpd-verifica] ;CANAL_AGENTE= ;RAMAL_AGENTE= exten => s,1,NoCDR() exten => s,n,GotoIf($["${LGPD}" = "NAO"]?${CONTEXT},negado,1) exten => s,n,Set(LOOPCOUNT=0) exten => s,n,Answer() exten => s,n,Wait(1) exten => s,n(inicio),Set(TIMEOUT(digit)=2) exten => s,n,Set(TIMEOUT(response)=5) exten => s,n,Background(appsounds/monitor) ;exten => s,n,Background(press-1&press-2) exten => s,n,WaitExten() exten => 1,1,AGI(intercala_lgpd.php,SUPERVISOR,${EXTEN},${CHANNEL},${RAMAL_AGENTE},${CALLERID(num)}) ;;UTILIZAR O CHANNEL PARA DERRUBAR O MONITORAR/INTERCALAR CASO O AGENTE NAO AUTORIZE exten => 1,n,Playback(activated) exten => 1,n,Set(RAMAL=${CALLERID(num)}) exten => 1,n,Set(DESTINO=${RAMAL_AGENTE}) exten => 1,n,GotoIf($["${ENVIA_AVISO_MONITORADO}" = "NAO"]?call-monitora,s,1) ;exten => 1,n,AGI(manager.php,${CANAL_AGENTE},${FEATURES},${RAMAL_AGENTE}) exten => 1,n,AGI(intercala_lgpd.php,INICIA,${CANAL_AGENTE},${FEATURES},${RAMAL_AGENTE}) exten => 1,n,Set(CHANNEL(musicclass)=default) exten => 1,n,MusicOnHold(default,300) exten => 1,n,Playback(de-activated) ;exten => 1,n,Goto(ext-anuncios,a76,1) ;exten => 1,n,Dial(Local/${RAMAL_AGENTE}@call-intercala-lgpd-inicia/n,45,G(call-intercala-lgpd-inicia^${RAMAL_AGENTE}^1)) exten => 1,n,Hangup() exten => 2,1,AGI(intercala_lgpd.php,SUPERVISOR,${EXTEN},${CHANNEL},${RAMAL_AGENTE}) exten => 2,n,Playback(de-activated) exten => 2,n,Hangup() exten => t,1,Goto(loop,1) exten => loop,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1]) exten => loop,n,GotoIf($[${LOOPCOUNT} > 2]?desliga,1) exten => loop,n,Goto(${CONTEXT},s,inicio) exten => desliga,1,Playback(vm-goodbye) exten => desliga,n,Hangup exten => i,1,Playback(invalid) exten => i,n,Goto(loop,1) exten => negado,1,Playback(appsounds/sem_permissao) ;exten => negado,1,Playback(de-activated) exten => negado,n,Hangup() exten => h,1,AGI(intercala_lgpd.php,FIM,${RAMAL_AGENTE}) [call-intercala-lgpd-inicia] exten => _X.,1,NoCDR() exten => _X.,n,Answer() exten => _X.,n,ChanSpy(${DB(DIAL/${EXTEN})},bqw) exten => _X.,n,Hangup() [intercala-aviso] exten => s,1,NoCDR() exten => s,n,Answer() exten => s,n,Wait(0.5) exten => s,n,Playback(appsounds/monitorado) ;exten => s,n,Playback(press-1&press-2) exten => s,n,Hangup() ;[intercala-confirma] ;exten => s,1,NoCDR() ;exten => s,n,Answer() ;exten => s,n,Wait(0.5) ;exten => s,n,Playback(activated) ;exten => s,n,Hangup() ;[intercala-nega] ;exten => s,1,NoCDR() ;exten => s,n,Answer() ;exten => s,n,Wait(0.5) ;exten => s,n,Playback(de-activated) ;exten => s,n,Hangup() [audio-escuta-apl] exten => s,1,System(/usr/sbin/asterisk -rx "file convert /var/spool/asterisk/monitor/${AUDIO}.WAV /tmp/${AUDIO}.ulaw") exten => s,n,System(${ATUALIZAR} ESCUTA-CLASSIFICACAO ${CALLERID(num)} "${CHANNEL}") exten => s,n,Playback(/tmp/${AUDIO}) exten => s,n,System(/bin/rm -rf /tmp/${AUDIO}.ulaw) [app-padrao] include => ext-ramais include => ext-fila include => ext-disa include => ext-testes include => ext-conferencia include => ext-fila-login include => app-captura-custom include => ext-rotasinternas ;include => saida-pstn [padrao] ;include => parkedcalls include => aplicacoes include => app-padrao exten => *37,1,NoCDR() exten => *37,n,AGI(pbx_complemento.php,aplicacoes) exten => *37,n,GotoIf($["X${DB(MONITORAMENTO/${CHANNEL(peername)})}" = "X"]?negado) exten => *37,n(inicio),Read(DESTINO-MONITOR,vm-enter-num-to-call) exten => *37,n,GotoIf($["X${DESTINO-MONITOR}" = "X"]?invalido) exten => *37,n,ChanSpy(${DB(DIAL/${DESTINO-MONITOR})},bq) exten => *37,n,Hangup() exten => *37,n(invalido),Playback(invalid) exten => *37,n,Goto(inicio) exten => *37,n(negado),Playback(appsounds/ramal-invalido&vm-goodbye) exten => *37,n,Hangup() exten => *38,1,NoCDR() exten => *38,n,AGI(pbx_complemento.php,aplicacoes) exten => *38,n,GotoIf($["X${DB(MONITORAMENTO/${CHANNEL(peername)})}" = "X"]?negado) exten => *38,n(inicio),Read(DESTINO-MONITOR,vm-enter-num-to-call) exten => *38,n,GotoIf($["X${DESTINO-MONITOR}" = "X"]?invalido) exten => *38,n,ChanSpy(${DB(DIAL/${DESTINO-MONITOR})},bqw) exten => *38,n,Hangup() exten => *38,n(invalido),Playback(invalid) exten => *38,n,Goto(inicio) exten => *38,n(negado),Playback(appsounds/ramal-invalido&vm-goodbye) exten => *38,n,Hangup() exten => _700,1,Set(CHANNEL(dtmf_features)=K) exten => _700,n,Set(CHANNEL(parkinglot)=${CALLERID(NUM)}) exten => _700,n,ParkedCall(${CALLERID(NUM)},) exten => _700,n,Hangup() exten => _7XX,1,Set(CHANNEL(dtmf_features)=K) exten => _7XX,n,Goto(parkedcalls,${EXTEN},1) exten => _7XX,n,Hangup() exten => _X.,1,GoSub(macro-planodediscagem,s,1,(${EXTEN},${DAC},${CONTEXT:0:3})) exten => _X.,n,Hangup() [macro-planodediscagem] ; ARG1 EXTEN ; ARG2 DAC ; ARG3 CONTEXT exten => s,1,Set(__ORG_ID=${DB(ORG_ID/${CHANNEL(peername)})}) exten => s,n,Set(CDR(org_id)=${ORG_ID}) exten => s,n,Set(EXTENDESTINO=${ARG1}) exten => s,n,GoSub(macro-callerid,s,1,(INTERNO)) exten => s,n,GotoIf($["${ARG3}" = "ura"]?discadireto) exten => s,n,GotoIf($["${ISNULL(${ARG2})}" = "0"]?chamadadac) ;exten => s,n,Set(CDR(direcao)=S) exten => s,n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)})) exten => s,n,ExecIf($["${DIALPLAN_EXISTS(app-padrao,${ORG_ID}${EXTENDESTINO},1)}" = "0"]?GoSub(macro-verifica-rota,s,1,(${CALLERID(NUM)},${EXTENDESTINO},${ORG_ID}))) exten => s,n(chamadadac),ExecIf($["${ISNULL(${ARG2})}" = "0"]?GoSub(macro-verifica-rota,s,1,(${EXTENDESTINO},${EXTENDESTINO})) exten => s,n(discadireto),ExecIf($["${DIALPLAN_EXISTS(app-padrao,${ORG_ID}${EXTENDESTINO},1)}" = "1"]?Goto(app-padrao,${ORG_ID}${EXTENDESTINO},1)) exten => s,n,ExecIf($["${DIALPLAN_EXISTS(rota-${ID_ROTA},${EXTENDESTINO},1)}" = "1"]?Gosub(rota-${ID_ROTA},${EXTENDESTINO},1)) exten => s,n,GotoIf($["${DIALPLAN_EXISTS(rota-${ID_ROTA},${EXTENDESTINO},1)}" = "0"]?invalido) ;exten => s,n,Return() exten => s,n,Hangup() exten => s,n(containvalida),Playback(appsounds/conta-invalida) exten => s,n,Return() exten => s,n(alterasenha),Playback(appsounds/altere-senha) exten => s,n,Return() exten => s,n(sempermissao),Playback(appsounds/nao-tem-permissao) exten => s,n,Return() exten => s,n(limite),Playback(appsounds/linhas_ocupadas) exten => s,n,Return() exten => s,n(senha),Playback(appsounds/utilize_senha) exten => s,n,Return() exten => s,n(invalido),Playback(invalid) exten => s,n,Return() exten => h,1,GoSub(macro-hangup,s,1,(,${CONTEXT},${EXTEN})) [app-consulta] exten => _X.,1,ExecIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?Set(MATRICULA-ORIGEM=)) exten => _X.,n,ExecIf($["${ISNULL(${FILA-ORIGEM})}" = "0"]?Set(FILA-ORIGEM=)) exten => _X.,n,ExecIf($["${ISNULL(${MATRICULA})}" = "0"]?Set(MATRICULA=)) exten => _X.,n,Set(RAMAL=${CALLERID(NUM)}) exten => _X.,n,Goto(padrao,${EXTEN},1) exten => _X.,n,Hangup() [app-agendamento] ; 1 => Grupo ; 2 => Agente ; 3 => Agente/Grupo exten => _X.,1,GotoIf($["${AGD_TIPO}" = "1"]?grupo) exten => _X.,n,AGI(status_agendamento_agentes.php,${AGENTE},${EXTEN},${TIPOLIGACAO},${ID_CLI}) exten => _X.,n,Dial(Agent/${AGENTE},30,TtU(macro-info-agente,s,1,(AGENDAMENTO,${AGENTE},${CHANNEL},${CMP_ID}))) exten => _X.,n(grupo),GotoIf($["${AGD_TIPO}" = "2"]?sair) exten => _X.,n,Goto(ext-campanha,${CMP_ID},1) exten => _X.,n(sair),Hangup() exten => h,1,System(${ATUALIZAR} CAMPANHA ${AGENTE}) [ext-agendamento] exten => _X.,1,Noop(PERMISSAO=${PERMISSAO},AGD_ID=${AGD_ID},ID_CLI=${ID_CLI},TIPOLIGACAO=${TIPOLIGACAO},AGENTE=${AGENTE},CAMPANHA=${CAMPANHA},AGD_TIPO=${AGD_TIPO}) exten => _X.,n,AGI(agendamento.php,${CAMPANHA},${AGD_ID}) exten => _X.,n,Goto(saida-campanha-${CAMPANHA},${EXTEN},1) exten => _X.,n,Hangup() [ext-transbordo] exten => _X.,1,ResetCDR(w) ;exten => _X.,n,Set(__MONITOR_FILENAME=) ;exten => _X.,n,Set(__CDR(userfield)=) exten => _X.,n,QueueLog(${FILA1},${UNIQUEID},NONE,TRANSBORDANDO) exten => _X.,n,QueueLog(${FILA2},${UNIQUEID},NONE,TRANSBORDADO) exten => _X.,n,Goto(ext-fila,${EXTEN},1) exten => _X.,n,Hangup() [dial-agente] exten => _X.,1,Wait(0.5) exten => _X.,n,Dial(Agent/${EXTEN},,gt) exten => _X.,n,System(${ATUALIZAR} LIVRE ${EXTEN}) exten => _X.,n,SoftHangup(${CHANNEL}) exten => h,1,System(${ATUALIZAR} LIVRE ${agente}) exten => h,n,SoftHangup(${CHANNEL}) [estacionamento] exten => _X.,1,NoCDR() exten => _X.,n,Answer() exten => _X.,n,Noop(CHAMADA ESTACIONADA EM : ${PARKEDAT}) exten => _X.,n,Set(DB(ESTACIONA/${EXTEN})=${PARKEDAT}) exten => _X.,n,Hangup() [app-mute] exten => _X.,1,ResetCDR(w) exten => _X.,n,Set(DB(ESPERA/${EXTEN})=V) exten => _X.,n,Set(DB(ATUALIZA/${EXTEN})=F) exten => _X.,n,Set(CONFNO=${DB(SALA/CONFERENCIA/DINAMICA)}) exten => _X.,n,Set(DB(SALA/CONFERENCIA/DINAMICA)=${IF($[ ${CONFNO} + 1 > 9025 ]?9000:$[ ${CONFNO} + 1 ])}) exten => _X.,n,Set(DB(SALA/${EXTEN})=${CONFNO}) exten => _X.,n,Set(OPTS=A) exten => _X.,n(sala),MeetMe(${DB(SALA/${EXTEN})},1qx${OPTS}) exten => _X.,n,Hangup() [app-espera] exten => _X.,1,ResetCDR(w) exten => _X.,n,GotoIf($["X${CONSULTANDO}" = "X"]?app-transfere,${EXTEN},1) exten => _X.,n,Answer() exten => _X.,n,Set(_OPTS=A) exten => _X.,n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?default:${CHANNEL(musicclass)})}) exten => _X.,n,ParkAndAnnounce(,c(app-atendentes,${EXTEN:0:4},1)t(1200),appsounds/teste_silencio,Local/${EXTEN:0:4}@estacionamento) [app-transfere] exten => _X.,1,ResetCDR() exten => _X.,n,Set(__TRANSFER=${IDORIGEM}) exten => _X.,n,Set(CONTEXTORAMAL=padrao) exten => _X.,n,Set(__CONSULTA=SIM) exten => _X.,n,Set(DESTINO=${EXTEN:4}) ;exten => _X.,n,Set(MATRICULA=${EXTEN:0:4}) exten => _X.,n,Set(__DAC="") exten => _X.,n,Set(DB(TRANSFER/${EXTEN:0:4})=F) exten => _X.,n,Set(DB(CONFERENCIA/${EXTEN:0:4})=F) exten => _X.,n,AGI(resolve_callerid.php,${CHANNEL}) exten => _X.,n,Dial(Local/${DESTINO}@${CONTEXTORAMAL}/n,,rgU(macro-get-canal-transfer,s,1,(${EXTEN:0:4}))) exten => _X.,n,Noop(sair => ${SAIR}) exten => _X.,n,Set(__ESPERA_AGENTE=) exten => _X.,n,GotoIf($["${SAIR}" = "OK"]?sair) exten => _X.,n,Wait(1) exten => _X.,n,AGI(facilidades_callcenter.php,RETORNA_TRANSFER,${EXTEN:0:4}) exten => _X.,n,Set(__ESPERA_AGENTE=) exten => _X.,n(transfere),Set(DB(TRANSFER/${EXTEN:0:4})=V) exten => _X.,n,AGI(agente_pausa.php,${EXTEN:0:4}) exten => _X.,n,ChannelRedirect(${CHANNEL},app-estaciona,${EXTEN:0:4},1) ;exten => _X.,n(sair),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => _X.,n(sair),Hangup() exten => h,1,GoSub(macro-hangup,s,1,(,${CONTEXT},${EXTEN})) [app-estaciona] exten => _X.,1,ResetCDR(w) exten => _X.,n,ParkedCall(,${DB(ESTACIONA/${EXTEN})}) exten => _X.,n,Hangup() exten => h,1,GoSub(macro-hangup,s,1,(,${CONTEXT},${EXTEN})) [app-conferencia] exten => _X.,1,NoCDR() exten => _X.,n,Set(DB(CONFERENCIA/${EXTEN})=V) exten => _X.,n,Set(CONFNO=${DB(SALA/CONFERENCIA/DINAMICA)}) exten => _X.,n,Set(DB(SALA/CONFERENCIA/DINAMICA)=${IF($[ ${CONFNO} + 1 > 9025 ]?9000:$[ ${CONFNO} + 1 ])}) exten => _X.,n,Set(DB(SALA/${EXTEN})=${CONFNO}) exten => _X.,n,ChannelRedirect(${DB(CLIENTE/${EXTEN})},app-conferencia,${EXTEN},sala) exten => _X.,n(sala),MeetMe(${DB(SALA/${EXTEN})},1qx${OPTS}) exten => _X.,n,Hangup() exten => h,1,Noop(Saindo da conferencia : matricula ${MATRICULA}) exten => h,n,GotoIf($["${CHANNEL:0:5}" != "Agent"]?desliga) ;exten => h,n,System(${ATUALIZAR} CAMPANHA ${MATRICULA}) exten => h,n,GotoIf($["${DB(DISCAGEM/${MATRICULA})}" = "MANUAL"]?manual) exten => h,n,System(${ATUALIZAR} CAMPANHA ${MATRICULA}) exten => h,n,AGI(agente_pausa.php,${MATRICULA}) exten => h,n,Hangup() exten => h,n(manual),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => h,n,AGI(agente_pausa.php,${MATRICULA}) exten => h,n,Set(DB(DISCAGEM/${MATRICULA})=F) exten => h,n,Set(DB(ESPERA/${MATRICULA})=F) exten => h,n(desliga),Hangup() [app-atendentes] ;exten => _X.,1,NoCDR() exten => _X.,1,Wait(0.5) exten => _X.,n,Dial(Agent/${EXTEN},,Tg) ;exten => _X.,n,System(${ATUALIZAR} CAMPANHA ${MATRICULA}) exten => _X.,n,GotoIf($["${DB(DISCAGEM/${EXTEN})}" = "MANUAL"]?manual) exten => _X.,n,AGI(agente_pausa.php,${MATRICULA}) exten => _X.,n,System(${ATUALIZAR} CAMPANHA ${MATRICULA}) exten => _X.,n,Set(DB(ESPERA/${EXTEN})=F) exten => _X.,n,Set(MATRICULA=) exten => _X.,n,Hangup() exten => _X.,n(manual),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => _X.,n,AGI(agente_pausa.php,${MATRICULA}) exten => _X.,n,Set(DB(DISCAGEM/${MATRICULA})=F) exten => _X.,n,Set(DB(ESPERA/${EXTEN})=F) exten => _X.,n,Set(MATRICULA=) exten => _X.,n,Hangup() exten => h,1,GotoIf($["${CHANNEL:0:6}" = "Parked"]?desliga) exten => h,n,GotoIf($["${DB(DISCAGEM/${MATRICULA})}" = "MANUAL"]?manual) exten => h,n,AGI(agente_pausa.php,${MATRICULA}) exten => h,n,System(${ATUALIZAR} CAMPANHA ${MATRICULA}) exten => h,n,Set(DB(ESPERA/${MATRICULA})=F) exten => h,n,Hangup() exten => h,n(manual),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => h,n,AGI(agente_pausa.php,${MATRICULA}) exten => h,n,Set(DB(DISCAGEM/${MATRICULA})=F) exten => h,n,Set(DB(ESPERA/${MATRICULA})=F) exten => h,n(desliga),Hangup() [semi-automatico] exten => _X.,1,Dial(Agent/${EXTEN},,Tt) exten => _X.,n,Hangup() [detect] exten => s,1,Set(MACHINE=0) exten => s,2,Answer() exten => s,3,BackgroundDetect(silence/5, 1000, 50) exten => s,4,Noop(answering machine detected) exten => s,5,Set(MACHINE=1) exten => s,6,BackgroundDetect(silence/30, 1000, 50) exten => s,7,Noop(too long of a message) exten => s,8,Hangup() exten => talk,1,GotoIf($[${MACHINE}=1]?2:5) exten => talk,2,Noop(� MAQUINA!!!!) exten => talk,3,Goto(padrao,200,1) ; this is a machine exten => talk,4,Hangup() exten => talk,5,Noop(� HUMANO!!!!) exten => talk,6,Goto(padrao,300,1) ; this is a human exten => talk,7,Hangup() ;Aplica��es Mesa Operadora - Alan Pablo: 2012-02-11 - Cuiab� - MT [app-espera-mesa] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,Answer() exten => _OFFX.,n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?default:${CHANNEL(musicclass)})}) exten => _OFFX.,n,ParkAndAnnounce(,c(padrao,${EXTEN:9},1)t(1200),beep,Local/${EXTEN}@estacionamento-mesa) [estacionamento-mesa] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,Answer() exten => _OFFX.,n,Noop(CHAMADA ESTACIONADA EM : ${PARKEDAT}) exten => _OFFX.,n,Set(DB(ESTACIONAMESA/${EXTEN})=${PARKEDAT}) [app-recupera-espera] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,ParkedCall(,${DB(ESTACIONAMESA/${EXTEN})}) exten => _OFFX.,n,Hangup() exten => h,1,Noop(MATRICULAMESA = ${MATRICULAMESA}) exten => h,n,System(${ATUALIZAR} LIVRE ${MATRICULAMESA}) exten => h,n,AGI(agente_pausa.php,${MATRICULAMESA}) exten => h,n,Hangup() [app-transfere-mesa] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,GotoIf($["X${DESTINO}" = "X"]?app-espera-mesa,${EXTEN},1) exten => _OFFX.,n,Set(__PERMISSAO=OK) exten => _OFFX.,n,Set(__DAC="") exten => _OFFX.,n,Dial(Local/${DESTINO}@padrao/n,,rg) exten => _OFFX.,n,Noop(CANAL => ${CHANNEL} , VARIAVEL SAIR => ${SAIR}) exten => _OFFX.,n,GotoIf($["${SAIR}" = "OK"]?sair) exten => _OFFX.,n,ChannelRedirect(${CHANNEL},app-recupera-espera,${EXTEN},1) exten => _OFFX.,n(sair),Hangup() [app-captura-chamada-mesa] exten => _X.,1,PickUp(${EXTEN}@PICKUPMARK) exten => _X.,n,Hangup() ;Final - Mesa Operadora ;Aplica��es Virtual Fone - Alan Pablo: 2012-06-23 - Cuiab� - MT [app-pendulo-vf] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,Noop(CANALSECUNDARIO = ${CANALSECUNDARIO}) exten => _OFFX.,n,GotoIf($["${CANALSECUNDARIO}" = "SIM"]?app-espera-mesa,${EXTEN},1) exten => _OFFX.,n,ChannelRedirect(${CHANNEL},app-aguarda-vf,${EXTEN},1) exten => _OFFX.,n(sair),Hangup() [app-aguarda-vf] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,Answer() exten => _OFFX.,n,Wait(3600) exten => _OFFX.,n,Hangup() [app-conferencia-vf] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,Noop(CANALSECUNDARIO = ${CANALSECUNDARIO}) exten => _OFFX.,n,GotoIf($["${CANALSECUNDARIO}" = "SIM"]?app-conferencia-vf,${EXTEN},sala) exten => _OFFX.,n,Set(CONFNO=${DB(SALA/CONFERENCIA/DINAMICA)}) exten => _OFFX.,n,Set(DB(SALA/${EXTEN})=${CONFNO}) exten => _OFFX.,n,Set(DB(SALA/CONFERENCIA/DINAMICA)=${IF($[ ${CONFNO} + 1 > 9025 ]?9000:$[ ${CONFNO} + 1 ])}) exten => _OFFX.,n,Wait(1) exten => _OFFX.,n(sala),Wait(1) exten => _OFFX.,n,MeetMe(${DB(SALA/${EXTEN})},1qxM) exten => _OFFX.,n,Hangup() [app-inicia-mute-vf] exten => _OFFX.,1,NoCDR() exten => _OFFX.,n,Noop(CANALSECUNDARIO = ${CANALSECUNDARIO}) exten => _OFFX.,n,GotoIf($["${CANALSECUNDARIO}" = "SIM"]?app-inicia-mute-vf,${EXTEN},sala) exten => _OFFX.,n,Set(CONFNO=${DB(SALA/CONFERENCIA/DINAMICA)}) exten => _OFFX.,n,Set(DB(SALA/${EXTEN})=${CONFNO}) exten => _OFFX.,n,Set(DB(SALA/CONFERENCIA/DINAMICA)=${IF($[ ${CONFNO} + 1 > 9025 ]?9000:$[ ${CONFNO} + 1 ])}) exten => _OFFX.,n,Set(OPTS=m) exten => _OFFX.,n,Wait(1) exten => _OFFX.,n(sala),Wait(1) exten => _OFFX.,n,MeetMe(${DB(SALA/${EXTEN})},1qx${OPTS}) exten => _OFFX.,n,Hangup() ;Final - Virtual Fone [ext-conferencia-dinamica] exten => _X.,1,Answer() exten => _X.,n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?default:${CHANNEL(musicclass)})}) exten => _X.,n,Set(CONFNO=${EXTEN}) exten => _X.,n,Set(MEETME_EXIT_CONTEXT=ext-convite-conferencia-dinamica) exten => _X.,n,Set(DYNAMIC_FEATURES=) exten => _X.,n,MeetMe(${CONFNO},dMX1) exten => _X.,n,Hangup() [ext-convite-conferencia-dinamica] exten => 1,1,Read(DEST,dial,,i) exten => 1,n,Set(DYNAMIC_FEATURES=app-adiciona-conferencia#app-naoadiciona-conferencia) exten => 1,n,Dial(Local/${DEST}@padrao,,gH) exten => 1,n,Set(DYNAMIC_FEATURES=) exten => 1,n,Goto(ext-conferencia-dinamica,${CONFNO},1) exten => i,1,Goto(ext-conferencia-dinamica,${CONFNO},1) [aplicacoes] include => app-conferencia-dinamica include => app-identifica-ramal include => app-echo include => app-hora include => app-troca-senha-ramal include => app-nao-pertube include => app-siga-me include => app-rechamada include => app-cadeado include => app-chamada-espera include => app-identifica-vm include => app-acessa-vm include => app-agenda-ramal include => app-agenda-publica include => app-ultimo-recebido include => app-discagem-agenda include => app-monitoramento include => app-intercalar include => troca-senha include => captura-chamada include => app-ausencia-grupo include => parkedcalls [ext-voicemail] exten => _X.,1(ocupado),AGI(pbx_complemento.php,ext-voicemail) exten => _X.,2,Voicemail(${DB(VM/${EXTEN})}@default,b) exten => _X.,3,Hangup() exten => _X.,4(ausente),AGI(pbx_complemento.php,ext-voicemail) exten => _X.,5,Voicemail(${DB(VM/${EXTEN})}@default,u) exten => _X.,6,Hangup() exten => _X.,7(silencio),AGI(pbx_complemento.php,ext-voicemail) exten => _X.,8,Voicemail(${DB(VM/${EXTEN})}@default,s) exten => _X.,9,Hangup() exten => h,1,GoSub(macro-hangup,s,1,(,${CONTEXT},${EXTEN})) [disa] include => disa_custom exten => _X.,1,AGI(pbx_complemento.php,disa) exten => _X.,n,Dial(Local/${EXTEN}@padrao/n) exten => _X.,n,Hangup() [ext-rechamada-automatica] exten => _X.,1,AGI(pbx_complemento.php,ext-rechamada-automatica) exten => _X.,n,Background(vm-dialout) exten => _X.,n,Set(CALLERID(num)=${NUM_DESTINO}) exten => _X.,n,Set(CHANNEL(musicclass)=${DB(MUSICA-ESPERA/${EXTEN})}) exten => _X.,n,RetryDial(,10,0,${DB(DIAL/${EXTEN})},${TEMPODERING},${OPCOESDIAL}m(${CHANNEL(musicclass)})) exten => _X.,n,Hangup() [ext-callback] exten => _X.,1,AGI(pbx_complemento.php,ext-callback) exten => _X.,n,Background(vm-dialout) exten => _X.,n,Set(CHANNEL(musicclass)=${DB(MUSICA-ESPERA/${EXTEN})}) exten => _X.,n,Set(CALLERID(num)=${RAMAL}) exten => _X.,n,RetryDial(,10,0,${DB(DIAL/${EXTEN})},${TEMPODERING},${OPCOESDIAL}m(${CHANNEL(musicclass)})) exten => _X.,n,Hangup() [callback] exten => _X.,1,AGI(pbx_complemento.php,callback) exten => _X.,n,Set(RAMAL-DESTINO=${CALLERID(NUM)}) exten => _X.,n,Set(RAMAL-ORIGEM=${DB(DIAL/${EXTEN})}) exten => _X.,n,Set(RAMAL=${EXTEN}) ;exten => _X.,n,Set(BINA=${DB(BINA-NOME/${EXTEN})}) exten => _X.,n,System(/var/lib/asterisk/scripts/callback.sh ${RAMAL-ORIGEM} ${RAMAL-DESTINO} ${RAMAL}) exten => _X.,n,Background(activated) exten => _X.,n,Hangup() [chamada-espera] exten => _X.,1,AGI(pbx_complemento.php,chamada-espera) exten => _X.,n,GotoIf($["${TIPO}" = "EXTERNA"]?inicio) exten => _X.,n,GotoIf($["${DB(VM/${EXTEN})}" = "${EXTEN}"]?espera-com-voicemail) exten => _X.,n,Read(DIGITO,appsounds/espera-sem-voicemail,1,,1,3) exten => _X.,n,GotoIf($["${DIGITO}" = "1"]?callback,${EXTEN},1:inicio) exten => _X.,n(espera-com-voicemail),Read(DIGITO,appsounds/espera-com-voicemail,1,,1,3) exten => _X.,n,GotoIf($["${DIGITO}" = "1"]?callback,${EXTEN},1) exten => _X.,n,GotoIf($["${DIGITO}" = "2"]?ext-voicemail,${EXTEN},silencio:inicio) exten => _X.,n(inicio),Set(DEST=${EXTEN}) ;exten => _X.,n,Set(ATUAL=${DB_EXISTS(POSICAO/${DEST})}) ;exten => _X.,n,Noop(VALOR ==== ${ATUAL}) ;exten => _X.,n,ExecIf($["${ATUAL}" = "0"]?Set(DB(POSICAO/${DEST})=1)) ;exten => _X.,n,ExecIf($["${ATUAL}" != "0"]?Set(DB(POSICAO/${DEST})=$[${DB(POSICAO/${DEST})}+1])) ;exten => _X.,n,Set(POSICAO=${DB(POSICAO/${DEST})}) ;exten => _X.,n,Noop(POSICAO === ${POSICAO}) ;exten => _X.,n,Set(DB(AGUARDANDO/${DEST}/${POSICAO})=${CHANNEL}) ;exten => _X.,n,GotoIf($[${POSICAO} = 1 ]?discando) ;exten => _X.,n(discando),Set(DISCA=OK) exten => _X.,n,Answer() exten => _X.,n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?default:${CHANNEL(musicclass)})}) exten => _X.,n,RetryDial(,5,0,${DB(DIAL/${EXTEN})},${TEMPODERING},${OPCOESDIAL}m(${CHANNEL(musicclass)})) exten => _X.,n,Hangup() ;exten => h,1,GotoIf($["${DISCA}" = "OK"]?proximo) ;exten => h,n,Set(DB(AGUARDANDO/${DEST}/${POSICAO})=OFF) ;exten => h,n,Goto(macro-dial-interno,h,1) ;exten => h,n(proximo),Set(POSICAO=$[${POSICAO}+1]) ;exten => h,n,GotoIf($["${DB(AGUARDANDO/${DEST}/${POSICAO})}" = "OFF"]?limpa) ;exten => h,n,GotoIf($[${DB_EXISTS(AGUARDANDO/${DEST}/${POSICAO})} = 0]?limpa) ;;exten => h,n,ChannelRedirect(${DB(AGUARDANDO/${DEST}/${POSICAO})},${CONTEXT},${DEST},discando) ;exten => h,n,Goto(macro-dial-interno,h,1) ;exten => h,n(limpa),DBdeltree(AGUARDANDO/${DEST}) ;exten => h,n,DBdeltree(POSICAO/${DEST}) ;;exten => h,n,Goto(macro-dial-interno,h,1) exten => h,1,GoSub(macro-hangup,s,1,(,${CONTEXT},${EXTEN})) ;Controle das ligacoes recebidas pelos agentes quando logados [app-dial-agente] exten => _X.,1,Wait(0.5) exten => _X.,n,Set(DB(CANAL/${MATRICULA-DESTINO}/${IDORIGEM})=) exten => _X.,n,Set(__CALLCENTER-DESTINO=) exten => _X.,n,Set(__CANALORIGEM=${CHANNEL}) exten => _X.,n,AGI(pbx_complemento.php,fila-ramal,${RAMALAGENTE}) exten => _X.,n,Noop(matricula = ${MATRICULA-DESTINO}, fila = ${FILA-DESTINO}, direcao = ${DIRECAO}, tipo = ${TIPO}, uniqueid = ${UNIQUEID}, RAMAL - ${RAMALAGENTE}) ;exten => _X.,n,AGI(info_agente.php,DIAL_AGENTE,${MATRICULA-DESTINO},${UNIQUEID}) ;exten => _X.,n,Set(INICIO_DIAL=$[${EPOCH}]) ;exten => _X.,n,Set(__DIRECAO=${DIRECAO}) ;exten => _X.,n,Dial(Agent/${EXTEN},,gtU(macro-eventos-conecta-agente,s,1,(${FILA},${UNIQUEID},${MATRICULA},${INICIO_DIAL},${CHANNEL}))) exten => _X.,n,QueueLog(${FILA-DESTINO},${UNIQUEID},Agent/${MATRICULA-DESTINO},CHAMANDO,ENTRADA,${TIPO},${CALLERID(NUM)}) exten => _X.,n,Set(TRANSFERENCIA=${IF($[ "${TIPO}" = "INTERNA" ]? TK:)}) exten => _X.,n,Set(RINGPADRAO=${TEMPODERING}) exten => _X.,n,Set(RING=${IF($[ "X${DB(RING/${RAMALAGENTE})}" = "X" ]? ${RINGPADRAO}: ${DB(RING/${RAMALAGENTE})} )}) exten => _X.,n,Set(DIALAGENTE=${IF($[ "${MODOATENDIMENTO}" = "AUTO" ]? Local/${RAMALAGENTE}@app-callcenter/n: ${DB(DIAL/${RAMALAGENTE})} )}) exten => _X.,n,Dial(${DIALAGENTE},${RING},${TRANSFERENCIA}gtkU(macro-eventos-conecta-agente,s,1,(${FILA-DESTINO},${UNIQUEID},${MATRICULA-DESTINO},${INICIO_DIAL},${CHANNEL}))) exten => _X.,n,Set(FIM_DIAL=$[${EPOCH}]) ;exten => _X.,n,Set(EVENTO=$[COMPLETAAGENT]) ;Alterado para COMPLETEAGENT para identificar as ligacoes de entrada (relatorios e audio) exten => _X.,n,Set(EVENTO=$[COMPLETEAGENTRAMAL]) ;exten => _X.,n,SoftHangup(${CHANNEL}) ;Hangup() exten => _X.,n,Goto(status-${DIALSTATUS}) exten => _X.,n,Hangup() exten => _X.,n(status-ANSWER),Set(TEMPO_ESPERA=$[${FIM_DIAL} - ${INICIO_DIAL} - ${ANSWEREDTIME}]) ;exten => _X.,n,GotoIf($[${ISNULL(${EVENTO})} ]?evento:queuelog) ;exten => sw-3-ANSWER,n,Set(EVENTO=$[COMPLETACALLER]) ;Alterado para COMPLETECALLER para identificar as ligacoes de entrada (relatorios e audio) ;exten => sw-3-ANSWER,n,Set(EVENTO=$[COMPLETECALLER]) ;Alterado para COMPLETECALLERRAMAL para identificar as ligacoes de entrada direto no ramal do agente - chamadas que nao sao da fila ;exten => _X.,n(evento),Set(EVENTO=$[COMPLETECALLERRAMAL]) exten => _X.,n,GotoIf($[${ISNULL(${MATRICULA-DESTINO})}]?desliga) exten => _X.,n(queuelog),QueueLog(${FILA-DESTINO},${UNIQUEID},Agent/${MATRICULA-DESTINO},${EVENTO},${TEMPO_ESPERA},${ANSWEREDTIME}) exten => _X.,n(desliga),Hangup() exten => _X.,n(status-BUSY),Set(TEMPO_ESPERA=$[${FIM_DIAL} - ${INICIO_DIAL}]) exten => _X.,n,System(${ATUALIZAR} LIVRE ${MATRICULA-DESTINO}) exten => _X.,n,Set(EVENTO=$[BUSY]) exten => _X.,n,QueueLog(${FILA-DESTINO},${UNIQUEID},NONE,BUSY,1,1,${TEMPO_ESPERA}) exten => _X.,n,Set(_OCUPADO=) exten => _X.,n,GotoIf($["${DB(SIGAME-OCUPADO/${RAMALAGENTE})}" != "F"]?sigameocupado) exten => _X.,n,GotoIf($["${DB(CHAMADA-ESPERA/${RAMALAGENTE})}" = "V"]?chamada-espera,${ARG1},1) exten => _X.,n,GotoIf($["F${DB(VM/${RAMALAGENTE})}" != "F"]?ext-voicemail,${RAMALAGENTE},ocupado) exten => _X.,n,Hangup() exten => _X.,n(status-NOANSWER),PauseQueueMember(,Local/${RAMALAGENTE}@app-callcenter/n) exten => _X.,n,System(${ATUALIZAR} PAUSA-AUSENTE ${RAMALAGENTE}) exten => _X.,n,Set(TEMPO_ESPERA=$[${FIM_DIAL} - ${INICIO_DIAL}]) exten => _X.,n,Set(EVENTO=$[NOANSWER]) exten => _X.,n,QueueLog(${FILA-DESTINO},${UNIQUEID},NONE,NOANSWER,1,1,${TEMPO_ESPERA}) exten => _X.,n,GotoIf($["${DB(SIGAME-NAOATENDE/${RAMALAGENTE})}" != "F"]?sigamenaoatende) exten => _X.,n,GotoIf($["F${DB(VM/${RAMALAGENTE})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => _X.,n,Hangup() exten => _X.,n(status-CHANUNAVAIL),Goto(status-NOANSWER) exten => _X.,n,Hangup() exten => _X.,n(status-CANCEL),Goto(status-NOANSWER) exten => _X.,n,Hangup() exten => _X.,n(status-CONGESTION),Goto(status-NOANSWER) exten => _X.,n,Hangup() exten => _X.,n(sigameocupado),Noop(SIGAME OCUPADO ATIVADO PARA ${DB(SIGAME-OCUPADO/${RAMALAGENTE})}) exten => _X.,n,Set(__PERMISSAO=OK) exten => _X.,n,Set(__MATRICULA-DESTINO=) ;exten => s,n,Set(CALLERID(num)=${ARG1}) exten => _X.,n,Goto(padrao,${DB(SIGAME-OCUPADO/${RAMALAGENTE})},1) ;exten => s,n,Busy(1) exten => _X.,n,Hangup() exten => _X.,n(sigamenaoatende),Noop(SIGAME NAO ATENDE ATIVADO PARA AGT ${DB(SIGAME-NAOATENDE/${RAMALAGENTE})}) exten => _X.,n,Set(__PERMISSAO=OK) exten => _X.,n,Set(__MATRICULA-DESTINO=) ;exten => s,n,Set(CALLERID(num)=${ARG1}) exten => _X.,n,Goto(padrao,${DB(SIGAME-NAOATENDE/${RAMALAGENTE})},1) ;exten => s,n,Busy(1) exten => _X.,n,Hangup() ;exten => h,1,GotoIf($[${ISNULL(${FIM_DIAL})} ]?2:3) ;exten => h,2,Set(FIM_DIAL=$[${EPOCH}]) ;exten => h,3,NoOp(Finish if-catch-h-1-2) ;exten => h,4,Goto(sw-3-${DIALSTATUS},10) ;exten => h,5,NoOp(Finish switch-catch-h-1-3) exten => h,1,GotoIf($["${DIALSTATUS}" != "ANSWER"]?fim) exten => h,n,GotoIf($["${EVENTO}" = "COMPLETEAGENTRAMAL"]?fim) exten => h,n,GotoIf($[${ISNULL(${FIM_DIAL})} ]?fimdial:tempoespera) exten => h,n(fimdial),Set(FIM_DIAL=$[${EPOCH}]) exten => h,n(tempoespera),Set(TEMPO_ESPERA=$[${FIM_DIAL} - ${INICIO_DIAL} - ${ANSWEREDTIME}]) ;exten => h,n,GotoIf($[${ISNULL(${EVENTO})} ]?evento:queuelog) ;exten => sw-3-ANSWER,n,Set(EVENTO=$[COMPLETACALLER]) ;Alterado para COMPLETECALLER para identificar as ligacoes de entrada (relatorios e audio) ;exten => sw-3-ANSWER,n,Set(EVENTO=$[COMPLETECALLER]) ;Alterado para COMPLETECALLERRAMAL para identificar as ligacoes de entrada direto no ramal do agente - chamadas que nao sao da fila exten => h,n(evento),Set(EVENTO=$[COMPLETECALLERRAMAL]) exten => h,n,GotoIf($[${ISNULL(${MATRICULA-DESTINO})}]?matriculaorigem) exten => h,n,QueueLog(${FILA-DESTINO},${UNIQUEID},Agent/${MATRICULA-DESTINO},${EVENTO},${TEMPO_ESPERA},${ANSWEREDTIME}) exten => h,n(fim),System(${ATUALIZAR} LIVRE ${MATRICULA-DESTINO}) exten => h,n,System(${ATUALIZAR} CANALTRANSFER ${CUT(TRANSFERERNAME,@,1)}) exten => h,n,AGI(${INTEGRACAO_ABD},${IDORIGEM},${FILA-DESTINO},${BINA_RETORNO},${MATRICULA-DESTINO}) exten => h,n,AGI(agente_pausa.php,${MATRICULA-DESTINO}) ;exten => h,n(matriculaorigem),QueueLog(${FILA-ORIGEM},${UNIQUEID},Agent/${MATRICULA-ORIGEM},${EVENTO},${TEMPO_ESPERA},${ANSWEREDTIME}) exten => h,n(matriculaorigem),ExecIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?QueueLog(${FILA-ORIGEM},${UNIQUEID},Agent/${MATRICULA-ORIGEM},COMPLETACALLERRAMAL,${TEMPO_ESPERA},${ANSWEREDTIME})) exten => h,n,ExecIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?System(${ATUALIZAR} LIVRE ${MATRICULA-ORIGEM})) exten => h,n,ExecIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?AGI(${INTEGRACAO_ABD},${IDORIGEM},${FILA-ORIGEM},${BINA_RETORNO},${MATRICULA-ORIGEM})) exten => h,n,ExecIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?AGI(agente_pausa.php,${MATRICULA-ORIGEM})) [app-aguarda] exten => _X.,1,NoCDR() exten => _X.,n,Answer() exten => _X.,n,Wait(3600) exten => _X.,n,Hangup() [default] exten => s,1,System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,Hangup() ;Macros do Sistema [macro-verifica-dial-agente] exten => s,1,ExecIf($["${ISNULL(${MATRICULA-DESTINO})}" = "1"]?Return()) exten => s,n,Set(FIM_DIAL=$[${EPOCH}]) exten => s,n,Set(EVENTO=$[COMPLETEAGENTRAMAL]) exten => s,n,Set(INICIO_ATENDIMENTO=${DB(INICIO_ATENDIMENTO/${UNIQUEID})}) exten => s,n,Set(TEMPO_CHAMANDO=$[${INICIO_ATENDIMENTO} - ${INICIO_DIAL}]) exten => s,n,Set(DURACAO=$[${FIM_DIAL} - ${INICIO_ATENDIMENTO}]) exten => s,n,Noop(FILA-DESTINO = ${FILA-DESTINO}) exten => s,n,Noop(UNIQUEID = ${UNIQUEID}) exten => s,n,Noop(MATRICULA-DESTINO = ${MATRICULA-DESTINO}) exten => s,n,Noop(EVENTO = ${EVENTO}) exten => s,n,Noop(TEMPO_CHAMANDO = ${TEMPO_CHAMANDO}) exten => s,n,Noop(DURACAO = ${DURACAO}) exten => s,n,QueueLog(${FILA-DESTINO},${UNIQUEID},Agent/${MATRICULA-DESTINO},${EVENTO},${TEMPO_CHAMANDO},${DURACAO}) exten => s,n,Set(DB(CANAL/${MATRICULA-DESTINO}/${IDORIGEM})=DESLIGADO) exten => s,n,System(${ATUALIZAR} LIVRE ${MATRICULA-DESTINO}) exten => s,n,AGI(agente_pausa.php,${MATRICULA-DESTINO}) exten => s,n,Return() ;Macro para liga��es originadas por agentes [macro-origina-agente] exten => s,1,Set(__TIPO=${IF($[ "X${TIPO}" = "X" ]?INTERNA:${TIPO})}) ;VERIFICAR O POR QUE ?? exten => s,n,Noop(matricula = ${MATRICULA-ORIGEM}, fila = ${FILA}, direcao = ${DIRECAO}, tipo = ${TIPO}, uniqueid = ${UNIQUEID}) exten => s,n,QueueLog(${FILA-ORIGEM},${UNIQUEID},Agent/${MATRICULA-ORIGEM},CHAMANDO,SAIDA,${TIPO},${RAMAL}) exten => s,n,GoSub(macro-gravacao,s,1,(OUT,${RAMAL})) exten => s,n,Return() ;exten => s,1,PauseQueueMember(,Agent/${ARG4}) ;exten => s,n,Set(ORIGEM=${ARG1}) ;exten => s,n,Set(DIALSTRING=${ARG2}) ;exten => s,n,Set(FILA=${ARG3}) ;exten => s,n,Set(MATRICULA=${ARG4}) ;exten => s,n,Set(DESTINO=${ARG5}) ;ramal ou numero para o qual o atendente est� ligando ;exten => s,n,AGI(info_agente.php,ORIGINA_AGENTE,${MATRICULA-ORIGEM},${UNIQUEID}) ;exten => s,n,Set(INICIO_DIAL=$[${EPOCH}]) [macro-eventos-conecta-agente] ;ARG1 -> Recebe o nome da fila ;ARG2 -> Recebe o uniqueid/idorigem da chamada ;ARG3 -> Recebe a matricula (origem) do agente logado ;exten => s,1,ExecIf($["${ISNULL(${ARG5})}" = "0"]?Set(CHANNEL(parkinglot)=${DIALEDPEERNUMBER})) ;exten => s,n,ExecIf($["${ISNULL(${ARG5})}" = "0"]?Set(PARKINGDYNPOS=${DIALEDPEERNUMBER}1-${DIALEDPEERNUMBER}2)) ;exten => s,n,ExecIf($["${ISNULL(${ARG5})}" = "0"]?Set(PARKINGDYNEXTEN=${DIALEDPEERNUMBER})) exten => s,1,ExecIf($["${ISNULL(${ARG5})}" = "0"]?Set(CHANNEL(parkinglot)=${CALLERID(num)})) exten => s,n,ExecIf($["${ISNULL(${ARG5})}" = "0"]?Set(PARKINGDYNPOS=${CALLERID(num)}1-${CALLERID(num)}2)) exten => s,n,ExecIf($["${ISNULL(${ARG5})}" = "0"]?Set(PARKINGDYNEXTEN=${CALLERID(num)})) exten => s,n,ExecIf($["X${ARG1}" = "X"]?Return()) exten => s,n,Set(ARG2=${IF($[${ISNULL(${ARG2})}]?${IDORIGEM}:${ARG2})}) exten => s,n,Set(INICIO_ATENDIMENTO=${EPOCH}) exten => s,n,Set(ATENDIDA_FILA=SIM) exten => s,n,Set(DB(INICIO_ATENDIMENTO/${ARG2})=${INICIO_ATENDIMENTO}) exten => s,n,Set(TEMPO_CHAMANDO=$[${INICIO_ATENDIMENTO} - ${INICIO_DIAL}]) exten => s,n,ExecIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?AGI(agente_dial.php,ORIGEM,${IF($[${ISNULL(${MEMBERNAME})}]?${CHANNEL}:${ARG1})},${MATRICULA-ORIGEM},${ARG2},${FILA-ORIGEM},${CANALORIGEM},${RAMAL})) exten => s,n,ExecIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?QueueLog(${FILA-ORIGEM},${ARG2},Agent/${MATRICULA-ORIGEM},ATENDIDA,${TEMPO_CHAMANDO})) exten => s,n,ExecIf($["${ISNULL(${MATRICULA-DESTINO})}" = "0"]?AGI(agente_dial.php,DESTINO,${CHANNEL},${MATRICULA-DESTINO},${ARG2},${FILA-DESTINO},${CANALORIGEM},${RAMAL})) exten => s,n,ExecIf($["${ISNULL(${MATRICULA-DESTINO})}" = "0"]?QueueLog(${FILA-DESTINO},${ARG2},Agent/${MATRICULA-DESTINO},ATENDIDA,${TEMPO_CHAMANDO})) exten => s,n,Return() ;exten => s,n,Set(FILA=${ARG1}) ;exten => s,n,Set(UNIQUEID2=${IF($[ "X${ARG2}" = "X" ]?${IDORIGEM}:${ARG2})}) ;exten => s,n,Set(INICIO_DIAL=${ARG4}) ;exten => s,n,Set(TEMPO_CHAMANDO=$[${EPOCH} - ${INICIO_DIAL}]) ;exten => s,n,Set(__CANAL=${IF($[ "${DIRECAO}" = "ENTRADA" ]?${ARG5}:${CHANNEL})}) ;exten => s,n,Set(CANALAGENTE=${IF($[ "${DIRECAO}" = "ENTRADA" ]?${CHANNEL}:${CANALORIGEM})}) ;exten => s,n,ExecIf($["${DIRECAO}" = "ENTRADA"]?Set(MATRICULA-DESTINO=${ARG3})) ;exten => s,n,AGI(agente_dial.php,${CANAL},${ARG3},${UNIQUEID2},${FILA},${CANALAGENTE},${IF($["${DIRECAO}" = "ENTRADA" && ${ISNULL(${MATRICULA-ORIGEM})}]?${RAMALAGENTE}:${RAMAL})}) ;exten => s,n,QueueLog(${FILA},${UNIQUEID2},Agent/${ARG3},ATENDIDA,${TEMPO_CHAMANDO}) ;exten => s,n,GotoIf($["${DIRECAO}" != "ENTRADA"]?sair) ;exten => s,n,GotoIf($[${ISNULL(${MATRICULA-ORIGEM})}]?sair) [macro-dial-interno] ;ARG1 -> Recebe o numero do ramal de destino (geralmente a variavel ${EXTEN} ;TEMPODERING -> Variavel definida no contexto globals ;OPCOESDIAL -> Variavel definida no contexto globals ;CONTEXT - MACRO_CONTEXT ;EXTEN - MACRO_EXTEN ;exten => s,1,SIPAddHeader(Alert-Info:Bellcore-r7) ;exten => s,1,GotoIf($["${CHANNEL:0:5}" != "Local"]?inicio) ;exten => s,1,ResetCDR(w) exten => s,1,Set(_PICKUPMARK=${ARG5}) exten => s,n,Set(_TIPO=INTERNA) exten => s,n,Set(DB(ULTIMO-DISCADO/${CHANNEL(peername)})=${DB(DIAL/${ARG1})}) exten => s,n,GotoIf($["${DB(NAOPERTUBE/${ARG1})}" = "V"]?naopertube) exten => s,n,GotoIf($["${DB(SIGAME-INTERNO/${ARG1})}" != "F"]?sigameinterno) exten => s,n,GotoIf($["${DB(SIGAME-EXTERNO/${ARG1})}" != "F"]?sigameexterno) exten => s,n,Set(CHANNEL(musicclass)=${DB(MUSICA-ESPERA/${ARG1})}) exten => s,n,GoSub(macro-gravacao,s,1,(IN,${ARG1})) exten => s,n,GoSub(macro-gravacao,s,1,(OUT,${CALLERID(num)})) exten => s,n,Set(DB(ULTIMO-RECEBIDO/${ARG1})=${CALLERID(NUM)}) exten => s,n,GoSub(macro-callerid,s,1,(INTERNO)) exten => s,n,GotoIf($["X${ARG2}" = "X"]?ramal) exten => s,n,Set(TEMPODERING=${ARG2}) exten => s,n,Set(OPCOESDIAL=${ARG3}) ;exten => s,n(ramal),GotoIf($["${CALLCENTER}" = "SIM"]?app-dial-agente,${MATRICULA},1) exten => s,n(ramal),GotoIf($["${PAUSA}" = "SIM"]?pausa) exten => s,n,GotoIf($["${OCUPADO}" = "SIM"]?status-BUSY) exten => s,n,GotoIf($["${CLASSIFICADA}" = "NAO"]?naoclassificada) exten => s,n,SIPAddHeader(Alert-Info:) exten => s,n,GotoIf($["${CALLCENTER-DESTINO}" = "SIM"]?app-dial-agente,${MATRICULA-DESTINO},1) exten => s,n,Set(RINGPADRAO=${TEMPODERING}) exten => s,n,Set(RING=${IF($[ "X${DB(RING/${ARG1})}" = "X" ]? ${RINGPADRAO}: ${DB(RING/${ARG1})} )}) exten => s,n,GotoIf($["${ISNULL(${SIPPEER(${ARG1},callerid_num)})}" = "0" &&"${SIPPEER(${ARG1},curcalls)}" >= "${SIPPEER(${ARG1},limit)}"]?status-BUSY) exten => s,n,ExecIf($["${ISNULL(${SIPPEER(${ARG1},callerid_num)})}" = "0"]?SIPAddHeader(Alert-Info:)) ;exten => s,n,ExecIf($["${CALLCENTER}" = "SIM"],Macro,origina-agente) ;exten => s,n,Set(INICIO_DIAL=${IF($[ "X${INICIO_DIAL}" = "X" ]?${EPOCH}:${INICIO_DIAL})}) exten => s,n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?default:${DB(MUSICA-ESPERA/${ARG1})})}) exten => s,n,Set(CHANNEL(parkinglot)=${CALLERID(NUM)}) exten => s,n,Set(__PARKINGDYNPOS=${CALLERID(NUM)}1-${CALLERID(NUM)}2) exten => s,n,Set(__PARKINGDYNEXTEN=${CALLERID(NUM)}) ;exten => s,n,Dial(${DB(DIAL/${ARG1})},${RING},TtKkg${OPCOESDIAL}rM(eventos-conecta-agente,${FILA-ORIGEM},${IDORIGEM},${MATRICULA-ORIGEM},${INICIO_DIAL},${IF($["${ISNULL(${DB(DIAL/${CALLERID(NUM)})})}" = "0"]?${CALLERID(NUM)})})) exten => s,n,Dial(${DB(DIAL/${ARG1})},${RING},TtKkg${OPCOESDIAL}rU(macro-eventos-conecta-agente,s,1,(${FILA-ORIGEM},${IDORIGEM},${MATRICULA-ORIGEM},${INICIO_DIAL},1))) exten => s,n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Set(CDR_PROP(disable)=1)) exten => s,n,ExecIf($["${DIALSTATUS}" = "BUSY"]?Set(CDR_PROP(disable)=1)) exten => s,n,GotoIf($["${CALLCENTER}" = "SIM"]?callcenter) exten => s,n,Noop(DAC = ${DAC}) exten => s,n,ExecIf($["${ISNULL(${DAC})}" = "0"]?Return()) exten => s,n,Goto(status-${DIALSTATUS}) exten => s,n,Return() exten => s,n(status-ANSWER),AGI(${INTEGRACAO_ABD},${IDORIGEM},,${CALLERID(num)},${ARG1}) exten => s,n,Return() exten => s,n(status-BUSY),Set(_OCUPADO=) exten => s,n,GotoIf($["${DB(SIGAME-OCUPADO/${ARG1})}" != "F"]?sigameocupado) exten => s,n,GotoIf($["${DB(CHAMADA-ESPERA/${ARG1})}" = "V"]?chamada-espera,${ARG1},1) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ocupado) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(status-NOANSWER),AGI(${INTEGRACAO_ABD},${IDORIGEM},CHAMADARAMAL,${CALLERID(NUM)},${ARG1}) exten => s,n,GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(status-CHANUNAVAIL),GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(status-CANCEL),GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(status-CONGESTION),GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(naopertube),Noop(NAO PERTUBE ATIVADO) exten => s,n,Playback(do-not-disturb) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(sigameinterno),Noop(SIGAME INTERNO ATIVADO PARA ${DB(SIGAME-INTERNO/${ARG1})}) exten => s,n,Agi(pbx_complemento.php,macro-dial-interno,sigame-interno,${DB(SIGAME-INTERNO/${ARG1})}) exten => s,n,Set(__RAMAL=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-INTERNO/${ARG1})},1) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(sigameocupado),Noop(SIGAME OCUPADO ATIVADO PARA ${DB(SIGAME-OCUPADO/${ARG1})}) exten => s,n,Set(__RAMAL=${ARG1}) ;exten => s,n,Set(CALLERID(num)=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-OCUPADO/${ARG1})},1) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(sigamenaoatende),Noop(SIGAME NAO ATENDE ATIVADO PARA ${DB(SIGAME-NAOATENDE/${ARG1})}) ;exten => s,n,Set(__PERMISSAO=OK) ;exten => s,n,Set(CALLERID(num)=${ARG1}) exten => s,n,Set(__RAMAL=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-NAOATENDE/${ARG1})},1) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(sigameexterno),Noop(SIGAME EXTERNO ATIVADO PARA ${DB(SIGAME-EXTERNO/${ARG1})}) exten => s,n,Agi(pbx_complemento.php,macro-dial-interno,sigame-externo,${DB(SIGAME-EXTERNO/${ARG1})}) exten => s,n,Set(__RAMAL=${ARG1}) exten => s,n,Set(CALLERID(num)=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-EXTERNO/${ARG1})},1) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(chamada-espera),Goto(chamada-espera,${ARG1},1) ;exten => s,n,Busy(1) exten => s,n,Return() ;exten => s,n(pausa),Busy() ;exten => s,n,Return() exten => s,n(pausa),Set(_PAUSA=) exten => s,n,ExecIf($["X${DAC}" != "X"]?Return()) exten => s,n,GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Return() exten => s,n(naoclassificada),Set(_CLASSIFICADA=) exten => s,n,ExecIf($["X${DAC}" != "X"]?Return()) exten => s,n,GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Playback(appsounds/ocupado) exten => s,n,Return() ;exten => s,n(callcenter),GotoIf($["${CONSULTANDO}" = "SIM"]?h,sair) exten => s,n(callcenter),GotoIf($["${CONSULTANDO}" = "SIM"]?sair) exten => s,n,Set(FIM_DIAL=$[${EPOCH}]) exten => s,n,Set(EVENTO=$[COMPLETACALLER]) exten => s,n(sair),Return() ;exten => s,n(sair),Hangup() ;exten => h,1,GoSub(macro-hangup,s,1,(,${CONTEXT},${EXTEN})) [macro-dial-externo] ;ARG1 -> Recebe o numero do ramal (geralmente a variavel ${CALLERID(NUM)} ;TEMPODERING -> Variavel definida no contexto globals ;OPCOESDIAL -> Variavel definida no contexto globals ;CONTEXT - MACRO_CONTEXT ;EXTEN - MACRO_EXTEN ;exten => s,1,SIPAddHeader(Alert-Info:Bellcore-r1) exten => s,1,Set(_PICKUPMARK=${ARG5}) exten => s,n,GotoIf($["${DB(NAOPERTUBE/${ARG1})}" = "V"]?naopertube) exten => s,n,GotoIf($["${DB(SIGAME-INTERNO/${ARG1})}" != "F"]?sigameinterno) exten => s,n,GotoIf($["${DB(SIGAME-EXTERNO/${ARG1})}" != "F"]?sigameexterno) exten => s,n,Set(CHANNEL(musicclass)=${DB(MUSICA-ESPERA/${ARG1})}) exten => s,n,GoSub(macro-gravacao,s,1,(IN,${ARG1})) exten => s,n,GoSub(macro-gravacao,s,1,(OUT,${CALLERID(num)})) exten => s,n,Set(DB(ULTIMO-RECEBIDO/${ARG1})=${CALLERID(NUM)}) ;exten => s,n,GotoIf($["${CALLCENTER}" = "SIM"]?app-dial-agente,${MATRICULA},1) exten => s,n,GotoIf($["${PAUSA}" = "SIM"]?pausa) exten => s,n,GotoIf($["${OCUPADO}" = "SIM"]?status-BUSY) exten => s,n,GotoIf($["${CLASSIFICADA}" = "NAO"]?naoclassificada) exten => s,n,GotoIf($["${CALLCENTER-DESTINO}" = "SIM"]?app-dial-agente,${MATRICULA-DESTINO},1) exten => s,n,Set(RINGPADRAO=${TEMPODERING}) exten => s,n,Set(RING=${IF($[ "X${DB(RING/${ARG1})}" = "X" ]? ${RINGPADRAO}: ${DB(RING/${ARG1})} )}) exten => s,n,GotoIf($["${SIPPEER(${ARG1},curcalls)}" >= "${SIPPEER(${ARG1},limit)}"]?status-BUSY) exten => s,n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?default:${DB(MUSICA-ESPERA/${ARG1})})}) ;exten => s,n,Set(CHANNEL(parkinglot)=${ARG1}) ;exten => s,n,Set(__PARKINGDYNPOS=${ARG1}1-${ARG1}2) ;exten => s,n,Set(__PARKINGDYNEXTEN=${ARG1}) exten => s,n,Dial(${DB(DIAL/${ARG1})},${RING},tk${OPCOESDIAL}rU(macro-eventos-conecta-agente,s,1,(,,,,,1))) exten => s,n,ExecIf($["X${DAC}" != "X"]?Return()) exten => s,n,Goto(status-${DIALSTATUS}) exten => s,n,Return() exten => s,n(status-ANSWER),Return() exten => s,n(status-BUSY),Set(_OCUPADO=) exten => s,n,GotoIf($["${DB(SIGAME-OCUPADO/${ARG1})}" != "F"]?sigameocupado) exten => s,n,GotoIf($["${DB(CHAMADA-ESPERA/${ARG1})}" = "V"]?chamada-espera,${ARG1},1) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ocupado) exten => s,n,Return() exten => s,n(status-NOANSWER),AGI(${INTEGRACAO_ABD},${IDORIGEM},CHAMADARAMAL,${CALLERID(NUM)},${ARG1}) exten => s,n,GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Return() exten => s,n(status-CHANUNAVAIL),GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Return() exten => s,n(status-CANCEL),GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Return() exten => s,n(status-CONGESTION),GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Return() exten => s,n(naopertube),Noop(NAO PERTUBE ATIVADO) exten => s,n,Playback(do-not-disturb) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Return() exten => s,n(sigameinterno),Noop(SIGAME INTERNO ATIVADO PARA ${DB(SIGAME-INTERNO/${ARG1})}) exten => s,n,Agi(pbx_complemento.php,macro-dial-interno,sigame-interno,${DB(SIGAME-INTERNO/${ARG1})}) exten => s,n,Set(__RAMAL=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-INTERNO/${ARG1})},1) exten => s,n,Return() exten => s,n(sigameocupado),Noop(SIGAME OCUPADO ATIVADO PARA ${DB(SIGAME-OCUPADO/${ARG1})}) exten => s,n,Set(__RAMAL=${ARG1}) exten => s,n,Set(__PERMISSAO=OK) ;exten => s,n,Set(CALLERID(num)=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-OCUPADO/${ARG1})},1) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(sigamenaoatende),Noop(SIGAME NAO ATENDE ATIVADO PARA ${DB(SIGAME-NAOATENDE/${ARG1})})exten => s,n,Set(__PERMISSAO=OK) exten => s,n,Set(__RAMAL=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-NAOATENDE/${ARG1})},1) ;exten => s,n,Busy(1) exten => s,n,Return() exten => s,n(sigameexterno),Noop(SIGAME EXTERNO ATIVADO PARA ${DB(SIGAME-EXTERNO/${ARG1})}) ;exten => s,n,Set(CALLERID(ALL)=${ARG1}) exten => s,n,Agi(pbx_complemento.php,macro-dial-interno,sigame-externo,${DB(SIGAME-EXTERNO/${ARG1})}) exten => s,n,Set(__RAMAL=${ARG1}) exten => s,n,Set(CALLERID(num)=${ARG1}) exten => s,n,Goto(padrao,${DB(SIGAME-EXTERNO/${ARG1})},1) exten => s,n,Return() ;exten => s,n(sigameinterno),Noop(SIGAME INTERNO ATIVADO PARA ${DB(SIGAME-INTERNO/${ARG1})}) ;exten => s,n,Goto(padrao,${DB(SIGAME-INTERNO/${ARG1})},1) ;exten => s,n,Hangup() ;exten => s,n(sigameexterno),Noop(SIGAME EXTERNO ATIVADO PARA ${DB(SIGAME-EXTERNO/${ARG1})}) ;exten => s,n,Goto(saida-pstn,${DB(SIGAME-EXTERNO/${ARG1})},disca) ;exten => s,n,Hangup() exten => s,n(chamada-espera),Goto(chamada-espera,${ARG1},1) exten => s,n,Hangup() ;exten => s,n(pausa),Busy() ;exten => s,n,Return() exten => s,n(pausa),Set(_PAUSA=) exten => s,n,ExecIf($["X${DAC}" != "X"]?Return()) exten => s,n,GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Return() exten => s,n(naoclassificada),Set(_CLASSIFICADA=) exten => s,n,ExecIf($["X${DAC}" != "X"]?Return()) exten => s,n,GotoIf($["${DB(SIGAME-NAOATENDE/${ARG1})}" != "F"]?sigamenaoatende) exten => s,n,GotoIf($["F${DB(VM/${ARG1})}" != "F"]?ext-voicemail,${ARG1},ausente) exten => s,n,Playback(appsounds/ocupado) exten => s,n,Return() exten => h,1,GoSub(macro-hangup,s,1,(,${CONTEXT},${EXTEN})) [macro-hangup] exten => s,1,Set(FIM_DIAL=${IF($[ "X${FIM_DIAL}" = "X" ]?${EPOCH}:${FIM_DIAL})}) exten => s,n,Noop(MACRO_CONTEXT = ${MACRO_CONTEXT}) exten => s,n,Noop(MEMBERINTERFACE = ${CUT(CUT(MEMBERINTERFACE,@,2),/,1)} / ${MEMBERINTERFACE}) exten => s,n,Noop(PQMSTATUS = ${PQMSTATUS} - QUEUESTATUS - ${QUEUESTATUS}) exten => s,n,Noop(MATRICULA = ${MATRICULA} - MATRICULA-ORIGEM = ${MATRICULA-ORIGEM} - MATRICULA-DESTINO = ${MATRICULA-DESTINO}) exten => s,n,Noop(IDORIGEM = ${IDORIGEM}) exten => s,n,Noop(DIALSTATUS = ${DIALSTATUS}) exten => s,n,Noop(PARKINGSLOT = ${CHANNEL(parkinglot)} / PARKEDAT = ) exten => s,n,Noop(TRANSFERERNAME = ${TRANSFERERNAME}) exten => s,n,GotoIf($[${ISNULL(${MATRICULA})} && ${ISNULL(${MATRICULA-DESTINO})} && ${ISNULL(${MATRICULA-ORIGEM})}]?desliga) exten => s,n,GotoIf($["${DB(CANAL/${MATRICULA}/${IDORIGEM})}" = "DESLIGADO"]?desliga) exten => s,n,GotoIf($["${DB(CANAL/${MATRICULA-ORIGEM}/${IDORIGEM})}" = "DESLIGADO"]?desliga) exten => s,n,GotoIf($["${DB(CANAL/${MATRICULA-DESTINO}/${IDORIGEM})}" = "DESLIGADO"]?desliga) exten => s,n,GotoIf($["${CONTEXT:0:3}" = "psq"]?desliga) exten => s,n,GotoIf($["${ARG1}" = "PESQUISA"]?fila) exten => s,n,GotoIf($["${MACRO_CONTEXT}" = "ext-transferencia"]?transferencia) exten => s,n,GotoIf($["${CONSULTANDO}" = "SIM"]?desliga) exten => s,n,GotoIf($["${ESPERA_AGENTE}" = "OK"]?desliga) exten => s,n,GotoIf($["${CUT(CUT(MEMBERINTERFACE,@,2),/,1)}" = "app-callcenter"]?fila) ; Ligacoes recebidas nativas da fila sem consulta e sem transferencias exten => s,n,GotoIf($["${CONSULTA}" = "SIM" && "X${PARKEDCHANNEL}" != "X" && ${ISNULL(${MATRICULA})}]?fila) exten => s,n,GotoIf($["${CONSULTA}" = "SIM" && ${ISNULL(${MATRICULA})}]?fila) exten => s,n,GotoIf($["${CONSULTA}" = "SIM" && ${ISNULL(${MATRICULA-DESTINO})}]?consulta-agente) ;exten => s,n,GotoIf($["X${MATRICULA-DESTINO}" != "X"]?teste) ?????? exten => s,n,GotoIf($["X${PQMSTATUS}" = "X"]?desliga) ;Desliga as ligacoes transferidas pelo agente(web) exten => s,n,GotoIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?agentedial) exten => s,n,GotoIf($[${ISNULL(${MATRICULA})}]?desliga) ;xten => s,n,GotoIf($["${DB(CANAL/${MATRICULA}/${IDORIGEM})}" = "DESLIGADO"]?desliga) exten => s,n(agentedial),GotoIf($["X${DIALSTATUS}" != "X" & "${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?dialstatus) ;Tratativa para ligacoes atendidas por um ramal membro de uma fila exten => s,n,ExecIf($["X${MEMBERINTERFACE}" != "X"]?Set(EVENTO=$[COMPLETAAGENT])) exten => s,n,ExecIf($["X${MEMBERINTERFACE}" != "X"]?Set(FIM_DIAL=$[${EPOCH}])) exten => s,n,ExecIf($["X${MEMBERINTERFACE}" != "X"]?Set(ANSWEREDTIME=$[${FIM_DIAL} - ${INICIO_DIAL}])) exten => s,n,ExecIf($["X${MEMBERINTERFACE}" != "X"]?Goto(sw-3-ANSWER,10)) exten => s,n,GotoIf($["X${INICIO_DIAL}" = "X"]?atualiza) exten => s,n,Set(DURACAO=$[${FIM_DIAL} - ${INICIO_DIAL}]) ;exten => s,n,Set(MATRICULA=${IF($[ "X${MATRICULA}" = "X" ]?${MATRICULA-ORIGEM}:${MATRICULA})}) exten => s,n,QueueLog(${FILA-ORIGEM},${UNIQUEID},Agent/${MATRICULA-ORIGEM},NOANSWERS,${DURACAO}) exten => s,n,Set(FILA-ORIGEM=) exten => s,n,GotoIf($[${ISNULL(${MATRICULA})}]?atualiza) exten => s,n(fila),Set(DB(CANAL/${MATRICULA}/${IDORIGEM})=DESLIGADO) exten => s,n,System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,AGI(agente_pausa.php,${MATRICULA}) exten => s,n,GotoIf($["${ISNULL(${MATRICULA-ORIGEM})}" = "0"]?sw-3-ANSWER,10) exten => s,n,Goto(s,desliga) exten => s,n,GotoIf($["${CUT(CUT(MEMBERINTERFACE,@,2),/,1)}" = "app-callcenter" & "X${MATRICULA-ORIGEM}" != "X"]?sw-3-ANSWER,10) exten => s,n(atualiza),GotoIf($[X${MATRICULA-ORIGEM} = "X"]?desliga) exten => s,n,GotoIf($["${ISNULL(${TRANSFERERNAME})}" = "0"]?desliga) exten => s,n,Set(DB(CANAL/${MATRICULA-ORIGEM}/${IDORIGEM})=DESLIGADO) exten => s,n,System(${ATUALIZAR} LIVRE ${MATRICULA-ORIGEM}) exten => s,n,AGI(agente_pausa.php,${MATRICULA-ORIGEM}) exten => s,n(desliga),AGI(tarifaFinaliza.php,${UNIQUEID}) ;exten => s,n,System(${ATUALIZAR} CANALTRANSFER ${CUT(TRANSFERERNAME,@,1)}) ;exten => s,n,AGI(${INTEGRACAO_ABD},${IDORIGEM},${IF($[${ISNULL(${DAC})}]?${FILA-ORIGEM}:${DAC})},${IF($[${ISNULL(${DESTINO-ORIGEM})}]?${BINA_RETORNO}:${DESTINO-ORIGEM})},${MATRICULA_RETORNO}) exten => s,n,ExecIf($["${ISNULL(${CUT(TRANSFERERNAME,@,1)})}" = "0"]?System(${ATUALIZAR} CANALTRANSFER ${CUT(TRANSFERERNAME,@,1)})) exten => s,n,ExecIf($["${ISNULL(${DAC})}" = "0" | "${ISNULL(${FILA-ORIGEM})}" = "0"]?AGI(${INTEGRACAO_ABD},${UNIQUEID},${IF($[${ISNULL(${DAC})}]?${FILA-ORIGEM}:${DAC})},${IF($[${ISNULL(${DESTINO-ORIGEM})}]?${BINA_RETORNO}:${DESTINO-ORIGEM})},${MATRICULA_RETORNO})) exten => s,n,ExecIf($["${ARG1}" = "PESQUISA"]?Return()) ;;ATUALIZACAO ABANDONADAS SEM RETORNO PBX ;exten => s,n,AGI(${INTEGRACAO_ABD},${IDORIGEM},,${CALLERID(num)},${PICKUPMARK}) exten => s,n,AGI(intercala_lgpd.php,FIM,${IF($[ "X${RAMALAGENTE}" = "X" ]?${RAMAL}:${RAMALAGENTE})}) ;exten => s,n,DeadAGI(intercala_lgpd.php,FIM,${IF($[ "X${RAMALAGENTE}" = "X" ]?${RAMAL}:${RAMALAGENTE})}) exten => s,n,Hangup() exten => s,n(transferencia),Set(MATRICULA=${IF($[${ISNULL(${MATRICULA})}]?${MATRICULA-DESTINO}:${MATRICULA})}) exten => s,n,Set(DB(CANAL/${MATRICULA}/${IDORIGEM})=DESLIGADO) exten => s,n,System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,AGI(agente_pausa.php,${MATRICULA}) exten => s,n,AGI(${INTEGRACAO_ABD},${UNIQUEID},${IF($[${ISNULL(${DAC})}]?${FILA-ORIGEM}:${DAC})},${IF($[${ISNULL(${DESTINO-ORIGEM})}]?${BINA_RETORNO}:${DESTINO-ORIGEM})},${MATRICULA_RETORNO}) exten => s,n,Return() exten => s,n(consulta-agente),Set(EVENTO=$["COMPLETEAGENTRAMAL"]) exten => s,n,Set(FIM_DIAL=$[${EPOCH}]) exten => s,n,Set(DURACAO=$[${FIM_DIAL} - ${INICIO_DIAL} - ${TEMPO_CHAMANDO}]) exten => s,n,QueueLog(${FILA-DESTINO},${UNIQUEID2},Agent/${MATRICULA-DESTINO},${EVENTO},${TEMPO_CHAMANDO},${DURACAO}) exten => s,n,System(${ATUALIZAR} LIVRE ${MATRICULA-DESTINO}) exten => s,n,AGI(agente_pausa.php,${MATRICULA-DESTINO}) exten => s,n,Hangup() exten => s,n(dialstatus),Goto(sw-3-${DIALSTATUS},10) exten => s,n,Hangup() exten => _sw-3-.,10,NoOp(dont know how to handle ${DIALSTATUS}) exten => _sw-3-.,11,Goto(s,atualiza) exten => sw-3-ANSWER,10,Noop(FIM_DIAL=${FIM_DIAL} - INICIO_DIAL=${INICIO_DIAL} - ANSWEREDTIME=${ANSWEREDTIME} - TEMPO_CHAMANDO = ${TEMPO_CHAMANDO}) exten => sw-3-ANSWER,n,Set(INICIO_ATENDIMENTO=${IF($[${ISNULL(${INICIO_ATENDIMENTO})}]?${DB(INICIO_ATENDIMENTO/${UNIQUEID})}:${INICIO_ATENDIMENTO})}) exten => sw-3-ANSWER,n,Set(TEMPO_CHAMANDO=${IF($[${ISNULL(${TEMPO_CHAMANDO})}]?$[${INICIO_ATENDIMENTO} - ${INICIO_DIAL}]:${TEMPO_CHAMANDO})}) exten => sw-3-ANSWER,n,Set(DURACAO=$[${FIM_DIAL} - ${INICIO_ATENDIMENTO}]) exten => sw-3-ANSWER,n,ExecIf($[${ISNULL(${EVENTO})}]?Set(EVENTO=$[COMPLETAAGENT])) exten => sw-3-ANSWER,n,Set(__MATRICULA_RETORNO=${MATRICULA-ORIGEM}) exten => sw-3-ANSWER,n,QueueLog(${FILA-ORIGEM},${UNIQUEID},Agent/${MATRICULA-ORIGEM},${EVENTO},${TEMPO_CHAMANDO},${DURACAO}) exten => sw-3-ANSWER,n,Goto(s,atualiza) exten => sw-3-CANCEL,10,Set(TEMPO_ESPERA=$[${FIM_DIAL} - ${INICIO_DIAL}]) exten => sw-3-CANCEL,n,Set(EVENTO=$[NOANSWER]) exten => sw-3-CANCEL,n,QueueLog(${FILA-ORIGEM},${UNIQUEID},Agent/${MATRICULA-ORIGEM},NOANSWERS,1,1,${TEMPO_ESPERA}) exten => sw-3-CANCEL,n,Set(FILA-ORIGEM=) exten => sw-3-CANCEL,n,Goto(s,atualiza) exten => sw-3-CONGESTION,10,Goto(sw-3-CANCEL,10) exten => sw-3-CHANUNAVAIL,10,Goto(sw-3-CANCEL,10) exten => sw-3-NOANSWER,10,Goto(sw-3-CANCEL,10) exten => sw-3-BUSY,10,Set(TEMPO_ESPERA=$[${FIM_DIAL} - ${INICIO_DIAL}]) exten => sw-3-BUSY,n,Set(EVENTO=$[BUSY]) exten => sw-3-BUSY,n,QueueLog(${FILA-ORIGEM},${UNIQUEID},Agent/${MATRICULA-ORIGEM},BUSYS,1,1,${TEMPO_ESPERA}) exten => sw-3-BUSY,n,Goto(s,atualiza) [macro-dial-campanha] exten => s,1,Noop(TIPO-DISCAGEM == ${TIPO-DISCAGEM}) exten => s,n,GotoIf($["${TIPO-DISCAGEM}" = "APLICACAO"]?aplicacao) exten => s,n,Set(CALLERID(NUM)=6533174650) exten => s,n,Dial(${ARG1},20,${ARG2}hgU(macro-analisa-chamada,s,1,(${CHANNEL},${ARG3},${ARG5},${ARG6},${ARG7}))) exten => s,n,Goto(status-${DIALSTATUS}) exten => s,n,AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7}) exten => s,n,Return() exten => s,n,Hangup() exten => s,n(status-ANSWER),AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7}) exten => s,n,Return() exten => s,n,Hangup() exten => s,n(status-BUSY),AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7}) exten => s,n,Busy() exten => s,n,Return() exten => s,n,Hangup() exten => s,n(status-NOANSWER),AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7}) exten => s,n,Busy() exten => s,n,Return() exten => s,n,Hangup() exten => s,n(status-CHANUNAVAIL),AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7}) exten => s,n,Busy() exten => s,n,Return() exten => s,n,Hangup() exten => s,n(status-CANCEL),AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7}) exten => s,n,Busy() exten => s,n,Return() exten => s,n,Hangup() exten => s,n(status-CONGESTION),AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7}) exten => s,n,Busy() exten => s,n,Return() exten => s,n,Hangup() exten => s,n(aplicacao),GoSub(macro-gravacao,s,1,(OUT,${CALLERID(NUM)})) exten => s,n,Set(DB(ATUALIZA/${MATRICULA})=V) exten => s,n,Set(DB(DISCAGEM/${MATRICULA})=MANUAL) exten => s,n,Dial(${ARG1},20,${ARG2}U(macro-info-agente,s,1,(APLICACAO,${MATRICULA}))) exten => s,n,Goto(aplicacao-${DIALSTATUS}) exten => s,n,Return() exten => s,n(aplicacao-BUSY),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,Return() exten => s,n(aplicacao-NOANSWER),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,Return() exten => s,n(aplicacao-CHANUNAVAIL),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,Return() exten => s,n(aplicacao-CANCEL),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,Return() exten => s,n(aplicacao-CONGESTION),System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => s,n,Return() exten => h,1,Wait(0.5) exten => h,n,GotoIf($["${DB(ATUALIZA/${MATRICULA})}" = "F"]?sair) exten => h,n,System(${ATUALIZAR} LIVRE ${MATRICULA}) exten => h,n(sair),Return() [macro-info-agente] exten => s,1,Set(DB(AGENTE/${ARG1})=${CHANNEL}) exten => s,n,AGI(info_agente.php,FILA,${CHANNEL},${ARG1}) exten => s,n,Return() [macro-verifica-rota] ;ARG1 = Callerid do Ramal ;ARG2 = Variavel ${EXTEN} exten => s,1,Set(__RAMAL=${IF($[ "X${RAMAL}" = "X" ]?${ARG1}:${RAMAL})}) exten => s,n,AGI(verifica_rota.php,${RAMAL},${ARG2}) exten => s,n,Noop(DEBUG: ID_ROTA: ${ID_ROTA} - TIPO_ACESSO: ${TIPO_ACESSO} - RAMAL: ${NUMERO-RAMAL} - MODELO: ${MODELO}) exten => s,n,ExecIf($["${TIPO_ACESSO}" = "1"]?Return()) exten => s,n,ExecIf($["${TIPO_ACESSO}" = "3"]?Return()) exten => s,n,GotoIf($["${TIPO_ACESSO}" = "2"]?conta-senha) exten => s,n,Goto(s,semrota) exten => s,n,Return() exten => s,n(conta-senha),Read(CONTASENHA,appsounds/conta-e-senha,n,,20) exten => s,n,ResetCDR() exten => s,n,Noop(CONTASENHA: ${CONTASENHA}) ;exten => s,n,AGI(conta_senha.php,${CONTASENHA},${MACRO_EXTEN}) exten => s,n,AGI(conta_senha.php,${CONTASENHA},${ARG2}) exten => s,n,Set(TAM=${LEN(${DESTINO})}) exten => s,n,GotoIf($["${TAM}" >= "3" & "${DESTINO:0:1}" = "1"]?utilidades-publicas) exten => s,n,GotoIf($["${TAM}" >= "4" & "${DESTINO:0:2}" = "01"]?utilidades-publicas) exten => s,n,GotoIf($["${TAM}" = "8"]?local) exten => s,n,GotoIf($["${TAM}" = "9" & "${DESTINO:0:1}" = "0"]?local) exten => s,n,GotoIf($["${TAM}" = "9" & "${DESTINO:0:1}" = "9"]?local) exten => s,n,GotoIf($["${TAM}" = "10" & "${DESTINO:0:1}" = "0"]?local) exten => s,n,GotoIf($["${TAM}" = "10"]?interurbano-ddd) exten => s,n,GotoIf($["${TAM}" = "11"]?interurbano-ddd) exten => s,n,GotoIf($["${TAM}" = "12"]?interurbano-ddd) exten => s,n,GotoIf($["${TAM}" = "13"]?interurbano-ddd) exten => s,n,GotoIf($["${TAM}" = "14"]?interurbano-ddd) exten => s,n,GotoIf($["${TAM}" > "14"]?internacional) exten => s,n,Playback(appsounds/numero-invalido) exten => s,n,Hangup() exten => s,n(sem-permissao),Playback(appsounds/nao-tem-permissao) exten => s,n,Hangup() exten => s,n(utilidades-publicas),GotoIf($["${FIXO-LOCAL}" = "f"]?sem-permissao:liberado) exten => s,n(local),GotoIf($["${TAM}" = "8" & "${DESTINO:0:1}" <= "6"]?fixo-local) exten => s,n,GotoIf($["${TAM}" = "9" & "${DESTINO:1:1}" <= "6"]?fixo-local) exten => s,n,GotoIf($["${MOVEL-LOCAL}" = "f"]?sem-permissao:liberado) exten => s,n(fixo-local),GotoIf($["${FIXO-LOCAL}" = "f"]?sem-permissao:liberado) exten => s,n(interurbano-ddd),GotoIf($["${DESTINO:0:4}" = "0300"]?nao-geografico) exten => s,n,GotoIf($["${DESTINO:0:4}" = "0303"]?nao-geografico) exten => s,n,GotoIf($["${DESTINO:0:4}" = "0500"]?nao-geografico) exten => s,n,GotoIf($["${DESTINO:0:4}" = "0800"]?nao-geografico) exten => s,n,GotoIf($["${DESTINO:0:4}" = "0900"]?nao-geografico) exten => s,n,GotoIf($["${DESTINO:-8:1}" <= "6"]?fixo-ddd) exten => s,n,GotoIf($["${MOVEL-DDD}" = "t"]?liberado) exten => s,n,Set(RESULT=${REGEX("${DESTINO:-10:2}" ${DDDS})}) exten => s,n,GotoIf($["${RESULT}" = "0"]?ddd-sp:liberado) exten => s,n(ddd-sp),Set(RESULT=${REGEX("${DESTINO:-11:2}" ${DDDS})}) exten => s,n,GotoIf($["${RESULT}" = "0"]?sem-permissao:liberado) exten => s,n(fixo-ddd),GotoIf($["${FIXO-DDD}" = "t"]?liberado) exten => s,n,Set(RESULT=${REGEX("${DESTINO:-10:2}" ${DDDS})}) exten => s,n,GotoIf($["${RESULT}" = "0"]?sem-permissao:liberado) exten => s,n(nao-geografico),Set(RESULT=V${DESTINO:0:4}) exten => s,n,GotoIf($["${${RESULT}}" = "f"]?sem-permissao:liberado) exten => s,n(internacional),GotoIf($["${INTERNACIONAL}" = "f"]?sem-permissao:liberado) exten => s,n(liberado),GoSub(macro-gravacao-conta-senha,s,1,(${CONTEXT},${EXTEN}))) exten => s,n,AGI(pbx_complemento.php,app-conta-senha,${CONTA},${DESTINO}) exten => s,n,GotoIf($["${TEMPO}" = "0"]?disca) exten => s,n,Set(TIMEOUT(absolute)=${TEMPO} + 5) exten => s,n(disca),Set(_PERMISSAO=OK) exten => s,n,Return() exten => s,n(semrota),Return() [macro-get-canal-transfer] exten => s,1,Wait(1) exten => s,n,AGI(facilidades_callcenter.php,TRANSFERENCIA,${ARG1},${CHANNEL}) exten => s,n,Set(__MATRICULA=) ;exten => s,n,AGI(facilidades_callcenter.php,TRANSFERENCIA,${ARG1},${BRIDGEPEER}) [macro-app-inicia-conferencia] exten => s,1,AGI(pbx_complemento.php,macro-app-inicia-conferencia) ;exten => s,n,Set(CONFNO=${DB(SALA/CONFERENCIA/DINAMICA)}) ;exten => s,n,Set(DB(SALA/CONFERENCIA/DINAMICA)=${IF($[ ${CONFNO} + 1 = 9950 ]?9900:$[ ${CONFNO} + 1 ])}) exten => s,n,Set(__SALA=${RAND(9001,9999)}) exten => s,n,ChannelRedirect(${BRIDGEPEER},teste-conferencia,${SALA},1) ;exten => s,n,Read(DEST,dial,,i) ;exten => s,n,Set(DYNAMIC_FEATURES=app-inicia-conferencia#app-adiciona-conferencia#app-naoadiciona-conferencia) ;exten => s,n,Dial(Local/${DEST}@padrao,,gH) ;exten => s,n,Set(DYNAMIC_FEATURES=) exten => s,n,ChannelRedirect(${CHANNEL},teste-conferencia,${SALA},1) [macro-app-adiciona-conferencia] exten => s,1,ChannelRedirect(${BRIDGEPEER},ext-conferencia-dinamica,${CONFNO},1) [macro-app-naoadiciona-conferencia] exten => s,1,SoftHangup(${BRIDGEPEER}) [macro-app-hangup-agentes] exten => s,1,GotoIf($["${BRIDGEPEER:0:10}" = "Local/**63"]?agente) exten => s,n,System(${ATUALIZAR} LIVRE ${CHANNEL:6}) exten => s,n(ramal),SoftHangup(${CHANNEL}) exten => s,n,Hangup() exten => s,n(agente),System(${ATUALIZAR} LIVRE ${AGENT}) exten => s,n,SoftHangup(Agent/${AGENT}) exten => s,n,Hangup() [macro-chamada-a-cobrar] exten => s,1,GotoIF($["${CHANNEL:0:3}" = "DGV"]?dgv) exten => s,n,GotoIF($["${CHANNEL:0:5}" = "Khomp"]?khomp) exten => s,n,Return() exten => s,n(dgv),Answer() exten => s,n,Set(CDR(userfield)=chamada-a-cobrar) exten => s,n,DgCollectCallBlock() exten => s,n,Return() exten => s,n(khomp),Set(KDropCollectCall=yes) exten => s,n,Return() [macro-dial-saida-pstn] ;ARG1=STRING DE DISCAGEM => TRONCO/DESTINO - EX: KHOMP/G1/99893984 ;ARG2=RING FALSO DA APLICACAO DIAL - r ;ARG3=ID DO TRONCO ;ARG4=NUMERO DE LIGACOES SIMULTANEAS ;ARG5=NOME DA MACRO DE TARIFACAO ;ARG6=ID DO TRONCO ;ARG7=ID DA ROTA ;ARG8=UNIQUEID ;ARG9=ORIGEM - CALLERID(NUM) ;ARG10=DESTINO - EXTEN ;ARG11=TIPO DE ACESSO DO RAMAL NESTA ROTA ;ARG12=CONTA EM CASO DE LIGACOES COM CONTA E SENHA ;ARG13=SENHA EM CASO DE LIGACOES COM CONTA E SENHA ;ARG14=RECORTE DO TRONCO ;ARG15=ACRESCENTA DO TRONCO ;${TIMEOUT_PREPAGO} => EH DEFINIDO UM VALOR DEFAULT NO ARQUIVO /etc/asterisk/extensions_general.conf exten => s,1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=S)) exten => s,n,Answer() exten => s,n,GotoIf($["${ARG1:0:17}" = "SIP/PORTABILIDADE" & "X${LIMITE}" != "X"]?limite) exten => s,n,GotoIf($["${ARG1:0:17}" = "SIP/PORTABILIDADE" & "X${FRANQUIA}" != "X"]?franquia) exten => s,n,ExecIf($["${ARG1:0:17}" = "SIP/PORTABILIDADE" & "X${DIALSTATUS}" != "X"]?Return()) exten => s,n,ExecIf($["X${OPERDDD}" = "X"]?AGI(verifica_operadora.php,${ARG1},${ARG3},${ARG10})) exten => s,n,GoSub(macro-recorta-acrescenta-tronco,s,1,(${ARG1},${ARG14},${ARG15})) exten => s,n,ExecIf($["X${NOVOARG1}" != "X"]?Set(ARG1=${NOVOARG1})) exten => s,n,ExecIf($["X${NOVOARG10}" != "X"]?Set(ARG10=${NOVOARG10})) exten => s,n,Set(__RAMAL=${IF($[ "X${RAMAL}" = "X" ]?${CALLERID(NUM)}:${RAMAL})}) exten => s,n,Set(__CANALORIGEM=${CHANNEL}) exten => s,n,Set(DB(ULTIMO-DISCADO/${RAMAL})=${ARG1}) exten => s,n,Set(CHANNEL(parkinglot)=${RAMAL}) exten => s,n,Set(PARKINGDYNPOS=${RAMAL}1-${RAMAL}2) exten => s,n,Set(PARKINGDYNEXTEN=${RAMAL}) ;exten => s,n,Set(GLOBAL(DYNAMIC_FEATURES)=app-inicia-conferencia-ramal#app-adiciona-conferencia-ramal#app-naoadiciona-conferencia-ramal) exten => s,n,Noop(Qtd Atual => ${GROUP_COUNT(${ARG3})} - Limite = ${ARG4}) exten => s,n,Set(GROUP()=${ARG3}) exten => s,n,GotoIf($[${GROUP_COUNT(${ARG3})} > ${ARG4}]?limite) exten => s,n,Set(__LIMITE=) exten => s,n,GotoIf($["${DB(CADEADO/${RAMAL})}" != "V"]?grava) exten => s,n,Authenticate(${DB(SENHA/${RAMAL})},d,) exten => s,n(grava),GoSub(macro-gravacao,s,1,(OUT,${RAMAL})) exten => s,n,GoSub(macro-callerid,s,1,(${TIPO},${ARG3},${RAMAL},${ARG1})) exten => s,n,ExecIf($["X${BINA_KHOMP}" != "X"]?Set(ARG1=${BINA_KHOMP})) exten => s,n,AGI(verifica_franquia.php,${ARG3},${ARG10}) exten => s,n,Set(__FRANQUIA=) exten => s,n,AGI(pre-pago.php,${RAMAL},${ARG12},${ARG10},${ARG3}) exten => s,n,Set(TIMEOUT=${IF($[ "X${TIMEOUT-CONTAESENHA}" = "X" ]?${TIMEOUT_PREPAGO}:${TIMEOUT-CONTAESENHA})}) exten => s,n,Dial(${ARG1},${TEMPODERING},TKg${OPCOESDIAL}M(tarifa,${ARG6},${ARG7},${ARG8},${RAMAL},${ARG10},${ARG11},${ARG12},${ARG13},${INICIO_DIAL})L(${TIMEOUT}:30000:10000)) exten => s,n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Set(CDR_PROP(disable)=1)) exten => s,n,ExecIf($["${DIALSTATUS}" = "BUSY"]?Set(CDR_PROP(disable)=1)) ;exten => s,n,Dial(${ARG1},${TEMPODERING},Tg${OPCOESDIAL}M(${ARG5},${ARG6},${ARG7},${ARG8},${RAMAL},${ARG10},${ARG11},${ARG12},${ARG13})L(${TIMEOUT_PREPAGO}:30000:10000)) ;exten => s,n,AGI(tarifaFinaliza.php,${UNIQUEID}) exten => s,n,Goto(status-${DIALSTATUS}) exten => s,n,Return() exten => s,n(status-ANSWER),ExecIf($["${CALLCENTER}" = "SIM"]?Set(FIM_DIAL=$[${EPOCH}])) exten => s,n,ExecIf($["${CALLCENTER}" = "SIM"]?Set(FIM_DIAL=$[${EPOCH}])) exten => s,n,ExecIf($["${CALLCENTER}" = "SIM"]?Set(EVENTO=$[COMPLETACALLER])) exten => s,n,Hangup() exten => s,n(status-BUSY),Return() exten => s,n(status-NOANSWER),Set(CDR_PROP(disable)=1) exten => s,n,Hangup() exten => s,n(status-CHANUNAVAIL),Return() exten => s,n(status-CANCEL),Return() exten => s,n(status-CONGESTION),Return() exten => s,n(limite),Set(__LIMITE=OK) exten => s,n,Return() exten => s,n(franquia),Set(__FRANQUIA=OK) exten => s,n,Return() ;exten => s,n(callcenter),GotoIf($["${CONSULTANDO}" = "SIM"]?sair) ;exten => s,n,Set(FIM_DIAL=$[${EPOCH}]) ;exten => s,n,Set(EVENTO=$[COMPLETACALLER]) ;exten => s,n(sair),Hangup() ;exten => s,n(sair),Return() [macro-verifica-senha] ;ARG1 -> Recebe o numero do ramal (geralmente a variavel ${CALLERID(NUM)} exten => s,1,Read(SENHA-RAMAL,vm-password,,) exten => s,n,Set(SENHA=${DB(SENHA/${ARG1})}) exten => s,n,GotoIf($["${SENHA}" = "${SENHA-RAMAL}"]?ok) exten => s,n,Wait(1) exten => s,n,Playback(incorrect-password) exten => s,n,Playback(vm-goodbye) exten => s,n,Hangup() exten => s,n(ok),Return() [macro-gravacao-conta-senha] exten => s,1,GotoIf($["${GRAVAR}" = "f"]?fim) exten => s,n,GotoIf($["X${MONITOR_FILENAME}" != "X"]?fim) exten => s,n,Set(UNICO=${RAND(0000000000,9999999999)}) ;exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes) exten => s,n,Set(MONITOR_FILENAME=${UNICO}-${UNIQUEID}.WAV) exten => s,n,Set(CDR(userfield)=${UNICO}-${UNIQUEID}.WAV) exten => s,n,MixMonitor(${MONITOR_FILENAME},b) exten => s,n(fim),Return() [macro-callerid] ;ARG1 = TIPO = EXTERNO OU INTERNO ;ARG2 = ID DO TRONCO ;ARG3 = NUMERO DO RAMAL ;ARG4 = STRING DIAL - ALTERAR A BINA DOS CANAIS KHOMP exten => s,1,Noop(${CALLERID(ALL)}) exten => s,n,GotoIf($["X${ARG2}" = "X"]?interno) exten => s,n,GotoIf($["X${DB(BINA-EXTERNO/${CHANNEL(peername)})}" = "X"]?binatronco) exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CHANNEL(peername)})}) exten => s,n,Set(CALLERID(num)=${DB(BINA-EXTERNO/${CHANNEL(peername)})}) exten => s,n(binatronco),AGI(bina_tronco.php,${ARG2},${ARG3},${ARG4}) exten => s,n,Noop(BINA_TRONCO = ${BINA_TRONCO}) exten => s,n,ExecIf($["X${BINA_TRONCO}" != "X"]?Set(CALLERID(num)=${BINA_TRONCO})) exten => s,n,Return() exten => s,n(interno),GotoIf($["X${DB(BINA-NOME/${CHANNEL(peername)})}" = "X"]?fim) exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CHANNEL(peername)})}) exten => s,n,Set(CALLERID(num)=${CALLERID(NUM)}) exten => s,n(fim),Return() ;exten => s,n,GotoIf($["${ARG1}" = "EXTERNO"]?externo) ;exten => s,n,GotoIf($["${ARG1}" = "INTERNO"]?interno) ;exten => s,n,GotoIf($["${CALLERID(NUM)}" >= "8"]?fim) ;exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CHANNEL(peername)})}) ;exten => s,n,Set(CALLERID(num)=${CALLERID(NUM)}) ;exten => s,n,Return() ;exten => s,n(externo),GotoIf($["X${DB(BINA-EXTERNO/${CHANNEL(peername)})}" = "X"]?fim) ;exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CHANNEL(peername)})}) ;exten => s,n,Set(CALLERID(num)=${DB(BINA-EXTERNO/${CHANNEL(peername)})}) ;exten => s,n(fim),AGI(bina_tronco.php,${ARG2},${ARG3}) ;exten => s,n,Noop(BINA_TRONCO = ${BINA_TRONCO}) ;exten => s,n,ExecIf($["X${BINA_TRONCO}" != "X"]?Set(CALLERID(NUM)=${BINA_TRONCO})) ;exten => s,n,Return() ;exten => s,n(interno),GotoIf($["X${DB(BINA-NOME/${CHANNEL(peername)})}" = "X"]?fim) ;exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CHANNEL(peername)})}) ;exten => s,n,Set(CALLERID(num)=${CALLERID(NUM)}) [macro-gravacao] ;ARG1 -> Usar IN para liga��es de entrada e OUT para liga��es de saida; ;ARG2 -> Recebe o numero do ramal (geralmente a variavel ${CALLERID(NUM)} exten => s,1,GotoIf($["${DB(GRAVACAO-${ARG1}/${ARG2})}" = "F"]?fim) exten => s,n,GotoIf($["X${MONITOR_FILENAME}" != "X"]?fim) exten => s,n,Set(UNICO=${RAND(0000000000,9999999999)}) ;exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes) exten => s,n,Set(MONITOR_FILENAME=${ARG2}-${UNICO}-${UNIQUEID}.WAV) exten => s,n,Set(CDR(userfield)=${MONITOR_FILENAME}) exten => s,n,MixMonitor(${MONITOR_FILENAME},b) ;exten => s,n,GotoIf($["X${MATRICULA}" = "X"]?fim) ;exten => s,n,Set(_GRAVACAO=V) exten => s,n(fim),Return() [macro-gravacao-conferencia] exten => s,1,GotoIf($["X${MONITOR_FILENAME}" != "X"]?fim) exten => s,n,Set(UNICO=${RAND(0000000000,9999999999)}) exten => s,n,Set(MONITOR_FILENAME=${ARG1}-${UNICO}-${UNIQUEID}.WAV) exten => s,n,Set(CDR(userfield)=${MONITOR_FILENAME}) exten => s,n,MixMonitor(${MONITOR_FILENAME},b) exten => s,n(fim),Return() [macro-tarifa] exten => s,1,ExecIf($["X${ARG1}" != "X"]?AGI(tarifa.php,${ARG1},${ARG2},${ARG3},${ARG4},${ARG5},${ARG6},${ARG7},${ARG8})) exten => s,n,ExecIf($["${CALLCENTER}" = "SIM"]?GoSub(macro-eventos-conecta-agente,s,1,(${FILA-ORIGEM},${ARG3},${MATRICULA-ORIGEM},${ARG9}))) [macro-tarifa-transferencia] exten => s,1,AGI(tarifaTransfere.php,${ARG1},${ARG2},${ARG4},${ARG3}) [macro-limite-ligacao-entrante] exten => s,1,Set(GROUP()=${ARG1}) exten => s,n,GotoIf($[${GROUP_COUNT(${ARG1})} > ${ARG2}]?limite) exten => s,n,Return() exten => s,n(limite),Playback(appsounds/linhas_ocupadas) exten => s,n,Hangup() [app-envia-sms] exten => _X.,1,NoOp(Enviando SMS) ;exten => _X.,n,KSendSMS(*g5,${EXTEN:4}/c,Mensagem de teste.Enviada para ${EXTEN:4}) exten => _X.,n,KSendSMS(${SMS_TRONCO_ENVIO},${SMS_DESTINO}/e(16),${SMS_MENSAGEM}) ;exten => _X.,n,Wait(50) exten => _X.,n,NoOp(Enviou? ${KSmsDelivered}) exten => _X.,n,NoOp(Codigo: ${KSmsErrorCode}) exten => _X.,n,NoOp(Descr.: ${KSmsErrorName}) exten => _X.,n,Noop(Canal: ${KSmsChannel}) exten => _X.,n,NoOp(ID: ${KSmsReference}) exten => _X.,n,Set(SMS_STATUS=${KSmsDelivered}) exten => _X.,n,Set(SMS_COD_ERRO=${KSmsErrorCode}) exten => _X.,n,Set(SMS_NOME_ERRO=${KSmsErrorName}) exten => _X.,n,Set(SMS_TRONCO_SAIDA=${KSmsChannel}) exten => _X.,n,Set(SMS_ID_ENVIO=${KSmsReference}) ;exten => _X.,n,Set(SMS_STATUS=yes) ;exten => _X.,n,Set(SMS_COD_ERRO=0) ;exten => _X.,n,Set(SMS_NOME_ERRO=None) ;exten => _X.,n,Set(SMS_TRONCO_SAIDA=b1c10) ;exten => _X.,n,Set(SMS_ID_ENVIO=250) exten => _X.,n,AGI(envia_sms.php,${SMS_SIP_ID},${SMS_TRONCO_ENVIO},${SMS_DESTINO},${SMS_MENSAGEM},${SMS_STATUS},${SMS_COD_ERRO},${SMS_NOME_ERRO},${SMS_TRONCO_SAIDA},${SMS_ID_ENVIO}) exten => _X.,n,Wait(3) exten => _X.,n,Answer() exten => _X.,n,Hangup() [app-atende-sms] exten => s,1,Answer() exten => s,n,Hangup() [macro-recorta-acrescenta-tronco] exten => s,1,GotoIf($["X${ARG2}" = "X" & "X${ARG3}" = "X"]?sair) exten => s,n,Set(DESTINO=${ARG1}) exten => s,n,Set(RECORTA=${ARG2}) exten => s,n,Set(ACRESCENTA=${ARG3}) exten => s,n,Set(CUTVAR1=${CUT(DESTINO,/,1)}) exten => s,n,Set(CUTVAR2=${CUT(DESTINO,/,2)}) exten => s,n,Set(CUTVAR3=${CUT(DESTINO,/,3)}) exten => s,n,Set(CUTVAR4=${CUT(DESTINO,/,4)}) ;BINA DOS TRONCOS KHOMP exten => s,n,Set(NOVODESTINO=${CUTVAR3:${RECORTA}}) exten => s,n,Set(NOVOARG1=${CUTVAR1}/${CUTVAR2}/${ACRESCENTA}${NOVODESTINO}${IF($["X${CUTVAR4}" != "X"]?\/${CUTVAR4})}) exten => s,n,Set(NOVOARG10=${ACRESCENTA}${NOVODESTINO}) exten => s,n,Noop(Atualizado para ${NOVOARG1} - ${NOVOARG10}) exten => s,n,Set(RECORTA=) exten => s,n,Set(ACRESCENTA=) exten => s,n(sair),Return() [macro-importa-variaveis] exten => s,1,Set(MATRICULA=${IMPORT(${ARG1},MATRICULA)}) exten => s,n,Set(MATRICULA-ORIGEM=${IMPORT(${ARG1},MATRICULA-ORIGEM)}) exten => s,n,Set(MATRICULA-DESTINO=${IMPORT(${ARG1},MATRICULA-DESTINO)}) exten => s,n,Set(DAC=${IMPORT(${ARG1},DAC)}) exten => s,n,Return() [macro-inicia-conferencia] exten => s,1,Set(__SALA=${RAND(9001,9999)}) ;exten => s,n,GoSub(macro-gravacao-conferencia,s,1,(${SALA})) exten => s,n,GoSub(macro-gravacao,s,1,(OUT,${CALLERID(num)})) exten => s,n,Answer() exten => s,n,Set(CONFBRIDGE(user,template)=default_user_simplesip) exten => s,n,Set(CONFBRIDGE(user,admin)=yes) exten => s,n,Set(CONFBRIDGE(user,marked)=yes) exten => s,n,Set(CONFBRIDGE(user,end_marked)=yes) exten => s,n,ConfBridge(${SALA},,,simplesip_menu) [adiciona-conferencia] exten => 1,1,Read(DEST,dial,,i) exten => 1,n,Set(__RAMAL=${CALLERID(num)}) exten => 1,n,Dial(Local/${DEST}@padrao/n,,HG(adiciona-conferencia,s,1)) exten => 1,n,Hangup() exten => s,1,Set(CONFBRIDGE(user,template)=default_user_simplesip) exten => s,n,Set(CONFBRIDGE(user,end_marked)=yes) exten => s,n,ConfBridge(${SALA}) [macro-verifica-eventos-dacs] exten => s,1,ExecIf($["${ISNULL(${MATRICULA-DESTINO})}" = "1"]?Return()) exten => s,n,Set(FIM_DIAL=$[${EPOCH}]) exten => s,n,Set(EVENTO=$[COMPLETEAGENTRAMAL]) exten => s,n,Set(INICIO_ATENDIMENTO=${DB(INICIO_ATENDIMENTO/${UNIQUEID})}) exten => s,n,Set(TEMPO_CHAMANDO=$[${INICIO_ATENDIMENTO} - ${INICIO_DIAL}]) exten => s,n,Set(DURACAO=$[${FIM_DIAL} - ${INICIO_ATENDIMENTO}]) exten => s,n,Noop(FILA-DESTINO = ${FILA-DESTINO}) exten => s,n,Noop(UNIQUEID = ${UNIQUEID}) exten => s,n,Noop(MATRICULA-DESTINO = ${MATRICULA-DESTINO}) exten => s,n,Noop(EVENTO = ${EVENTO}) exten => s,n,Noop(TEMPO_CHAMANDO = ${TEMPO_CHAMANDO}) exten => s,n,Noop(DURACAO = ${DURACAO}) exten => s,n,QueueLog(${FILA-DESTINO},${UNIQUEID},Agent/${MATRICULA-DESTINO},${EVENTO},${TEMPO_CHAMANDO},${DURACAO}) exten => s,n,Set(DB(CANAL/${MATRICULA-DESTINO}/${IDORIGEM})=DESLIGADO) exten => s,n,System(${ATUALIZAR} LIVRE ${MATRICULA-DESTINO}) exten => s,n,AGI(agente_pausa.php,${MATRICULA-DESTINO}) exten => s,n,Return() ;Aplicacoes auxiliares ;Bloqueia o recebimento de SMS nas placas DGV [entrada-pstn-custom] ;include => entrada-gsm-custom exten => dgv_sms,1,NoOp(SMS Received) exten => dgv_sms,n,NoOp(SMS RECEIVED FROM: ${DGV_SMS_FROM} at ${DGV_SMS_DATE}(${DGV_SMS_TIME}): ${DGV_SMS_TEXT}) exten => dgv_sms,n,Wait(5) exten => dgv_sms,n,HangUp exten => dgv_ussd,1,NoOp(SMS Received) exten => dgv_ussd,n,NoOp(SMS RECEIVED FROM: ${DGV_SMS_FROM} at ${DGV_SMS_DATE}(${DGV_SMS_TIME}): ${DGV_SMS_TEXT}) exten => dgv_ussd,n,Wait(5) exten => dgv_ussd,n,Hangup() ;Reproduz uma audio informativo quando nao encontra a operadora de destino na portabilidade [portabilidade] exten => _X.,1,Noop(OPERADORA => ${SPID}) exten => _X.,n,ExecIf($["${IDOPERADORA}" = "314"]?Playback(appsounds/sem_troncos_oi)) exten => _X.,n,ExecIf($["${IDOPERADORA}" = "320"]?Playback(appsounds/sem_troncos_vivo)) exten => _X.,n,ExecIf($["${IDOPERADORA}" = "321"]?Playback(appsounds/sem_troncos_claro)) exten => _X.,n,ExecIf($["${IDOPERADORA}" = "323"]?Playback(appsounds/sem_troncos_vivo)) exten => _X.,n,ExecIf($["${IDOPERADORA}" = "331"]?Playback(appsounds/sem_troncos_oi)) exten => _X.,n,ExecIf($["${IDOPERADORA}" = "341"]?Playback(appsounds/sem_troncos_tim)) exten => _X.,n,ExecIf($["X${IDOPERADORA}" = "X"]?Playback(appsounds/sem_troncos_operadora)) exten => _X.,n,Hangup() ;Abre o rele 1 do ip all da khomp, usado junto com a conta e senha para o uso de "controle de acesso" [entrada-porteiro] exten => _X.,1,Answer() ;exten => _X.,n,Wait(1) ;exten => _X.,n,ChannelRedirect(${CANALORIGEM},entrada-porteiro,${EXTEN},abrir) ;exten => _X.,n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?default:${CHANNEL(musicclass)})}) ;exten => _X.,n,MusicOnHold(,1000) exten => _X.,n(abrir),SendDTMF(31) ; Se alterado para "32", abre a segunda porta. exten => _X.,n,Hangup() [entrada-porteiro-2] exten => _X.,1,Answer() exten => _X.,n(abrir),SendDTMF(32) ; Se alterado para "31", abre a primeira porta. exten => _X.,n,Hangup()