[asterisk-dev] Retrieve current channel from inside ARA driver method ...

Mauro Sergio Ferreira Brasil mauro.brasil at tqi.com.br
Thu Aug 13 13:10:01 CDT 2009


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=>1001,1,AuthorizeCall(${CONTEXT},${CALLERID(num)},${EXTEN})
exten=>1001,n,GotoIf($[${CALLAUTHORIZATION} = ACCEPTED]?proceed)
exten=>1001,n,Playtones(congestion)
exten=>1001,n,Congestion()
exten=>1001,n(proceed),Dial(SIP/${EXTEN},20,RtT)
exten=>1001,n,GotoIf($[${DIALSTATUS} = BUSY]?busy)
exten=>1001,n,Voicemail(${EXTEN}@${VOICEMAILSRV},u)
exten=>1001,n,Hangup()
exten=>1001,n(busy),Voicemail(${EXTEN}@${VOICEMAILSRV},b)
exten=>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 ?

Thanks and best regards,
Mauro.




Tilghman Lesher escreveu:
> On Thursday 13 August 2009 11:03:31 Mauro Sergio Ferreira Brasil wrote:
>   
>> Is there any way to retrieve the channel associated with an ARA
>> (Asterisk Realtime Architecture) information request ?
>>     
>
> No, that isn't possible.  What exactly are you trying to do, that this would
> be necessary?  Perhaps there's a better approach.
>
>   

-- 
__At.,                                                                                                                             
   _
 
*Technology and Quality on Information*
Mauro Sérgio Ferreira Brasil
Coordenador de Projetos e Analista de Sistemas
+ mauro.brasil at tqi.com.br <mailto:@tqi.com.br>
: www.tqi.com.br <http://www.tqi.com.br>
( + 55 (34)3291-1700
( + 55 (34)9971-2572

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20090813/36ab2bed/attachment.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CMMI_2.jpg
Type: image/jpeg
Size: 1705 bytes
Desc: not available
Url : http://lists.digium.com/pipermail/asterisk-dev/attachments/20090813/36ab2bed/attachment.jpg 


More information about the asterisk-dev mailing list