[Asterisk-Users] Hangups after voicemail
Wade J. Weppler
weppler at wwworks-inc.com
Wed Sep 17 09:58:09 MST 2003
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
More information about the asterisk-users
mailing list