<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
I'm not completely sure whether your suggestion is to add the
additional CALLERID information to the list of parameters that are
already being passed to realtime procedures, because on that case it
will get automatically added to SQL query statement, won't it ?<br>
Anyway, I would like to place a question that will be more profitable:
It would be acceptable to asterisk staff a change on realtime so the
channel parameter gets forwarded to all realtime configuration routines
("config_load_func", "realtime_var_get", "realtime_multi_get" and
"realtime_update") declared at "main/config.h" ? (I know that this will
demand changes on some methods from "pbx/pbx_realtime.c" so the channel
can indeed be forwarded, and on all implemented drivers as well. But a
controlled change, I think.)<br>
<br>
The reason is quite simple.<br>
With the channel in hand I'm pretty sure that we'll have all necessary
means to get the driver running with anything it demands (in terms of
information, I mean).<br>
<br>
I had a look on "res_config_curl" and it's quite similar with what
we've proposed here.<br>
Use REST combined with already defined legacy protocol to avoid new
protocol definition and associated code/decode procedures.<br>
<br>
Thank's a lot for your "res_config_curl" indication.<br>
I'll be waiting some return of you about the "channel parameter thing"
:-)<br>
<br>
Best regards,<br>
Mauro.<br>
<br>
<br>
<br>
Tilghman Lesher escreveu:
<blockquote
 cite="mid:200908131348.06818.tilghman@mail.jeffandtilghman.com"
 type="cite">
  <pre wrap="">On Thursday 13 August 2009 13:10:01 Mauro Sergio Ferreira Brasil wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">Hi Tilghman, and thanks for the reply.

I'm trying to figure out the better approach to handle a very dynamic
dialplan that depends on legacy systems information.
For now I was considering two approaches:

Option 1:

Have all extensions persisted on Mysql database and retrieved through
ARA mysql driver. All these extensions will call an application
("AuthorizeCall", for example) that will contact legacy systems and set
some variables that I'll test right after to decide: if I can proceed
with the call; if I should return a busy status; if I can proceed with
the call but through an specific telco gateway; etc.

This approach takes two steps that are: 1- the database dialplan
retrieval; and 2- the legacy system routing and authorization query.
For this approach each extension retrieved from database would seem like
example below:

exten=&gt;1001,1,AuthorizeCall(${CONTEXT},${CALLERID(num)},${EXTEN})
exten=&gt;1001,n,GotoIf($[${CALLAUTHORIZATION} = ACCEPTED]?proceed)
exten=&gt;1001,n,Playtones(congestion)
exten=&gt;1001,n,Congestion()
exten=&gt;1001,n(proceed),Dial(SIP/${EXTEN},20,RtT)
exten=&gt;1001,n,GotoIf($[${DIALSTATUS} = BUSY]?busy)
exten=&gt;1001,n,Voicemail(${EXTEN}@${VOICEMAILSRV},u)
exten=&gt;1001,n,Hangup()
exten=&gt;1001,n(busy),Voicemail(${EXTEN}@${VOICEMAILSRV},b)
exten=&gt;1001,n,Hangup()

Option 2:

Create an ARA driver that will contact legacy systems and generate the
dialplan for the queried extension on demand.
In just one step we will contact the legacy systems and build the
dialplan we need to complete the call.

The problem here is that, as long as I could see, the ARA driver methods
don't receive the channel as a parameter, and I could see any way to
retrieve this channel either.
Until now, I believe that I need the current channel (the channel that
issued the ARA query) so I can get the necessary information (like the
context, the caller number and the extension) - that are channel
variables - to calculate the extension steps.
Am I right ?
Do I realy need the channel ? Is there other way to retrive this
information from inside ARA driver methods ?

I would prefer to build our solution using this approach, but I'm not
certain if is there solutions to the problems I've noticed until now.

Do you have any ideias to make second approach a viable solution ?
If you don't... do you see any problems on first approach ?
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Well, most of the information you're looking for is actually passed back to
the realtime driver already, as parameters to the query.  That's true for both
context and extension.  The only part that isn't passed back is callerid
number.  That could be added without too much trouble to the pbx_realtime
module, although it would not be backwards compatible with most
implementations.  In addition, I'd suggest using something like the
res_config_curl driver to make your extra evaluation on the backend
easy.

  </pre>
</blockquote>
<br>
<div class="moz-signature">-- <br>
<meta http-equiv="Content-Language" content="pt-br">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; ">
<title>TQI - Technology and Quality on Information</title>
<table style="border-width: 0pt; border-collapse: collapse;"
 id="AutoNumber1" border="1" bordercolor="#111111" cellpadding="0"
 cellspacing="0" height="151" width="46%">
  <tbody>
    <tr>
      <td style="border-style: none; border-width: medium;" height="17"
 width="96%"> <sub><u>At.,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; </u></sub></td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="32"
 width="16%"> <img src="cid:part1.09050101.07060605@tqi.com.br"
 border="0" height="23" width="150">&nbsp; </td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="12"
 width="100%"><b><font face="Verdana" size="1">Technology and Quality
on Information</font></b></td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="13"
 width="100%"><font face="Verdana" size="1">Mauro S&eacute;rgio Ferreira Brasil</font></td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="14"
 width="100%"> <font face="Verdana" size="1">Coordenador de Projetos e
Analista de Sistemas</font></td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="14"
 width="100%"><font color="#0000ff" face="Wingdings" size="2">+</font><font
 face="Courier New" size="2"> </font> <font style="font-size: 9pt;"
 face="Courier New"> <a href="mailto:@tqi.com.br">mauro.brasil@tqi.com.br</a></font></td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="14"
 width="100%"><font color="#0000ff" face="Wingdings" size="2">:</font><font
 face="Courier New" size="2"> </font>
      <font style="font-size: 9pt;" face="Courier New"> <a
 href="http://www.tqi.com.br">www.tqi.com.br</a></font></td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="14"
 width="100%"><font color="#0000ff"><font face="Wingdings" size="2">(</font><font
 face="Courier New" size="2"> + 55 </font>
      <font style="font-size: 9pt;" face="Courier New">(34)3291-1700</font></font></td>
    </tr>
    <tr>
      <td style="border-style: none; border-width: medium;" height="14"
 width="100%"><font color="#0000ff"><font face="Wingdings" size="2">(</font><font
 face="Courier New" size="2"> + 55 </font>
      <font style="font-size: 9pt;" face="Courier New">(34)9971-2572</font></font></td>
    </tr>
  </tbody>
</table>
</div>
</body>
</html>