Pesquisar neste blog

terça-feira, 30 de março de 2010

Criando um siga-me no asterisk 1.6.2 usando a função SayDigits

O primeiro passo é a criação dos contextos ativa e desativa o siga-me. O incremento do recurso siga-me com a função SayDigits pode ser importante, no caso de termos certeza do ramal para o qual estamos ativando o redirecionamento da chamada.


; 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*,4,Playback(beep)
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:

Unknown disse...

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