[Home]

Summary:ASTERISK-11676: Read() does not work using 1.6b4 / 1.6b5
Reporter:ciaran (ciaran)Labels:
Date Opened:2008-03-18 13:12:46Date Closed:2011-06-07 14:03:10
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Applications/app_read
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:Using Asterisk 1.6 Beta 4 and 5, my dialplan breaks completely because Read() becomes completely worthless, the app executes, but it plays back no sound and it does not record any keypresses. However, it does time out.


I have attached a copy of my dialplan in extensions.conf (btw, it's my first dial plan so if i have done something really dumb(tm), I would appreciate some feedback :d)

****** ADDITIONAL INFORMATION ******


[globals]
OUTBOUNDTRUNK = Zap/g1

; Shiny voice menu
[old-from-zaptel]
exten => s,1,Zapateller(nocallerid)
exten => s,n,Answer()
exten => s,n,Wait(1)
exten => s,n,Goto(from-menu,2000,1)

[from-zaptel]
exten => s,1,Zapateller(nocallerid)
exten => s,n,Set(CHANNEL(language)=es)
exten => s,n,Answer()
exten => s,n,Wait(2)
;exten => s,n,Goto(from-menu,${EXTEN},1)
exten => s,n,Read(xtn|entrada|4|1|15)
exten => s,n,Playback(auth-thankyou)
exten => s,n,Goto(handleMenu,${xtn},1,)

; Handle menu behaviour:
[handleMenu]
; block those extensions that -don't- get direct access:
exten => 2006,1,Goto(from-menu,2000,1)
exten => 2007,1,Goto(from-menu,2000,1)
exten => 2009,1,Goto(from-menu,2000,1)
exten => 2010,1,Goto(from-menu,2000,1)
exten => 2011,1,Goto(from-menu,2000,1)
exten => 2014,1,Goto(from-menu,2000,1)
exten => 2015,1,Goto(from-menu,2000,1)
; I hate people calling without permission
exten => 2050,1,Authenticate(8945)
exten => 2050,n,Goto(internal,2050,1)
; Now handle regular menu:
exten => 0,1,Goto(from-menu,2000,1)
exten => _2XXX,1,Goto(internal,${EXTEN},1)
exten => i,1,Goto(from-menu,2000,1)
exten => t,1,Goto(from-menu,2000,1)

; Connect menu to Assistant:
[from-menu]
exten => 2000,1,Set(CHANNEL(language)=es)
exten => 2000,2,SetMusicOnHold(native-random)
; Bug chela:
exten => 2000,3,Dial(SIP/2001&SIP/2002,40,tTk)
; No Chela, go for recepccion
exten => 2000,4,Dial(SIP/2002&SIP/2003,40,tTk)
; Go for police!
exten => 2000,5,Dial(SIP/2009,40,tTk)
; No one is available
exten => 2000,6,Playback(vm-nobodyavail)
exten => 2000,7,VoiceMailMain(2001@default)
; Go for busy handles....
exten => 2000,104,Dial(SIP/2002&SIP/2003,40,tTk)
exten => 2000,105,Dial(SIP/2001,40,tTk)
exten => 2000,106,VoiceMailMain(2001@default)
; No one is available
exten => 2000,205,Playback(vm-nobodyavail)
exten => 2000,207,VoiceMailMain(2001@default)
exten => 2000,208,Hangup()

[outbound-cellphone]
; Includes Nextel
exten => _9044NXX.,1,Answer()
exten => _9044NXX.,n,Set(CHANNEL(language)=es)
exten => _9044NXX.,n,SetMusicOnHold(native-random)
exten => _9044NXX.,n,DIAL(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _9044NXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _9044NXX.,n,Congestion()
extne => _9044NXX.,n,Hangup()
exten => _9XXXX.,1,Answer()
exten => _9XXXX.,n,Set(CHANNEL(language)=es)
exten => _9XXXX.,n,SetMusicOnHold(native-random)
exten => _9XXXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _9XXXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _9XXXX.,n,Congestion()
exten => _9XXXX.,n,Hangup()

[outbound-localplus]
; All outbounds starting with 1.
exten => _91XXX.,1,Answer()
exten => _91XXX.,n,Set(CHANNEL(language)=es)
exten => _91XXX.,n,SetMusicOnHold(native-random)
exten => _91XXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _91XXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _91XXX.,n,Congestion()
exten => _91XXX.,n,Hangup()

[outbound-local]
; Outbound, non Nextel, NON long distance!
exten => _9NXXX.,1,Answer()
exten => _9NXXX.,n,Set(CHANNEL(language)=es)
exten => _9NXXX.,n,SetMusicOnHold(native-random)
exten => _9NXXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _9NXXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _9NXXX.,n,Congestion()
exten => _9NXXX.,n,Hangup()
; 1-800
exten => _901800.,1,Answer()
exten => _901800.,n,Set(CHANNEL(language)=es)
exten => _901800.,n,SetMusicOnHold(native-random)
exten => _901800.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _901800.,n,Playback(all-outgoing-lines-unavailable)
exten => _901800.,n,Congestion()
exten => _901800.,n,Hangup()

; Bank
exten => 912262639,1,Answer()
exten => 912262639,n,Dial(${OUTBOUNDTRUNK}/12262639,50,tTK)
exten => 912262639,n,Playback(all-outgoing-lines-unavailable)
exten => 912262639,n,Congestion()
exten => 912262639,n,Hangup()

; Emergency Numbers = Moved to internal dialplan.
;exten => 080,1,Dial(${OUTBOUNDTRUNK}/080)
;exten => 060,1,Dial(${OUTBOUNDTRUNK}/060)
;exten => 020,1,Dial(${OUTBOUNDTRUNK}/020)
;exten => 040,1,Dial(${OUTBOUNDTRUNK}/040)

[outbound-long]
exten => _901NXX.,1,Set(CHANNEL(language)=es)
exten => _901NXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _901NXX.,n,SetMusicOnHold(native-random)
exten => _901NXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _901NXX.,n,Congestion()
exten => _901NXX.,n,Hangup()

[outbound-inter]
; International..
exten => _9001NXX.,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _9001NXX.,n,SetMusicOnHold(native-random)
exten => _9001NXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _9001NXX.,n,Congestion()
exten => _9001NXX.,n,Hangup()

; Internal dialplan, including test sinks
[internal]
; step one: if Extension is found, try to get the user to pickup..
exten => s,n,SIPDtmfMode(info)
exten => _2XXX,1,Answer()
exten => _2XXX,n,Set(CHANNEL(language)=es)
exten => _2XXX,n,SetMusicOnHold(native-random)
exten => _2XXX,n,Dial(SIP/${EXTEN}&IAX2/${EXTEN},40,tTkK)
; ...after 40 seconds: step two: launch voicemail
exten => _2XXX,n,Goto(notav,${EXTEN},1)
;exten => _2XXX,n,VoiceMail(${EXTEN}@default)
exten => _2XXX,n,Hangup()
; Parked extens:
exten => _7XX,1,Answer();
exten => _7XX,n,Set(CHANNEL(language)=es)
exten => _7XX,n,SetMusicOnHold(native-random)
exten => _7XX,n,Goto(parked,${EXTEN},1)

; 1500 is Voicemail:
exten => 1500,1,VoiceMailMain()
exten => 1500,n,Hangup()

; Conference rooms:
exten => 2500,1,Answer()
exten => 2500,n,Set(CHANNEL(language)=es)
exten => 2500,n,Playback(conf-peopleinconf)
exten => 2500,n,MeetMe(2500,i,123)
exten => 2500,n,Hangup()
exten => 2501,1,Answer()
exten => 2501,n,Set(CHANNEL(language)=es)
exten => 2501,n,Playback(conf-peopleinconf)
exten => 2501,n,MeetMe(2501,i,123)
exten => 2501,n,Hangup()
exten => 2502,1,Answer()
exten => 2502,n,Set(CHANNEL(language)=es)
exten => 2502,n,Playback(conf-peopleinconf)
exten => 2502,n,MeetMe(2502,i,123)
exten => 2502,n,Hangup()
exten => 2503,1,Answer()
exten => 2503,n,Set(CHANNEL(language)=es)
exten => 2503,n,Playback(conf-peopleinconf)
exten => 2503,n,MeetMe(2503,i,123)
exten => 2503,n,Hangup()
exten => 2504,1,Answer()
exten => 2504,n,Set(CHANNEL(language)=es)
exten => 2504,n,Playback(conf-peopleinconf)
exten => 2504,n,MeetMe(2504,i,123)
exten => 2504,n,Hangup()
exten => 2505,1,Answer()
exten => 2505,n,Playback(conf-peopleinconf)
exten => 2505,n,MeetMe(2505,i,123)
exten => 2505,n,Hangup()
exten => 2505,n,Set(CHANNEL(language)=es)
; Emergency numbers:
exten => 080,1,Dial(${OUTBOUNDTRUNK}/080)
exten => 060,1,Dial(${OUTBOUNDTRUNK}/060)
exten => 020,1,Dial(${OUTBOUNDTRUNK}/020)
exten => 040,1,Dial(${OUTBOUNDTRUNK}/040)

; Hell's Kitchen(tm)
exten => 666,1,Answer()
exten => 666,n,Playback(666)
exten => 666,n,Dial(SIP/2008,40,tTKK)

;;;;;;;; Test sinks ;;;;;;;;;;
; Echo
exten => 1,1,Answer()
exten => 1,2,Echo()

; Music on Hold:
exten => 2,1,Answer()
exten => 2,2,MusicOnHold(native-random)

;Say name...
exten => 4,1,Answer()
exten => 4,2,Playback(ext-or-zero)

; Monkeys!
exten => 3,1,Answer()
exten => 3,2,Playback(tt-monkeys)
exten => 3,3,Hangup()

; Test Menu:
exten => 5,1,Goto(from-zaptel,s,1)

; Test Channels:
exten => 61,1,Answer()
exten => 61,n,SayDigits(1)
exten => 61,n,Dial(Zap/2/0445554068443)

; Test sounds:
exten => 6,1,Answer()
exten => 6,n,Playback(vm-theperson)
exten => 6,n,SayDigits(${EXTEN})
exten => 6,n,Playback(T-is-not-available)
exten => 6,n,Playback(to-reach-operator)
exten => 6,n,Playback(press-0)
exten => 6,n,Playback(T-to-leave-msg)
exten => 6,n,Playback(press-1)

; Test menu
exten => 7,1,Answer()
exten => 7,n,Read(xtn|press-0|4|1|10)

[parked]
include => parkedcalls

; The person is not avail...
[notav]
exten => _X.,1,Answer()
exten => _X.,n,Playback(vm-theperson)
exten => _X.,n,SayDigits(${EXTEN})
exten => _X.,n,Playback(T-is-not-available)
exten => _X.,n,Playback(T-to-rtrn-to-main-menu)
exten => _X.,n,Playback(press-0)
exten => _X.,n,Playback(T-to-leave-msg)
exten => _X.,n,Read(option|press-1|1|1|10)
exten => _X.,n,GoToIf($["${option}"  = "0"]?from-zaptel,s,1)
exten => _X.,n,ExecIf($["${option}"  = "1"]|VoiceMail|${EXTEN}@default)

[voicemail]
exten => i,n,Set(trgt=${CUT(${exten},,2-)})
exten => i,n,SayDigits(${trgt})


[password-local]
; some people just don't learn...
exten => _9XXXX.,1,Answer()
exten => _9XXXX.,n,SayNumber(0)
exten => _9XXXX.,n,Set(CHANNEL(language)=es)
exten => _9XXXX.,n,SetMusicOnHold(native-random)
exten => _9XXXX.,n,Authenticate(8132485217)
exten => _9XXXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _9XXXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _9XXXX.,n,Congestion()
exten => _9XXXX.,n,Hangup()

[password-national]
; ...still some people just don't learn...
exten => _901NXX.,1,Answer()
exten => _901NXX.,n,SayNumber(1)
exten => _901NXX.,n,Set(CHANNEL(language)=es)
exten => _901NXX.,n,SetMusicOnHold(native-random)
exten => _901NXX.,n,Authenticate(1896545245)
exten => _901NXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _901NXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _901NXX.,n,Congestion()
exten => _901NXX.,n,Hangup()

[password-international]
; ...STUBBORN...
exten => _900NXX.,1,Answer()
exten => _900NXX.,n,SayNumber(2)
exten => _900NXX.,n,Authenticate(1896545245)
exten => _900NXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _900NXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _900NXX.,n,Congestion()
exten => _900NXX.,n,Hangup()

[password-mobile]
; REALLY OBNIXOUSLY STUBBORN!!
exten => _9044NXX.,1,Answer()
exten => _9044NXX.,n,SayNumber(3)
exten => _9044NXX.,n,Set(CHANNEL(language)=es)
exten => _9044NXX.,n,Authenticate(2468552645)
exten => _9044NXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _9044NXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _9044NXX.,n,Congestion()
exten => _9044NXX.,n,Hangup()

exten => _9XXX.,1,Answer()
exten => _9XXX.,n,SayNumber(4)
exten => _9XXX.,n,Set(CHANNEL(language)=es)
exten => _9XXX.,n,Authenticate(2468552645)
exten => _9XXX.,n,Dial(${OUTBOUNDTRUNK}/${EXTEN:1},50,tTK)
exten => _9XXX.,n,Playback(all-outgoing-lines-unavailable)
exten => _9XXX.,n,Congestion()
exten => _9XXX.,n,Hangup()

; Monkeys!
[monkeyattack]
exten => _X.,1,Answer()
exten => _X.,n,Playback(tt-monkeys)
exten => _X.,n,Congestion()
exten => _X.,n,Hangup()

; Free World Dialup
[iaxFWD]
exten => _8.,1,SetCallerID("Rasheek")
exten => _8.,2,Dial(IAX2/896043:$alphaomega@iax2.fwdnet.net/${EXTEN:1},60,rtT)
exten => _8.,3,Congestion

; Glue everything together into nice dialplans:

[mortal]
include => internal
include => monkeyattack

[stubborn-mortal]
include => internal
include => password-local
include => password-international
include => monkeyattack

[stubborn-acolyte]
include => internal
include => outbound-local
include => password-national
include => password-local
include => password-international
include => monkeyattack

[chained-acolyte]
include => internal
include => outbound-local
include => password-international
include => password-national
include => password-mobile
include => monkeyattack

[acolyte]
include => internal
include => outbound-local
include => monkeyattack

[god]
include => internal
include => iaxFWD
include => outbound-local
include => outbound-long
include => outbound-cellphone
include => outbound-inter
include => outbound-localplus
include => monkeyattack

[priest]
include => internal
include => outbound-local
include => outbound-cellphone
include => monkeyattack

[cleric]
include => internal
include => outbound-local
include => outbound-long
include => monkeyattack

[asterisk_guitools]
exten = executecommand,1,System(${command})
exten = executecommand,n,Hangup()
exten = record_vmenu,1,Answer
exten = record_vmenu,n,Playback(vm-intro)
exten = record_vmenu,n,Record(${var1})
exten = record_vmenu,n,Playback(vm-saved)
exten = record_vmenu,n,Playback(vm-goodbye)
exten = record_vmenu,n,Hangup
exten = play_file,1,Answer
exten = play_file,n,Playback(${var1})
exten = play_file,n,Hangup
hasbeensetup = Y

[fromiaxfwd]
exten => 896043,1,Dial(SIP/2050,40,rtT)
exten => 896043,2,Voicemail,VoiceMail(2050@default)
Comments:By: Jason Parker (jparker) 2008-03-18 13:21:48

This issue has already been fixed, and is in the 1.6.0-beta6 release that was just made this morning.

This is a result of using languageprefix=yes.

Closing.

By: Jason Parker (jparker) 2008-03-18 13:25:28

Reopening.  I was wrong.

By: Jason Parker (jparker) 2008-03-18 13:34:01

Okay, I was wrong about the cause, but I was able to reproduce this...

However, this is a configuration issue.  | is no longer a valid argument separator in 1.6.  You must use , now.

Please read UPGRADE.txt in the top of your source tree.

By: Jason Parker (jparker) 2008-03-18 13:35:03

Also, Read() takes one more argument than you're specifying.  You need an extra comma to skip the options argument.