[asterisk-dev] Asterisk Bounty: Additional Dial | L options

Stephan A. Edelman sedelman at newace.com
Thu Jul 6 19:55:04 MST 2006


Hello,

The internal variable chan->_softhangup is set to AST_SOFTHANGUP_TIMEOUT
when the timeout in Dial() elapses (see ast_check_hangup() code snippet
below).

This causes Asterisk to jump to the "T" extension in your dialplan (see
ast_pbx_run() code snippet below). 

In my estimation, you should simply create a "T" extension in the
context where the Dial is executed and you should be able to catch when
the timeout occurs.

I haven't tried this, but it seems reasonable. YMMV.

Regards,

Stephan.

int ast_check_hangup(struct ast_channel *chan)
{
        time_t  myt;

        /* if soft hangup flag, return true */
        if (chan->_softhangup)
                return 1;
        /* if no technology private data, return true */
        if (!chan->tech_pvt)
                return 1;
        /* if no hangup scheduled, just return here */
        if (!chan->whentohangup)
                return 0;
        time(&myt); /* get current time */
        /* return, if not yet */
        if (chan->whentohangup > myt)
                return 0;
        chan->_softhangup |= AST_SOFTHANGUP_TIMEOUT;
        return 1;
}

ast_pbx_run():

...
if ((c->_softhangup == AST_SOFTHANGUP_TIMEOUT) &&
(ast_exists_extension(c,c->context,"T",1,c->cid.cid_num))
...

--
Stephan A. Edelman, B.Eng.
NewAce Corporation
Toll Free: 1-877-463-9223 x221
International: +1 519 336 4837 x221 (Outside US & Canada)
Fax: +1 519 336 4046
Cell: +1 519 346 1581


-----Original Message-----
From: asterisk-dev-bounces at lists.digium.com
[mailto:asterisk-dev-bounces at lists.digium.com] On Behalf Of
webmaster at 5nf.net
Sent: Thursday, July 06, 2006 5:56 PM
To: asterisk-dev at lists.digium.com
Subject: [asterisk-dev] Asterisk Bounty: Additional Dial | L options

Greetings all,

I'm offering a bounty of US$100 for what (as far as I know) should be a
simple addition to asterisk.  I've also posted this at
http://www.voip-info.org/wiki/view/Asterisk+bounty+Call+Limit+Exit+Optio
ns
:

Currently five variables are recognized by the "L" (call limit) option
in
the Dial application. These variables are used for playing back sound
files to the callers to notify them that their call has begun or is
going
to end.

I would like asterisk to recognize two more variables to specify the
"exit
locations" for each channel if the time limit expires.  In other words,
I
would like to be able to specify where in the dialplan the call should
go
specifically if time runs out.  This way we can distinguish in the
dialplan between a caller/callee who exited because the other line hung
up, or using a DTMF exit, and one whose call was ended because (s)he ran
out of time.

I don't care what the variables are called. Something like
LIMIT_EXIT_CALLER and LIMIT_EXIT_CALLEE seems apropos, given the naming
convention of the existing LIMIT variables. The variables can always be
of
the form "context,extension,priority" or "context|extension|priority" if
necessary to avoid ambiguity.  If we want to make context and extension
sequentially optional (like the Goto command) that's okay with me too.
If
the variable is not set or does not match a valid form (or maybe if it's
set to 0?), asterisk handles the channel the same way it does now.

There may be technical or pragmatic considerations that I've overlooked.

Feel free to e-mail me with such criticism (or with any questions, or if
there's already a way to do this and I just don't know it, or if $100 is
woefully inadequate for this feature, or if you have a patch for me to
try, or anything else pertinent).

Thanks for your time!

Jason Burbage
webmaster at 5nf.net

_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev






More information about the asterisk-dev mailing list