You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1832 lines
84 KiB

[app-login]
;-----------------------------------------------------------------------------------
;ATENDIMENTO MANUAL
exten => **50,1,NoCDR()
exten => **50,n,Set(__${CALLERID(NUM)}DAC=${DAC})
exten => **50,n,Set(__${CALLERID(NUM)}AGENT=${AGENT})
exten => **50,n,Set(__${CALLERID(NUM)}RAMAL=${RAMAL})
exten => **50,n,Set(__${CALLERID(NUM)}PENALIDADE=${PENALIDADE})
exten => **50,n,Set(__ATENDIMENTO=MANUAL)
exten => **50,n,RemoveQueueMember(${${CALLERID(NUM)}DAC},Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n)
exten => **50,n,System(${DELETAR} '${${CALLERID(NUM)}AGENT}')
exten => **50,n,Noop(${SYSTEMSTATUS})
exten => **50,n,Noop(${DB_DELETE(MATRICULA/${${CALLERID(NUM)}RAMAL})})
exten => **50,n(add),AddQueueMember(${${CALLERID(NUM)}DAC},Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n,${${CALLERID(NUM)}PENALIDADE},,Agent/${${CALLERID(NUM)}AGENT},${DB(DIAL/${${CALLERID(NUM)}RAMAL})})
exten => **50,n,Noop(AddQueueMember respondeu == ${AQMSTATUS})
exten => **50,n,Goto(${AQMSTATUS})
exten => **50,n(ADDED),System(${INSERIR} LOGANDO '${${CALLERID(NUM)}AGENT}')
exten => **50,n,Noop(${SYSTEMSTATUS})
exten => **50,n,Goto(app-login,**51,1)
exten => **50,n,Hangup()
exten => **50,n(MEMBERALREADY),RemoveQueueMember(${${CALLERID(NUM)}DAC},Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n)
exten => **50,n,Noop(Removido agente Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n da fila ${${CALLERID(NUM)}DAC})
exten => **50,n,System(${DELETAR} '${${CALLERID(NUM)}AGENT}')
exten => **50,n,Goto(app-login,**50,add)
exten => **50,n(NOSUCHQUEUE),System(${INSERIR} FALHA 'Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n')
exten => **50,n,Noop(System = ${SYSTEMSTATUS})
exten => **50,n,Noop(FILA ${${CALLERID(NUM)}DAC} NAO EXISTE!!!)
exten => **50,n,Playback(agent-incorrect)
exten => **50,n,Hangup()
exten => **51,1,NoCDR()
exten => **51,n,PauseQueueMember(,Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n)
exten => **51,n,Goto(${PQMSTATUS})
exten => **51,n(PAUSED),Playback(agent-loginok)
exten => **51,n,System(${ATUALIZAR} LOGIN '${${CALLERID(NUM)}AGENT}')
exten => **51,n,Set(GLOBAL(AGENTE${${CALLERID(NUM)}RAMAL})=${${CALLERID(NUM)}AGENT})
exten => **51,n,Set(DB(AGENTELOGIN/${${CALLERID(NUM)}RAMAL})=${${CALLERID(NUM)}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(__${CALLERID(NUM)}DAC=${DAC})
exten => **60,n,Set(__${CALLERID(NUM)}AGENT=${AGENT})
exten => **60,n,Set(__${CALLERID(NUM)}RAMAL=${RAMAL})
exten => **60,n,Set(__${CALLERID(NUM)}PENALIDADE=${PENALIDADE})
exten => **60,n,Set(__ATENDIMENTO=AUTO)
exten => **60,n,System(asterisk -rx "agent logoff Agent/${${CALLERID(NUM)}AGENT} soft")
exten => **60,n,Noop(${SYSTEMSTATUS})
exten => **60,n,RemoveQueueMember(${${CALLERID(NUM)}DAC},Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n)
exten => **60,n,System(${DELETAR} '${${CALLERID(NUM)}AGENT}')
exten => **60,n,Noop(${SYSTEMSTATUS})
exten => **60,n,Noop(${DB_DELETE(MATRICULA/${${CALLERID(NUM)}RAMAL})})
exten => **60,n(add),AddQueueMember(${${CALLERID(NUM)}DAC},Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n,${${CALLERID(NUM)}PENALIDADE},,Agent/${${CALLERID(NUM)}AGENT},Agent:${${CALLERID(NUM)}AGENT})
exten => **60,n,Noop(AddQueueMember respondeu == ${AQMSTATUS})
exten => **60,n,Goto(${AQMSTATUS})
exten => **60,n(ADDED),System(${INSERIR} LOGANDO '${${CALLERID(NUM)}AGENT}')
exten => **60,n,Noop(${SYSTEMSTATUS})
exten => **60,n,Goto(app-login,**61,1)
exten => **60,n,Hangup()
exten => **60,n(MEMBERALREADY),RemoveQueueMember(${${CALLERID(NUM)}DAC},Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n)
exten => **60,n,Noop(Removido agente ${${CALLERID(NUM)}AGENT} da fila ${${CALLERID(NUM)}DAC})
exten => **60,n,System(${DELETAR} '${${CALLERID(NUM)}AGENT}')
exten => **60,n,Noop(${SYSTEMSTATUS})
exten => **60,n,System(asterisk -rx "agent logoff Agent/${${CALLERID(NUM)}AGENT} soft")
exten => **60,n,Noop(${SYSTEMSTATUS})
exten => **60,n,Goto(app-login,**60,add)
exten => **60,n(NOSUCHQUEUE),System(${INSERIR} FALHA '${${CALLERID(NUM)}AGENT}')
exten => **60,n,Noop(System = ${SYSTEMSTATUS})
exten => **60,n,Noop(FILA ${${CALLERID(NUM)}DAC} NAO EXISTE!!!)
exten => **60,n,Hangup()
exten => **61,1,NoCDR()
exten => **61,n,PauseQueueMember(,Local/${${CALLERID(NUM)}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 '${${CALLERID(NUM)}AGENT}')
exten => **62,n,Noop(${SYSTEMSTATUS})
exten => **62,n,Answer()
exten => **62,n,Set(CHANNEL(dtmf_features)=TH)
exten => **62,n,Set(CONNECTEDLINE(all)="Aguardando" <${${CALLERID(NUM)}AGENT}>)
exten => **62,n,Set(DB(MATRICULA/${${CALLERID(NUM)}RAMAL})=${${CALLERID(NUM)}AGENT})
;exten => **62,n,Set(CHANNEL(musicclass)=agentes)
exten => **62,n,AgentLogin(${${CALLERID(NUM)}AGENT})
exten => h,1,GotoIf($["${ATENDIMENTO}" = "AUTO"]?2:6)
exten => h,n,RemoveQueueMember(${${CALLERID(NUM)}DAC},Local/${${CALLERID(NUM)}RAMAL}@app-callcenter/n)
exten => h,n,Noop(Removido agente ${${CALLERID(NUM)}AGENT} da fila ${${CALLERID(NUM)}DAC})
exten => h,n,System(${DELETAR} '${${CALLERID(NUM)}AGENT}')
exten => h,n,Noop(${DB_DELETE(MATRICULA/${${CALLERID(NUM)}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},tkrTM(info-agente,${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/${CALLERID(NUM)})}" = "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/${CALLERID(NUM)})}" = "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,Macro(planodediscagem,${EXTEN},${DAC},${CONTEXT:0:3})
exten => _X.,n,Hangup()
[macro-planodediscagem]
exten => s,1,AGI(ramal_empresa.php,${CALLERID(num)})
exten => s,n,ExecIf($["${ISNULL(${ID_EMPRESA})}" = "0"]?Set(CDR(org_id)=${ID_EMPRESA}))
exten => s,n,ExecIf($["${ISNULL(${ID_EMPRESA})}" = "0"]?Set(EXTENDESTINO=${ID_EMPRESA}${ARG1}))
exten => s,n,Macro(callerid,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,Macro(verifica-rota,${CALLERID(NUM)},${EXTENDESTINO})
exten => s,n(chamadadac),ExecIf($["${ISNULL(${ARG2})}" = "0"]?Macro(verifica-rota,${EXTENDESTINO},${EXTENDESTINO})
exten => s,n(discadireto),ExecIf($["${DIALPLAN_EXISTS(app-padrao,${EXTENDESTINO},1)}" = "1"]?Goto(app-padrao,${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,MacroExit()
exten => s,n,Hangup()
exten => s,n(containvalida),Playback(appsounds/conta-invalida)
exten => s,n,MacroExit()
exten => s,n(alterasenha),Playback(appsounds/altere-senha)
exten => s,n,MacroExit()
exten => s,n(sempermissao),Playback(appsounds/nao-tem-permissao)
exten => s,n,MacroExit()
exten => s,n(limite),Playback(appsounds/linhas_ocupadas)
exten => s,n,MacroExit()
exten => s,n(senha),Playback(appsounds/utilize_senha)
exten => s,n,MacroExit()
exten => s,n(invalido),Playback(invalid)
exten => s,n,MacroExit()
exten => h,1,Macro(hangup)
[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,TtM(info-agente,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,,rgM(get-canal-transfer,${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,Macro(hangup)
[app-estaciona]
exten => _X.,1,ResetCDR(w)
exten => _X.,n,ParkedCall(,${DB(ESTACIONA/${EXTEN})})
exten => _X.,n,Hangup()
exten => h,1,Macro(hangup)
[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(<EFBFBD> MAQUINA!!!!)
exten => talk,3,Goto(padrao,200,1) ; this is a machine
exten => talk,4,Hangup()
exten => talk,5,Noop(<EFBFBD> HUMANO!!!!)
exten => talk,6,Goto(padrao,300,1) ; this is a human
exten => talk,7,Hangup()
;Aplica<EFBFBD><EFBFBD>es Mesa Operadora - Alan Pablo: 2012-02-11 - Cuiab<EFBFBD> - 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<EFBFBD><EFBFBD>es Virtual Fone - Alan Pablo: 2012-06-23 - Cuiab<EFBFBD> - 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,Macro(hangup)
[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,Macro(hangup)
;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},,gtM(eventos-conecta-agente,${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}gtkM(eventos-conecta-agente,${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"]?MacroExit())
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,MacroExit()
;Macro para liga<EFBFBD><EFBFBD>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,Macro(gravacao,OUT,${RAMAL})
exten => s,n,MacroExit()
;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<EFBFBD> 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"]?MacroExit())
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,MacroExit()
;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
;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=${MACRO_EXTEN})
exten => s,n,Set(_TIPO=INTERNA)
exten => s,n,Set(DB(ULTIMO-DISCADO/${CALLERID(NUM)})=${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,Macro(gravacao,IN,${ARG1})
exten => s,n,Macro(gravacao,OUT,${CALLERID(num)})
exten => s,n,Set(DB(ULTIMO-RECEBIDO/${ARG1})=${CALLERID(NUM)})
exten => s,n,Macro(callerid,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:<http://127.0.0.1/Bellcore-dr2>)
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:<http://127.0.0.1/Bellcore-dr2>))
;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}rM(eventos-conecta-agente,${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"]?MacroExit())
exten => s,n,Goto(status-${DIALSTATUS})
exten => s,n,MacroExit()
exten => s,n(status-ANSWER),AGI(${INTEGRACAO_ABD},${IDORIGEM},,${CALLERID(num)},${ARG1})
exten => s,n,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
exten => s,n(chamada-espera),Goto(chamada-espera,${ARG1},1)
;exten => s,n,Busy(1)
exten => s,n,MacroExit()
;exten => s,n(pausa),Busy()
;exten => s,n,MacroExit()
exten => s,n(pausa),Set(_PAUSA=)
exten => s,n,ExecIf($["X${DAC}" != "X"]?MacroExit())
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,MacroExit()
exten => s,n(naoclassificada),Set(_CLASSIFICADA=)
exten => s,n,ExecIf($["X${DAC}" != "X"]?MacroExit())
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,MacroExit()
;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),MacroExit()
;exten => s,n(sair),Hangup()
;exten => h,1,Macro(hangup)
[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
;exten => s,1,SIPAddHeader(Alert-Info:Bellcore-r1)
exten => s,1,Set(_PICKUPMARK=${MACRO_EXTEN})
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,Macro(gravacao,IN,${ARG1})
exten => s,n,Macro(gravacao,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}rM(eventos-conecta-agente,,,,,1))
exten => s,n,ExecIf($["X${DAC}" != "X"]?MacroExit())
exten => s,n,Goto(status-${DIALSTATUS})
exten => s,n,MacroExit()
exten => s,n(status-ANSWER),MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
;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,MacroExit()
exten => s,n(pausa),Set(_PAUSA=)
exten => s,n,ExecIf($["X${DAC}" != "X"]?MacroExit())
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,MacroExit()
exten => s,n(naoclassificada),Set(_CLASSIFICADA=)
exten => s,n,ExecIf($["X${DAC}" != "X"]?MacroExit())
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,MacroExit()
exten => h,1,Macro(hangup)
[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"]?MacroExit())
;;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,MacroExit()
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}hgM(analisa-chamada,${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,MacroExit()
exten => s,n,Hangup()
exten => s,n(status-ANSWER),AGI(status_discador.php,${DIALSTATUS},${ARG3},${ARG5},${ARG6},${ARG7})
exten => s,n,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
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,MacroExit()
exten => s,n,Hangup()
exten => s,n(aplicacao),Macro(gravacao,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}M(info-agente,APLICACAO,${MATRICULA}))
exten => s,n,Goto(aplicacao-${DIALSTATUS})
exten => s,n,MacroExit()
exten => s,n(aplicacao-BUSY),System(${ATUALIZAR} LIVRE ${MATRICULA})
exten => s,n,MacroExit()
exten => s,n(aplicacao-NOANSWER),System(${ATUALIZAR} LIVRE ${MATRICULA})
exten => s,n,MacroExit()
exten => s,n(aplicacao-CHANUNAVAIL),System(${ATUALIZAR} LIVRE ${MATRICULA})
exten => s,n,MacroExit()
exten => s,n(aplicacao-CANCEL),System(${ATUALIZAR} LIVRE ${MATRICULA})
exten => s,n,MacroExit()
exten => s,n(aplicacao-CONGESTION),System(${ATUALIZAR} LIVRE ${MATRICULA})
exten => s,n,MacroExit()
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),MacroExit()
[macro-info-agente]
exten => s,1,Set(DB(AGENTE/${ARG1})=${CHANNEL})
exten => s,n,AGI(info_agente.php,FILA,${CHANNEL},${ARG1})
exten => s,n,MacroExit()
[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"]?MacroExit())
exten => s,n,ExecIf($["${TIPO_ACESSO}" = "3"]?MacroExit())
exten => s,n,GotoIf($["${TIPO_ACESSO}" = "2"]?conta-senha)
exten => s,n,Goto(s,semrota)
exten => s,n,MacroExit()
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),Macro(gravacao-conta-senha)
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,MacroExit()
exten => s,n(semrota),Playback(appsounds/no-rights)
exten => s,n,Hangup()
[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,MacroExit()
exten => s,n(dgv),Answer()
exten => s,n,Set(CDR(userfield)=chamada-a-cobrar)
exten => s,n,DgCollectCallBlock()
exten => s,n,MacroExit()
exten => s,n(khomp),Set(KDropCollectCall=yes)
exten => s,n,MacroExit()
[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"]?MacroExit())
exten => s,n,ExecIf($["X${OPERDDD}" = "X"]?AGI(verifica_operadora.php,${ARG1},${ARG3},${ARG10}))
exten => s,n,Macro(recorta-acrescenta-tronco,${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),Macro(gravacao,OUT,${RAMAL})
exten => s,n,Macro(callerid,${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,MacroExit()
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),MacroExit()
exten => s,n(status-NOANSWER),Set(CDR_PROP(disable)=1)
exten => s,n,Hangup()
exten => s,n(status-CHANUNAVAIL),MacroExit()
exten => s,n(status-CANCEL),MacroExit()
exten => s,n(status-CONGESTION),MacroExit()
exten => s,n(limite),Set(__LIMITE=OK)
exten => s,n,MacroExit()
exten => s,n(franquia),Set(__FRANQUIA=OK)
exten => s,n,MacroExit()
;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),MacroExit()
[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),MacroExit()
[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),MacroExit()
[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/${CALLERID(NUM)})}" = "X"]?binatronco)
exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CALLERID(NUM)})})
exten => s,n,Set(CALLERID(num)=${DB(BINA-EXTERNO/${CALLERID(NUM)})})
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,MacroExit()
exten => s,n(interno),GotoIf($["X${DB(BINA-NOME/${CALLERID(NUM)})}" = "X"]?fim)
exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CALLERID(NUM)})})
exten => s,n,Set(CALLERID(num)=${CALLERID(NUM)})
exten => s,n(fim),MacroExit()
;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/${CALLERID(NUM)})})
;exten => s,n,Set(CALLERID(num)=${CALLERID(NUM)})
;exten => s,n,MacroExit()
;exten => s,n(externo),GotoIf($["X${DB(BINA-EXTERNO/${CALLERID(NUM)})}" = "X"]?fim)
;exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CALLERID(NUM)})})
;exten => s,n,Set(CALLERID(num)=${DB(BINA-EXTERNO/${CALLERID(NUM)})})
;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,MacroExit()
;exten => s,n(interno),GotoIf($["X${DB(BINA-NOME/${CALLERID(NUM)})}" = "X"]?fim)
;exten => s,n,Set(CALLERID(name)=${DB(BINA-NOME/${CALLERID(NUM)})})
;exten => s,n,Set(CALLERID(num)=${CALLERID(NUM)})
[macro-gravacao]
;ARG1 -> Usar IN para liga<EFBFBD><EFBFBD>es de entrada e OUT para liga<EFBFBD><EFBFBD>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),MacroExit()
[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),MacroExit()
[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"]?Macro(eventos-conecta-agente,${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,MacroExit()
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),MacroExit()
[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,MacroExit()
[macro-inicia-conferencia]
exten => s,1,Set(__SALA=${RAND(9001,9999)})
;exten => s,n,Macro(gravacao-conferencia,${SALA})
exten => s,n,Macro(gravacao,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"]?MacroExit())
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,MacroExit()
;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()