[asterisk-dev] Bridging Question

Norman Franke norman at myasd.com
Mon Feb 26 15:56:04 MST 2007


I'm attempting to modify app_queue to support a legacy system we  
have. Basically, after a timeout (e.g. 3 or 4 rings), I want it to  
patch the call to another system (via a Zap channel) that plays a  
message specific to the incoming call's extension, e.g. "Welcome to  
Foo Bar, Inc, please hold." These files are not stored where Asterisk  
can get to them and they are in a proprietary format. We have like  
4000 of these, so re-recording isn't an option either.

I figured I could modify app_queue to dial this number and and wait  
until that message is done (the other system hangs up) and then go to  
MoH. This works synchronously, e.g. I have to block while bridged. I  
want to be able to check for digits being pressed while in this mode  
(and do something as a result) and to abort the connection if an  
agent frees up (so they don't have to listen to the entire message if  
an agent becomes available.)

This can't be done with ast_bridge_call, AFAIK. Calling it in a  
thread dumps tons of these:

channel.c:1802 ast_waitfor_nandfds: Thread -1230656592 Blocking 'SIP/ 
normanoffice-082001b8', already blocked by thread -1230656592 in  
procedure ast_waitfor_nandfds

I assume one can't monitor a channel from two threads.

What's the best way to handle something like this? I looked inside  
app_meetme, and there is a LOT of code there to do what is  
conceptually very simple. Something like ast_moh_start that takes  
another channel instead of a music channel, and streams that channel  
much like MoH would be slick.

Thanks!
Norman

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20070226/3cc4aac2/attachment-0001.htm


More information about the asterisk-dev mailing list