[Asterisk-Users] Hangups after voicemail

Christian Hecimovic checimovic at qworks.ca
Wed Sep 17 09:40:38 MST 2003


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




More information about the asterisk-users mailing list