[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