[Asterisk-Users] Digit detect during a Background() inside a Macro wrongly jumps b ack to the calling context to match digits?

Kris Boutilier Kris.Boutilier at scrd.bc.ca
Fri Aug 27 01:28:25 MST 2004


Consider this dialplan fragment, where the call is being dialed into
[macro-process-routing] over an iax2 channel from another (same build)
Asterisk server:


	[macro-process-routing]
	; This is the entrypoint of the debug call but is also refered to by
Macro(process-routing) elsewhere in the dialplan

	; XXX-NNN-6800
	exten => _6800,1,Macro(6800-interceptor)

	; This is matched when 8 is dialed during macro-6800-interceptor,s,4
	exten => _8,1,Playback(welcome)	
	exten => _8,2,Hangup


	[macro-6800-interceptor]
	exten => s,1,DigitTimeout,2
	exten => s,2,ResponseTimeout,7
	exten => s,3,Answer
	exten => s,4,Background(autoattendant-ivr/grtg-6)
; Play full after-hours greeting

	exten => t,1,Goto(s,1)
	exten => i,1,Goto(s,1)

	; However, this is never be matched if 8 is dialed during (s,4)
above
	exten => _8,1,Playback(typhoon)
	exten => _8,2,Hangup


So, why does the DTMF detect jump out to [macro-process-routing] instead of
staying within [macro-6800-interceptor]? The output of '-vvv' during the
event (with macro-process-routing,_8 removed) goes something like:

    -- Accepting AUTHENTICATED call from 10.0.40.140, requested format = 2,
actual format = 2
    -- Executing Answer("IAX2/astpbx-woodbay at astpbx-wharfrd/1", "") in new
stack
    -- Executing Macro("IAX2/astpbx-woodbay at astpbx-wharfrd/1",
"6800-interceptor") in new stack
    -- Executing DigitTimeout("IAX2/astpbx-woodbay at astpbx-wharfrd/1", "2")
in new stack
    -- Set Digit Timeout to 2
    -- Executing ResponseTimeout("IAX2/astpbx-woodbay at astpbx-wharfrd/1",
"7") in new stack
    -- Set Response Timeout to 7
    -- Executing Answer("IAX2/astpbx-woodbay at astpbx-wharfrd/1", "") in new
stack
    -- Executing BackGround("IAX2/astpbx-woodbay at astpbx-wharfrd/1",
"autoattendant-ivr/grtg-6") in new stack
Aug 27 01:13:06 DEBUG[68621]: channel.c:1101 ast_settimeout: Scheduling
timer at 160 sample intervals
    -- Playing 'autoattendant-ivr/grtg-6' (language 'en')
Aug 27 01:13:06 DEBUG[7175]: chan_iax2.c:5156 socket_read: Ooh, voice format
changed to 2
Aug 27 01:13:09 DEBUG[68621]: channel.c:1101 ast_settimeout: Scheduling
timer at 0 sample intervals
Aug 27 01:13:09 DEBUG[68621]: app_macro.c:145 macro_exec: Oooh, got
something to jump out with ('8')!
Aug 27 01:13:09 DEBUG[68621]: pbx.c:1811 ast_pbx_run: Oooh, got something to
jump out with ('8')!
Aug 27 01:13:10 WARNING[68621]: pbx.c:1913 ast_pbx_run: Invalid extension
'8', but no rule 'i' in context 'macro-process-routing'
Aug 27 01:13:10 DEBUG[68621]: chan_iax2.c:2335 iax2_hangup: We're hanging up
IAX2/astpbx-woodbay at astpbx-wharfrd/1 now...
    -- Hungup 'IAX2/astpbx-woodbay at astpbx-wharfrd/1'

Bug, feature or other suggestions? Build is 'Asterisk
CVS-HEAD-08/13/04-10:37:13'

Kris Boutilier
Information Systems Coordinator
Sunshine Coast Regional District




More information about the asterisk-users mailing list