Summary:ASTERISK-03002: [patch + bug] Pressing "0" during voicemail review kicks user out.
Reporter:a (cyberdjheffer)Labels:
Date Opened:2004-12-15 11:45:15.000-0600Date Closed:2008-01-15 15:19:53.000-0600
Versions:Frequency of
Environment:Attachments:( 0) app_voicemail.diff.txt
( 1) app_voicemailA.diff.txt
( 2) vm-saveoper.gsm
( 3) voicemail-oper-save.txt
Description:     After a user has pressed the pound sign after finishing a voicemail message, pressing the "0" key will delete their message automatically and take them out of voicemail.  Options "1", "2", or "3" will perform as required for accepting the message, listening to the message again, and rerecording the message, respectively.  When "4", "5", "6", "7", "8", "9", "*", or "#" are pressed, the user will hear a message back saying that the system didn't understand their response.
    I think that the code handling the "0" key for the operator= option is mishandling "0" key presses.  Even when operator= is set to "on", a user that tries to talk to an operator after recording a voicemail message gets that message automatically deleted.  An option should exist to allow the user to choose whether or not to have their voicemail message saved before being connected to the operator.


Fedora Core 2 operating system used.


Comments:By: Mark Spencer (markster) 2004-12-15 15:27:53.000-0600

Obviously not major,  please read the bug guidelines in the future before placing further bugs.

By: Clod Patry (junky) 2004-12-16 22:12:34.000-0600

can ya provide more data of ur voicemail.conf file please?
and CLI's output + debug would help too.

By: Brian West (bkw918) 2004-12-17 00:03:02.000-0600

This sounds like a config issue to me.


By: Mark Spencer (markster) 2004-12-17 03:21:00.000-0600

It's a behavioral issue.  Essentially, here's the story:

Suppose you call me, and it starts recording the voicemail, but you decide you want the operator, so you press "0" for operator.  That will delete the voicemail you're leaving.  The bug placer feels this is a bug (in fact, they apparently felt it was a MAJOR bug) that it does not give them the option to save their message before going to the operator.

So, in reality, this is a feature request that you be given the option to save your message if you use "0" while leaving a message.

By: brian22942 (brian22942) 2004-12-17 23:11:25.000-0600

I have uploaded a quick hack to help solve his problem. It will probably interfere with the current setup so let me know what I need to improve it. I'm open to any criticisms as this is my first patch to Asterisk.

I added a new function called record_vm which is called from leave_vm. This patch does not yet confirm if the user wants it to be saved. It will save it automatically then transfer to the operator.

Please see app_voicemailA.diff.txt for the correct patch. Sorry.

FYI: I faxed my disclaimer this morning.

edited on: 12-18-04 07:25

By: () 2004-12-28 07:53:10.000-0600

cyberdjheffer: Does this work for you? I can change it if you wish.

By: () 2004-12-28 07:53:25.000-0600

cyberdjheffer: Does this work for you? I can change it if you wish.

By: a (cyberdjheffer) 2004-12-28 09:59:23.000-0600

What is the correct way to patch app_voicemail.c?  I try:

patch -p0 <app_voicemailA.diff.txt

and I get back prompts that say "reverse patch detected".  The voicemail program never compiles after that.

By: Serge Vecher (serge-v) 2004-12-28 14:26:09.000-0600

cyberdjheffer, do you have option operator=yes in voicemail.conf? In that case, this is expected and documented behavior; you will also need to define an "o" extension in extensions.conf to trap this event. Otherwise the call will fall through. Here is how I define "o" extension on my system:

exten => o,1,Macro(stdexten,100,${OPERATOR})

Might be worth looking into,


By: a (cyberdjheffer) 2004-12-28 19:21:02.000-0600

This is what I have in extensions.conf to handle an operator.  I had to put the "0" in there to handle if someone picks a phone to dial the operator.  The "o" works with the voicemail system.  Either way, a voicemail that just got left gets deleted when "0" gets pressed.  operator=yes is on in voicemail.conf.

;operator dialing
exten => 0,1,Playback(dialing-operator-now)
exten => 0,2,Goto(inbound-analog,s,5)
exten => o,1,Playback(dialing-operator-now)
exten => o,2,Goto(inbound-analog,s,5)

By: twisted (twisted) 2004-12-31 00:23:12.000-0600

I believe you will find my patch to solve your issue with the way this is handled. Please comment. (voicemail-oper-save-option.diff.txt & vm-saveoper.gsm)

Disclaimer on file.  Tested, works 100% with current cvs head as of 12/31/04 @ 12:23 pm CST

edited on: 12-31-04 00:23

edited on: 12-31-04 00:23

By: () 2004-12-31 08:35:04.000-0600

I tested it and it works fine for me.

By: twisted (twisted) 2004-12-31 15:56:31.000-0600

Maybe I should elaborate on what it actually does (teehee):

When a user his # after finishing a message, and then hits 0 to reach an operator, they get a prompt that says "press 1 to accept this message, otherwise, please continue to hold".  If they hit one, they hear "message saved", then the app drops the caller to the 'o' extension as normal, and saves the message.   If they do not hit 1 within 3 seconds, they hear "message deleted", and then are dropped to the 'o' extension.

simple fix to a simple problem ;)

By: a (cyberdjheffer) 2004-12-31 17:54:09.000-0600

I applied the voicemail-oper-save-option.diff.txt patch to today's CVS version of app_voicemail.c.  Asterisk did compile successfully.  When I went to test the operator/voicemail function, I found that a voicemail message left to an extension does get saved or deleted as per the new patch, but transfer to the operator doesn't happen after that.  Do I have something misconfigured?  Sample config file text is below:

from extensions.conf

;operator dialing
exten => 0,1,Playback(dialing-operator-now)
exten => 0,2,Goto(inbound-analog,s,5)
exten => o,1,Playback(dialing-operator-now)
exten => o,2,Goto(inbound-analog,s,5)

from voicemail.conf



By: a (cyberdjheffer) 2004-12-31 18:35:22.000-0600

I also found out that when operator=no, pressing "0" will playback the vm-saveoper sound file and proceed with the associated options.  A "0" keypress should be ignored with operator=no.

By: twisted (twisted) 2004-12-31 18:55:50.000-0600

Yaoops.   Here ya go ;)  voicemail-oper-save.txt

By: a (cyberdjheffer) 2004-12-31 19:53:05.000-0600

With operator=yes, after a voicemail is recorded, pressing "0" and then "1" to accept the message will transfer to the operator, but pressing "0" and waiting on hold doesn't transfer to the operator.  Also, with operator=no, "0" keypresses are still being accepted and should be ignored.

By: twisted (twisted) 2004-12-31 21:47:17.000-0600

i fixed the hold for the operator thing, but the pressing 0 when operator isn't set to a true value is going to be a little more work, as it's been changed for flags, and i'm gonna need to dig a little deeper.   maybe in a couple days.

By: Mark Spencer (markster) 2005-01-02 19:56:15.000-0600

Fixed in CVS head.  I'm going to close this one out because i think the other 0 thing may not even be considered a bug, but if someone wants to change that behavior i'll consider it.

By: Russell Bryant (russell) 2005-01-04 23:27:50.000-0600

twisted's patch added to 1.0

By: Digium Subversion (svnbot) 2008-01-15 15:19:30.000-0600

Repository: asterisk
Revision: 4642

U   trunk/apps/app_voicemail.c
A   trunk/sounds/vm-saveoper.gsm
U   trunk/sounds.txt

r4642 | markster | 2008-01-15 15:19:30 -0600 (Tue, 15 Jan 2008) | 2 lines

Fix "0" auto deleting messages from voicemail (bug ASTERISK-3002)



By: Digium Subversion (svnbot) 2008-01-15 15:19:53.000-0600

Repository: asterisk
Revision: 4668

U   branches/v1-0/apps/app_voicemail.c
U   branches/v1-0/sounds/vm-saveoper.gsm
U   branches/v1-0/sounds.txt

r4668 | russell | 2008-01-15 15:19:53 -0600 (Tue, 15 Jan 2008) | 2 lines

Add option to save a file after pressing '0' to go to the operator (bug ASTERISK-3002)