[AsteriskBrasil] RES: sip_header e dialplan

Alexandre Abreu abreu em redt.com.br
Sábado Julho 28 19:50:32 BRT 2007


Olá.

Sugiro fortemente que reveja sua lógica.
Se basear no header From pode ser perigoso nesse caso, e o tamanho do campo
pode ganhar mais caracteres e interferir com a sua lógica no ${CUT()}
através do delimitador.

O erro aqui é obvio: 

Você fez um Dial() com o resultado retornado pela função SIP_HEADER(FROM):

Dial("SIP/8889-081f40d0","SIP/011553187830400 em op8889<sip:8889 em 192.168.10.4>;
tag=4ffcc1f54d8d128o0|40|tT") in new stack

Precisamos tratar o output disso de tal maneira que sobre somente aquilo que
você precisa.

Fiz um exemplo:

Extensions.conf:

exten => 10,n,Set(VOIP=SIP/${EXTEN}@op${SIP_HEADER(FROM)})
exten => 10,n,NoOp(${VOIP})
exten => 10,n,Set(VAR=${CUT(VOIP,:,2)})
exten => 10,n,NoOp(${VAR:0:3})
exten => 10,n,NoOp(Dial(SIP/${EXTEN}@op${VAR:0:3}))

CLI:

-- Executing Set("SIP/300-09dbebe0", "VOIP=SIP/10 em opAlexandre
Abreu<sip:300 em 189.25.135.109>;tag=57629d22") in new stack
-- Executing NoOp("SIP/300-09dbebe0", "SIP/10 em opAlexandre
Abreu<sip:300 em 189.25.135.109>;tag=57629d22") in new stack
-- Executing Set("SIP/300-09dbebe0", "VAR=300 em 189.25.135.109>;tag=57629d22")
in new stack
-- Executing NoOp("SIP/300-09dbebe0", "300") in new stack
-- Executing NoOp("SIP/300-09dbebe0", "Dial(SIP/10 em op300)") in new stack

Desta forma o comando Dial ta em perfeita sintonia com sua parametrização. 

--
Alexandre Abreu
REDT TELECOM - Consultoria VoIP/PABX IP
http://www.redt.com.br

-----Mensagem original-----
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de José
Carlos Messias
Enviada em: quarta-feira, 25 de julho de 2007 12:09
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [AsteriskBrasil] sip_header e dialplan

Estou precisando da ajuda de vocês, estou tentando associar cada ramal
sip do asterisk aos ramais de contas sip da operadora para fazer
ligações da seguinte forma, mas não está dando certo.

sip.conf
register=>user:pass em sip.operadora.com

[op8001] ;para fazer ligações pela operadora
type=friend
username=xxxxxxxxxxxxx
secret=xxxx
host=sip.operadora.com
dtmfmode=rfc2833
fromuser=xxxxxx
fromdomain=sip.operadora.com
context=default
canreinvite=no
qualify=yes
nat=yes
insecurity=invite
disallow=all
allow=g729


extensions.conf
exten=>_01155XX[1-9]XXXXXXX,1, Set(VOIP=SIP/${EXTEN}@op${SIP_HEADER(FROM)})
exten=>_01155XX[1-9]XXXXXXX,n, NoOP(VAR=${VOIP})
exten=>_01155XX[1-9]XXXXXXX,n, Dial(${VOIP},40,tT)

se eu digitar a string sem a variável VOIP funciona
assim funciona:
exten=>_01155XX[1-6]XXXXXXX,1,Dial(SIP/${EXTEN}@op8889,40,tT)

veja a saida:
    -- Executing [011553187830444 em default:1] Set("SIP/8889-081f40d0",
"VOIP=SIP/011553187830444 em op"8889"
<sip:8889 em 192.168.10.4>;tag=4ffcc1f54d8d128o0") in new stack
    -- Executing [011553187830444 em default:2] NoOp("SIP/8889-081f40d0",
"VAR=SIP/011553187830444 em op8889
<sip:8889 em 192.168.10.4>;tag=4ffcc1f54d8d128o0") in new stack
    -- Executing [011553187830444 em default:3] Dial("SIP/8889-081f40d0",
"SIP/011553187830400 em op8889
<sip:8889 em 192.168.10.4>;tag=4ffcc1f54d8d128o0|40|tT") in new stack
[Jul 25 12:03:38] WARNING[15037]: chan_sip.c:2789 create_addr: No such
host: op8889 <sip[Jul 25 12:03:38] WARNING[15037]: app_dial.c:1106
dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No
route to destination)
  == Everyone is busy/congested at this time (1:0/0/1)  == Auto
fallthrough, channel 'SIP/8889-081f40d0' status is 'CHANUNAVAIL'
_______________________________________________
Compre uma camiseta da AsteriskBrasil.org!
            http://www.voipmania.com.br
                == VoIPMania.com.br ==

_______________________________________________
LIsta de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil



Mais detalhes sobre a lista de discussão AsteriskBrasil