; Ativa Siga-me incondicional
[sigame-on]
exten => _*71*.,1,NoCDR()exten => _*71*.,2,Set(DB(CF/${CALLERID(num)})=${EXTEN:4})
exten => _*71*.,3,Playback(call-fwd-unconditional&for&extension)
exten => _*71*.,4,SayDigits(${CALLERID(num)})
exten => _*71*.,5,Playback(is-set-to)
exten => _*71*.,6,SayDigits(${EXTEN:4})
exten => _*71*.,7,Playback(vm-saved)
exten => _*71*.,8,Playback(beep)
exten => _*71*.,9,Hangup
; Desativa o siga-me incondicional
[sigame-off]
exten => _*72*,1,NoCDR()
exten => _*72*,2,DBdel(CF/${CALLERID(num)})
exten => _*72*,3,Playback(cancelled)
exten => _*72*,2,DBdel(CF/${CALLERID(num)})
exten => _*72*,3,Playback(cancelled)
exten => _*72*,4,Playback(beep)
exten => _*72*,5,Hangup
exten => _*72*,5,Hangup
Bom, agora vamos ao pulo do gato, esse passo é muito importante pois é ele quem verifica se existe ou não o siga-me para o ramal.
Vamos ao contexto:
[disca]
exten => _3XXX,1,Noop(CF/${EXTEN})
exten => _3XXX,2,Set(siga=${DB(CF/${EXTEN})})
exten => _3XXX,3,Dial(SIP/${siga},30,Ttw)
exten => _3XXX,4,Dial(SIP/${EXTEN}) ; Unconditional forward
exten => _3XXX,5,Hangup
Neste caso, todas as ligações que forem feitas para qualquer o número 3XXX, ele vai verificar na base de dados do asterisk se existe algum registro CF referente ao ramal de destino e se existe um valor para esse registro, caso haja, ele efetua o siga-me, caso não faz a ligação normal.
Para resumir, se você tem um arquivo de configuração extensions.conf zerado, apenas com o contexto default criado, faça as seguintes alterações conforme abaixo:
[default]
include = > sigame-on
include = > sigame-off
include = > disca
Um comentário:
Oi Marcos,
Sei que esse post é bastante antigo mas não poderia deixar de comentar e lhe dar os parabéns pela solução.
Todos os encaminhamentos de chamadas que encontrei por aí eram extremamente complexos e pouco funcionais mas esta sua solução é incrivelmente simples e muito muito funcional mesmo.
Parabéns pela colaboração
Marco Aurelio Pacheco
marco.pacheco.criciuma@gmail.com
Postar um comentário