[asterisk-dev] Bridging Question

Justin Newman nt_jnewman at yahoo.com
Fri Apr 11 12:11:09 CDT 2008


There are several ways to do this, depending upon your constraints. Here are a couple possible solutions:

1) Format Driver (format_sipcall)- Write a format driver similar to format_wav. No need to bridge; just copy over portions for app_dial.c for open, and connect up the read/write functions. You can use in MOH, Playback, Background, etc. apps...many places where recordings are used. To configure, you could use the class, dummy files, or config.

2) Dialer (app_mohdial) - Write a app which dials out, checks for dtmf, and pumps frames. This is fairly simple as well. You only need to copy a small piece from app_dial.c and ast_bridge_call in res_features.c. You can run this app from the dial plan or call it directly (pbx_findapp) in app_queue.

I'd be happy to write either for a small trade.

Justin Newman

------------------------------

Date: Thu, 22 Mar 2007 19:15:07 -0400
From: Norman Franke <norman at myasd.com>
Subject: [asterisk-dev] Bridging Question

(I didn't hear anything on this, so I'll try again.)


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

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20080411/3f707d95/attachment.htm 


More information about the asterisk-dev mailing list