[asterisk-users] Find me macro - calling multiple people to get a hold of one

Wiebe Cazemier wiebe at halfgaar.net
Fri Nov 6 10:16:18 CST 2015

----- Original Message -----
> From: "Wiebe Cazemier" <wiebe at halfgaar.net>
> To: "Asterisk Users Mailing List - Non-Commercial Discussion" <asterisk-users at lists.digium.com>
> Sent: Friday, 6 November, 2015 10:54:48 AM
> Subject: Re: [asterisk-users] Find me macro - calling multiple people to get a	hold of one
> It appears that [1] lucked out in that it may sometimes work. WaitExten()
> doesn't work in a macro and has no option to supply the context it runs in.
> The '1' extension defined there is never called.
> You can use Background() instead, but you have to play something that is long
> enough so people have time to press a button; then you don't need
> WaitExten(). Background() has documented behavior with regards to macros. It
> calls extensions in the calling context, except if you give the context as
> option:
>   exten =>
>   s,n,Background(emergency&lines-complaining-customers&press-1&press-1&press-1&press-1&press-1&press-1&press-1,,,macro-screen)
> But then still, more problems. The 1 and 4 extensions work, but 2 doesn't; it
> hangs up. I really don't get that.
> =====================================
>   exten => 1,1,Verbose(0,"1 pressed")
>   exten => 1,n,NoOp(Caller accepted) ; Do not set MACRO_RESULT to anything to
>   connect the caller
>   exten => 4,1,Verbose(0,"4 pressed")
>   exten => 4,n,NoOp(Caller accepted) ; Do not set MACRO_RESULT to anything to
>   connect the caller
>   ; This doesn't seem to work. It goes to hangup, in the default context
>   exten => 2,1,Verbose(0,"2")
>   exten => 2,n,Set(MACRO_RESULT=CONTINUE)
> =====================================
> And I still have the problem that if I hang up instead of pressing 1, the
> caller gets connected to that disconnected line. There doesn't seem to be
> any extension I can put in my macro that responds to the hangup. Not e
> (exception), i (invalid), h (hangup), etc.
> Normally, Background() restarts the current context with the result on the
> stack. But when you hang up, it just SEEMS to return with a non-zero exit
> code, yet not continue with the 's' extension. Is it possible to make it
> continue with the dial plan?

I got it working. I set the MACRO_RESULT to CONTINUE in the start extension, and then set it to something else when I don't want to connect the caller:

WIEBE_MOBILE = 10digitnr
ANOTHER_MOBILE = 10digitnr

exten => _9999XXXXXXXXXX,1,Dial(SIP/sip2phoneprovider/${EXTEN:4},40,M(screen))
exten => _9999XXXXXXXXXX,2,Hangup

exten => s,1,Set(MACRO_RESULT=CONTINUE) ; default action -> not connecting 
exten => s,n,Wait(2)
exten => s,n,Background(emergency&lines-complaining-customers&press-1&press-1&press-1&press-1&press-1&press-1&press-1&press-1&press-1&press-1&press-1&press-1&press-1,,,macro-screen)
exten => 1,1,Verbose(0,"1 pressed")
exten => 1,n,Set(MACRO_RESULT=SANTA)

exten => s,1,Set(CALLERID(all)="Bla" <123456789>)
same  =>   n,Playback(please-wait-connect-oncall-eng)
same  =>   n,Dial(LOCAL/9999${WIEBE_MOBILE}&LOCAL/9999${ANOTHER_MOBILE})
same  =>   n,Playback(vm-nobodyavail)
exten => t,1,Playback(vm-nobodyavail)

More information about the asterisk-users mailing list