[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