|
|
[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(don't 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()
|
|
|
|