[Asterisk-Users] Hangups after voicemail
Christian Hecimovic
checimovic at qworks.ca
Tue Sep 16 16:47:35 MST 2003
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
More information about the asterisk-users
mailing list