[SOLVED] Zero out of voicemail not working

I updated to the latest Asterisk and now when I try to press zero to get out of someone’s voicemail greeting to get back to the operator, the call is simply dropped.

Server Stats:
CentOS 5.5
Kernel-2.6.18-194.3.1.el5
Asterisk 1.4.32
Asterisk Add-ons 1.4.11
Dahdi Complete 2.3.0.1+2.3.0
Libpri 1.4.11.1

Extensions.conf

[zero_out]
exten => a,1,Read(NUMBER,3,3,15)
exten => a,n,Playback(pls-wait-connect-call)
exten => a,n,Goto(users,${NUMBER},1)
exten => a,n,Playback(pbx-invalid)
exten => a,n,Hangup()

exten => o,1,Playback(pls-wait-connect-call)
exten => o,n,Goto(users,111,1)
exten => o,n,Hangup()

exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(zero_out,a,1)
exten => i,n,Hangup()

exten => t,1,Goto(users,111,1)
exten => t,n,Hangup()

Voicemail.conf

[general]

; Press zero to get back to operator in VM
exitcontext = zero_out
operator = yes

Asterisk CLI when trying to zero out:

– Executing [771@users:1] Answer(“SIP/x228-00000913”, “”) in new stack
– Executing [771@users:2] Playback(“SIP/x228-00000913”, “vm-extension”) in new stack
– <SIP/x228-00000913> Playing ‘vm-extension’ (language ‘en’)
– Executing [771@users:3] Read(“SIP/x228-00000913”, “NUMBER||3||3|15”) in new stack
– Accepting a maximum of 3 digits.
– User entered ‘666’
– Executing [771@users:4] VoiceMail(“SIP/x228-00000913”, “666@default|u”) in new stack
– <SIP/x228-00000913> Playing ‘vm-theperson’ (language ‘en’)
– <SIP/x228-00000913> Playing ‘digits/6’ (language ‘en’)
– <SIP/x228-00000913> Playing ‘digits/6’ (language ‘en’)
– <SIP/x228-00000913> Playing ‘digits/6’ (language ‘en’)
– <SIP/x228-00000913> Playing ‘vm-isunavail’ (language ‘en’)
– <SIP/x228-00000913> Playing ‘transfer’ (language ‘en’)
== Spawn extension (zero_out, o, 0) exited non-zero on ‘SIP/x228-00000913’

I dailed 771 to get the direct-to-voicemail extension, enter 666 for extension, listen to the voicemail greeting and before it finishes, press zero and hear the “please wait while I try that extension” sound, then I’m disconnected. If I press star, and an extension, it will dial that extension. But zero out doesn’t work. Any advice would be helpful. Thank you.

Jason

Bump

Did you ever find a solution to this problem?

I have run into the same issue running:
Asterisk 1.6.2.8
CentOS 5.5

extensions.conf
[inside]
exten => o,1,BackGround(one-moment-please)
exten => o,n,Dial(SIP/100,30)
exten => o,n,VoiceMail(100,u)

voicemail.conf
[general]
exitcontext = inside
operator = yes

-- <SIP/siptrunk-00000257> Playing 'transfer.gsm' (language 'en')

== Spawn extension (inside, o, 0) exited non-zero on ‘SIP/siptrunk-00000257’ in macro ‘stdexten’
== Spawn extension (inside, o, 0) exited non-zero on ‘SIP/siptrunk-00000257’

Every time the caller zeros out of voicemail they get hung up on.

No I have not. I am thinking the next step will be to submit a bug report, but I notice that there is a new release of 1.4, so I will need to upgrade to that first I’m sure.

The interesting thing is that it will play the “Please Wait While I Connect Your Call” gsm, so I know that Asterisk is actually dropping down into the zero out context and jumping to the ‘o’ extention.

Jason

Hi Works as expected in 1.4.29

[code] – <SIP/1234-000002af> Playing ‘vm-isunavail’ (language ‘en’)
– <SIP/1234-000002af> Playing ‘transfer’ (language ‘en’)
– Executing [o@context:1] VoiceMailMain(“SIP/1234-000002af”, “”) in new stack
– <SIP/1234-000002af> Playing ‘vm-login’ (language ‘en’)
– Executing [h@:1]context Hangup(“SIP/1234-000002af”, “”) in new stack
== Spawn extension (context, h, 1) exited non-zero on ‘SIP/1234-000002af’
== Parsing ‘/etc/asterisk/manager.conf’: Found
== Manager ‘admin’ logged on from 127.0.0.1
== Manager ‘admin’ logged off from 127.0.0.1
IS-10800*CLI> show dialplan o@context
[ Included context ‘demo’ created by ‘pbx_config’ ]
‘o’ => 1. Voicemailmain() [pbx_config]
2. Goto(1571|1) [pbx_config]
3. Hangup() [pbx_config]

-= 1 extension (3 priorities) in 1 context. =-
[/code]

remember the o extensions must be in the context of the phone or device calling it

Ian

What exactly does this mean? Can you post a sample of your config?

My main context in my extensions.conf is [users], where all my internal extensions are. In my voicemail.conf I have the following:

[general]

; Press zero to get back to operator in VM
exitcontext = zero_out
operator = yes

In extensions.conf, I have an extension called [zero-out], which is supposed to be the exit context, correct? Mine looks like:

[zero_out]
exten => a,1,Read(NUMBER,3,3,15)
exten => a,n,Playback(pls-wait-connect-call)
exten => a,n,Goto(users,${NUMBER},1)
exten => a,n,Playback(pbx-invalid)
exten => a,n,Hangup()

exten => o,1,Playback(pls-wait-connect-call)
exten => o,n,Goto(users,111,1)
exten => o,n,Hangup()

exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(zero_out,a,1)
exten => i,n,Hangup()

exten => t,1,Goto(users,111,1)
exten => t,n,Hangup()

If a user presses star while in voicemail, they are taken to the ‘a’ extension under [zero-out], that all works fine. If they press 0 they are taken to the ‘o’ context and it will actually play the ‘pls-wait-connect-call’ gsm, but then disconnects. I tried placing the ‘o’ extension in [users] and [incoming] because these are the contexts that calls originate from (and even my macro) and still no love.

Also, I will say that this all worked before I upgraded to 1.4.32. So my guess is it is now broken.

Jason

Hi

basicly you must include [zero_out] in the [users] context,

Its working as expected in 1.4.29 and 1.4.33 so unless you are very unlucky and its broke in 1.4.32 I think its because you havent got your includes corrrect

Well, I guess I’m just very unlucky!

I added:

include = zero_out

to all the necessary contexts (which I don’t remember doing before, and zeroing out of voicemail worked fine before the upgrade to 1.4.32) and still no joy. I just downloaded the lastest version of Asterisk 1.4 (which is 1.4.33.1). So I will try that and report back.

Thank you,

Jason

PS:

Also, here is output from CLI in case this helps.

[code]trumpetvine*CLI> dialplan show o@zero_out
[ Context ‘zero_out’ created by ‘pbx_config’ ]
‘o’ => 1. Playback(pls-wait-connect-call) [pbx_config]
2. Goto(users|111|1) [pbx_config]
3. Hangup() [pbx_config]

-= 1 extension (3 priorities) in 1 context. =-
[/code]

what does

show dialplan o@users

have tp say ?

I get the following:

trumpetvine*CLI> dialplan show o@users There is no existence of o@users extension

But…if I add:

include => zero_out

to my [users] context and then run dialplan show o@users I get the following:

trumpetvine*CLI> dialplan show o@users [ Included context 'zero_out' created by 'pbx_config' ] 'o' => 1. Playback(pls-wait-connect-call) [pbx_config] 2. Goto(users|111|1) [pbx_config] 3. Hangup() [pbx_config] trumpetvine*CLI> -= 1 extension (3 priorities) in 1 context. =-

But, that still doesn’t solve my issue. I still get dropped and see the following message in the CLI:

-- <SIP/x228-000011c2> Playing 'transfer' (language 'en')

== Spawn extension (zero_out, o, 0) exited non-zero on ‘SIP/x228-000011c2’

Notice Spawn extension (zero_out,o,0), should that not read, (zero_out,o,1)? There is no zero priority in the zero_out extension.

Jason

can you check your features.conf and check is 0 is not defined there ?

Ian

I have the same issues going on with Asterisk 1.6.2.8

extensions.conf

[inside] exten => o,1,BackGround(one-moment-please) exten => o,n,Dial(SIP/100,30) exten => o,n,VoiceMail(100,u)

voicemail.conf

[general] exitcontext = inside operator = yes

features.conf

[general]
parkext => 700
parkpos => 701-720
context => parkedcalls
parkingtime => 180
transferdigittimeout => 8  
courtesytone = beep
pickupexten = *8     [/code]

[code]pbx*CLI> dialplan show o@inside
[ Context 'inside' created by 'pbx_config' ]
  'o' =>            1. BackGround(one-moment-please)              [pbx_config]
                    2. Dial(SIP/100,30)                           [pbx_config]
                    3. VoiceMail(100,u)                           [pbx_config]

-= 1 extension (3 priorities) in 1 context. =-

When a call is placed and the caller tries to zero out.

-- Accepting call from 'xxxxxxxxxx' to 'yyyyyyyyyy' on channel 0/2, span 1 -- Executing [yyyyyyyyyy@incoming:1] Set("DAHDI/2-1", "CDR(userfield)=yyyyyyyyyy") in new stack -- Executing [yyyyyyyyyy@incoming:2] GotoIf("DAHDI/2-1", "0?blacklist,1") in new stack -- Executing [yyyyyyyyyy@incoming:3] SIPAddHeader("DAHDI/2-1", "Alert-Info:EXTERNAL") in new stack -- Executing [yyyyyyyyyy@incoming:4] Goto("DAHDI/2-1", "inside,199,1") in new stack -- Goto (inside,199,1) -- Executing [199@inside:1] Macro("DAHDI/2-1", "stdexten,199,SIP/199") in new stack -- Executing [s@macro-stdexten:1] GotoIf("DAHDI/2-1", "0?s,2:s,3") in new stack -- Goto (macro-stdexten,s,3) -- Executing [s@macro-stdexten:3] Dial("DAHDI/2-1", "SIP/199,18,t") in new stack == Using SIP RTP CoS mark 5 -- Called 199 -- SIP/199-000002d3 is ringing -- SIP/199-000002d3 is busy == Everyone is busy/congested at this time (1:1/0/0) -- Executing [s@macro-stdexten:4] GotoIf("DAHDI/2-1", "0?s,5:s,6") in new stack -- Goto (macro-stdexten,s,6) -- Executing [s@macro-stdexten:6] VoiceMail("DAHDI/2-1", "199,u") in new stack -- <DAHDI/2-1> Playing 'vm-theperson.gsm' (language 'en') -- <DAHDI/2-1> Playing 'digits/1.gsm' (language 'en') -- <DAHDI/2-1> Playing 'digits/9.gsm' (language 'en') -- <DAHDI/2-1> Playing 'digits/9.gsm' (language 'en') -- <DAHDI/2-1> Playing 'vm-isunavail.gsm' (language 'en') -- <DAHDI/2-1> Playing 'vm-intro.gsm' (language 'en') -- <DAHDI/2-1> Playing 'transfer.gsm' (language 'en') == Spawn extension (inside, o, 0) exited non-zero on 'DAHDI/2-1' in macro 'stdexten' == Spawn extension (inside, o, 0) exited non-zero on 'DAHDI/2-1' -- Hungup 'DAHDI/2-1'

My features.conf file contained the following:

[featuremap] ;blindxfer => #1 ; Blind transfer (default is #) disconnect => *0 ; Disconnect (default is *)

I’m not sure why you need a way to disconnect with a keystroke, but anyway, I ended up commenting disconnect out and now I have

[featuremap] ;blindxfer => #1 ; Blind transfer (default is #) ;disconnect => *0 ; Disconnect (default is *)

I did a reload and test, still nothing. I get disconnected when I hit zero. Now remember, using * and any extension works to get callers out of voicemail becasuse the ‘a’ extension seems to work fine.

exten => a,1,Read(NUMBER,,3,,3,15) exten => a,n,Playback(pls-wait-connect-call) exten => a,n,Goto(users,${NUMBER},1) exten => a,n,Playback(pbx-invalid) exten => a,n,Hangup()

I currently tell users to tell their callers (in their voicemail greeting) to hit * then the operators extension or * zero to reach the operator. While this works fine, it is not what people are used to using. Just being able to hit zero is more convenient. And what is frustrating, all of this worked fine until I updated Asterisk.

I won’t get a chance to update Asterisk until users go home for the day, since this is a production server, but I will update to 1.4.33.1 and report back.

Thank you,
Jason

I update my Asterisk server for the latest and greatest, 1.4.33.1 and it solved my issues with Zero Out of voicemail. Thanks for all your suggestions and help with this.

Jason Baker

simple:

edit voicemail.conf

set operator=yes
For some reason it now defaults to no.

If you’ll notice in my original post, operator was set to yes in voicemail.conf. The problem was actually a bug in the version of Asterisk that I was using, upgrading solved it. Thanks for the reply.

Jason