[Asterisk-Users] Hangups after voicemail

Christian Hecimovic checimovic at qworks.ca
Wed Sep 17 10:29:12 MST 2003


Hi Wade,

If you scroll down a bit, you'll see my incoming context from extensions.conf. 
It has exactly that: a 15 second timeout. I guess I could just shorten this 
to, say, 10 seconds or something, but when you only have two lines, tying one 
up for any longer than necessary is undesireable. 

Basically, I want to beat the loop start hangup detection problem with a bit 
of logic. When someone has finished leaving voicemail, say, and they haven't 
pressed #, then I'm 99% certain they've hung up. That sort of thing. That's 
what I've done with my little code modification. 

On Wednesday 17 September 2003 09:58, Wade J. Weppler wrote:
> You can still use timeouts.  The responsetimeout would only be active in
> the main menu.  If they don't respond within the timeout, then hangup on
> them.
>
> The alternative is to loop the menu a set number of times before hanging
> up.  This would require some logic.
>
> -wade
>
> > -----Original Message-----
> > From: Christian Hecimovic [mailto:checimovic at qworks.ca]
> > Sent: Wednesday, September 17, 2003 12:41 PM
> > To: asterisk-users at lists.digium.com
> > Subject: Re: [Asterisk-Users] Hangups after voicemail
> >
> > Yes, I had to set it high, otherwise it didn't work right...I'll
>
> fiddle
>
> > with
> > it a bit.
> >
> > Timeouts aren't really an option, because if the caller presses #
>
> after
>
> > leaving a voicemail then they should be popped back into the main
>
> menu. If
>
> > I
> > could check DTMF signals from extensions.conf, then this would indeed
> > work.
> > Basically, the logic after Voicemail2 exits should be
> >
> > if (last key was not # and the channel is still alive)
> >     hangup
> > else
> >     goto the main menu
> >
> > The only way I could do this was by modifying voicemail2.c. So, back
>
> to my
>
> > main question: are there any problems with this? I'm most concerned
>
> about
>
> > memory issues. Should I be freeing something first, making another
>
> cleanup
>
> > function call, etc.?
> >
> > On Wednesday 17 September 2003 09:08, Wade J. Weppler wrote:
> > > Silencethreshold of 256 sounds a bit high...
> > >
> > > You can also add a timeout extension to just hangup the line:
> > >
> > > exten => t,1,Hangup
> > >
> > > Without using Kewlstart, there isn't anyway for Asterisk to know
>
> that
>
> > > the line has been disconnected, so you'll have to use the timeouts.
> > >
> > > -wade
> > >
> > > > -----Original Message-----
> > > > From: Christian Hecimovic [mailto:checimovic at qworks.ca]
> > > > Sent: Wednesday, September 17, 2003 11:59 AM
> > > > To: asterisk-users at lists.digium.com
> > > > Subject: Re: [Asterisk-Users] Hangups after voicemail
> > > >
> > > > Hi Martin,
> > > >
> > > > Yes, silence detection in voicemail is working. I am using
>
> Voicemail2
>
> > > with
> > >
> > > > the
> > > > silencethreshold set to 256. However, the line doesn't hang up
>
> after
>
> > > the
> > >
> > > > silence is detected; instead, Voicemail2 exits after recording the
> > > > voicemail
> > > > correctly, and Asterisk loops back into the main menu as if the #
>
> key
>
> > > was
> > >
> > > > pressed because the channel is still alive. Then it times out
>
> after 15
>
> > > > seconds, as you can see below.
> > > >
> > > > From extensions.conf:
> > > >
> > > > [incoming]
> > > > exten => s,1,Answer
> > > > exten => s,2,DigitTimeout,5
> > > > exten => s,3,ResponseTimeout,10
> > > > exten => s,4,BackGround(corp_greeting)
> > > > include => locals
> > > > include => errors
> > > >
> > > > The locals context consists of macros which look like this:
> > > >
> > > > exten => s,1,Playback(transfer,skip)
> > > > exten => s,2,Dial(${ARG2},20)
> > > > exten => s,3,Voicemail2(u${ARG1})
> > > > exten => s,4,Goto(incoming,s,1)
> > > > exten => s,103,Voicemail2(b${ARG1})
> > > > exten => s,104,Goto(incoming,s,1)
> > > >
> > > > So after a voicemail is left, there is a Goto back into the
>
> incoming
>
> > > > context.
> > > > It all works great, except for when the line gets tied up by the
> > > > DigitTimeout
> > > > and ResponseTimeout bits when hangups aren't detected.
> > > >
> > > > I've tried using BUSYDETECT_MARTIN with busydetect=yes and it
>
> didn't
>
> > > work.
> > >
> > > > The
> > > > channel stays up after the outside caller hangs up.
> > > >
> > > > Since all of our inside phones are SIP lines, there is no problem
> > > > detecting
> > > > hangups when a voice conversation is taking place, since Asterisk
> > > > obviously
> > > > detects SIP hangups correctly whether it's SIP to SIP or SIP to
> > >
> > > outside
> > >
> > > > line.
> > > > The problem is really only when outside callers leave voicemail.
> > > >
> > > > Thanks,
> > > >
> > > > Chris
> > > >
> > > > On Wednesday 17 September 2003 08:09, Martin Pycko wrote:
> > > > > Do you have silence in the channel when the remote user hangs up
>
> or
>
> > > busy
> > >
> > > > > tone ?
> > > > >
> > > > > If you have silence you can use maxsilence=x_seconds in
> > >
> > > voicemail.conf
> > >
> > > > > with
> > > > > Voicemail2 application and that will make sure the calls are
>
> hanged
>
> > > up
> > >
> > > > > after x_seconds of silence in the channel.
> > > > >
> > > > > If you have busy tone then use the busydetect=yes in
>
> zapata.conf.
>
> > > > > You can also limit the length of the voicemail message with
> > > > > maxmessage=x_seconds in the voicemail.conf
> > > > >
> > > > > regards
> > > > > Martin
> > > > >
> > > > > On Tue, 16 Sep 2003, Christian Hecimovic wrote:
> > > > > > Hi,
> > > > > >
> > > > > > Try as I might, I can't get hangups detected on a Zap channel
>
> with
>
> > > > loop
> > > >
> > > > > > start lines. So, after someone leaves a voicemail and then
>
> hangs
>
> > > up,
> > >
> > > > > > Asterisk doesn't know it, exits VoicemailMain2, and loops back
>
> to
>
> > > the
> > >
> > > > > > corporate greeting, tying up the line even though the outside
> > >
> > > caller
> > >
> > > > has
> > > >
> > > > > > hung up.
> > > > > >
> > > > > > Therefore, I've added the following hideous hack - er, code -
>
> to
>
> > > > > > voicemail2.c. It starts right after the call to
>
> play_and_record()
>
> > > in
> > >
> > > > > > leave_voicemail().
> > > > > >
> > > > > > if (res != '#' && chan != NULL && !strncmp(chan->name, "Zap",
>
> 3))
>
> > > {
> > >
> > > > > > 	/* Hang up the Zap channel only */
> > > > > > 	ast_softhangup(chan, AST_SOFTHANGUP_EXPLICIT);
> > > > > > }
> > > > > >
> > > > > > Obviously, it hangs up the channel after the voicemail has
>
> been
>
> > > > recorded,
> > > >
> > > > > > if the # key wasn't pressed, if the channel still exists, and
>
> if
>
> > > it's
> > >
> > > > a
> > > >
> > > > > > Zap channel. I couldn't see a way to do this with AGI.
> > > > > >
> > > > > > Question: is this safe? I used a soft hangup because the
>
> channel
>
> > > is
> > >
> > > > > > controlled by another thread. I also modified channel.c so
>
> that
>
> > > > > > ast_channel_free() sets chan to NULL after it's freed, just in
> > >
> > > case.
> > >
> > > > Is
> > > >
> > > > > > there anything else I should be aware of? The code seems to
>
> work
>
> > > in my
> > >
> > > > > > testing, resulting in a proper hangup right after the
>
> voicemail
>
> > > has
> > >
> > > > been
> > > >
> > > > > > recorded. I'm not up on my Asterisk internals, so I'm not
>
> totally
>
> > > > > > confident about this.
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Chris
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > Asterisk-Users mailing list
> > > > > > Asterisk-Users at lists.digium.com
> > > > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > > >
> > > > > _______________________________________________
> > > > > Asterisk-Users mailing list
> > > > > Asterisk-Users at lists.digium.com
> > > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > >
> > > > _______________________________________________
> > > > Asterisk-Users mailing list
> > > > Asterisk-Users at lists.digium.com
> > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > >
> > > _______________________________________________
> > > Asterisk-Users mailing list
> > > Asterisk-Users at lists.digium.com
> > > http://lists.digium.com/mailman/listinfo/asterisk-users
> >
> > _______________________________________________
> > Asterisk-Users mailing list
> > Asterisk-Users at lists.digium.com
> > http://lists.digium.com/mailman/listinfo/asterisk-users
>
> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users




More information about the asterisk-users mailing list