[AsteriskBrasil] RES: Sip Realtime
alcindo em sistecvoip.com.br
alcindo em sistecvoip.com.br
Terça Setembro 21 21:02:53 BRT 2010
Olá...
O seguinte...
Você tem que ter uma função no banco pra calcular o tempo máximo que pode
durar a ligação de acordo com o saldo do cliente e inserir no
extensions.conf algo como:
[default]
exten => _0X.,1,Mysql(Connect connid sip.server.com.br user senha
NomeDoBancoSIP)
exten => _0X.,2,Mysql(Query resultid ${connid} select\
f_calc_time_balance("${CALLERID(num)}"\,\ "${SIP_HEADER(TO)}")\ as\ maxTime)
exten => _0X.,3,Mysql(Fetch fetchid ${resultid} maxTime)
exten => _0X.,4,Mysql(Clear ${resultid})
exten => _0X.,5,Mysql(Disconnect ${connid})
exten => _0X.,6,GotoIf($[${maxTime}=’’]|[${maxTime}<=0]?7:8)
exten => _0X.,7,Hangup
exten => _0X.,8,Wait,1
switch => Realtime/mycontext em extensions
Digamos que a estrutura da tabela de rotas do banco seja algo como:
/*==============================================================*/
/* Table: routes */
/*==============================================================*/
create table routes
(
pk_routes int not null,
dsc_route varchar(50) not null,
context varchar(30) not null,
exten varchar(30) not null,
priority int not null,
app varchar(30) not null,
appdata varchar(128) not null,
flag_active smallint not null default,
primary key (pk_routes)
);
No banco de dados você deve ter uma view que retorna as linhas das rotas a
serem utilizadas pelo Realtime para poder determinar os parâmetros da
aplicação Dial como abaixo:
/*==============================================================*/
/* View: vw_extensions */
/*==============================================================*/
create view vw_extensions as
select pk_routes, context, exten, priority, app, appdata from routes
where flag_active = 1
and exten is not null
and exten <> ''
and context is not null
and context <> ''
order by context, pk_routes;
+-----------+-----------+---------------+----------+------+-----------------
-----------------------------------------+
| pk_routes | context | exten | priority | app | appdata
|
+-----------+-----------+---------------+----------+------+-----------------
-----------------------------------------+
| 1 | mycontext | _0XX[23456]X. | 9 | Dial |
SIP/55${EXTEN}@operadora:5060|90|S|${maxTime} |
| 2 | mycontext | _0XX[789]X. | 9 | Dial |
SIP/55${EXTEN}@operadora:5060|90|S(${maxTime} |
| 3 | mycontext | _00X. | 9 | Dial |
SIP/55${EXTEN}@operadora:5060|90|S|${maxTime} |
+-----------+-----------+---------------+----------+------+-----------------
-----------------------------------------+
A aplicação irá buscar somente os dados da tabela que realmente interessam
ao asterisk e o parâmetro maxTime deve conter o tempo máximo de duração da
chamada.
O Realtime vai automaticamente fazer a chamada para view que retornará
somente uma das linhas acima que é a rota que combina exatamente com o
parâmetro ${EXTEN}.
O contexto default está definido na tabela ‘sip.conf’ do asterisk que também
deve estar dentro do banco de dados referindo-se, no caso acima, pela string
‘operadora’.
Observe que o Realtime irá chamar somente o contexto ‘mycontext’ então nesta
mesma tabela você poderá ter também rotas entrantes algo ‘myfrompstn’
chamando pela mesma rotina alternado o comando da aplicação (switch =>
Realtime/myfrompstn em extensions).
Neste modelo você consegue com uma simples troca do campo flag_active, sendo
1 rota ativa e 0 rota inativa, ter várias operadoras para realizar as
terminações.
Espero que ajude.
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Alex
Tavares Faiotto
Enviada em: terça-feira, 21 de setembro de 2010 16:58
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [AsteriskBrasil] Sip Realtime
Pessoal, como eu coloco o parametro.
call-limit
no Sip REALTIME na tabela do banco?
Vlw
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20100921/6a84f581/attachment.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil