[Asterisk-Users] Transferring a call with IAX

Douglas Garstang dgarstang at oneeighty.com
Fri Mar 24 16:37:49 MST 2006


Nope... that's not the problem here. I put a NoOp right before the MacroExit, and it didn't execute that either.

Dial returns ANSWER, and so it should execute (2),but it doesn't. This drives me insane. I have lost count of how many days I've wasted trying to get the most basic things to work in Asterisk.

exten => s,1,Dial(IAX2/pbxuser@${ARG1}/${ARG2}@${ARG3},25,wW)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-ANSWER,1,Goto(s-OK,1)
exten => s-NOANSWER,1,Goto(s-ERROR,1)
exten => s-CONGESTION,1,Goto(s-ERROR,1)
exten => s-CHANUNAVAIL,1,Goto(s-ERROR,1)
exten => s-ERROR,1,Answer()
exten => s-ERROR,2,Wait,1
exten => s-ERROR,3,Set(i=1)
exten => s-ERROR,4,While($[${i} < 4])
exten => s-ERROR,5,Playback(cannot-complete-network-error)
exten => s-ERROR,6,Playback(message-number)
exten => s-ERROR,7,Playback(letters/o)
exten => s-ERROR,8,Playback(letters/e)
exten => s-ERROR,9,Playback(digits/9)
exten => s-ERROR,10,Playback(digits/0)
exten => s-ERROR,11,Playback(digits/0)
exten => s-ERROR,12,Set(i=$[${i} + 1])
exten => s-ERROR,13,EndWhile
exten => s-ERROR,14,Hangup()
exten => s-OK,1,NoOP(CONTROL BACK INSIDE MACRO)
exten => s-OK,2,MacroExit

> -----Original Message-----
> From: Aaron Daniel [mailto:amdtech at shsu.edu]
> Sent: Friday, March 24, 2006 4:33 PM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: RE: [Asterisk-Users] Transferring a call with IAX
> 
> 
> Looking at your macro, I don't have any MacroExits in mine.  
> I use AEL, 
> and it doesn't put that on the macros.  Try changing your 
> MacroExit to a 
> NoOp(Macro Finished) and see if that drops you back into the 
> original call 
> structure.
> 
> Aaron
> 
> On Fri, 24 Mar 2006, Douglas Garstang wrote:
> 
> > Aaron, this is what I get, debug turned up and all...
> >
> > Mar 24 16:17:47 DEBUG[19475] chan_iax2.c: Immediately 
> destroying 3, having received hangup
> > Mar 24 16:17:47 DEBUG[29506] channel.c: Didn't get a frame 
> from channel: IAX2/acdserver1-3
> > Mar 24 16:17:47 DEBUG[29506] channel.c: Bridge stops 
> bridging channels SIP/2944093-20ac and IAX2/acdserver1-3
> > Mar 24 16:17:47 DEBUG[29506] chan_iax2.c: We're hanging up 
> IAX2/acdserver1-3 now...
> > Mar 24 16:17:47 DEBUG[29506] chan_iax2.c: Really destroying 
> IAX2/acdserver1-3 now...
> > Mar 24 16:17:47 VERBOSE[29506] logger.c:     -- Hungup 
> 'IAX2/acdserver1-3'
> > Mar 24 16:17:47 DEBUG[29506] app_dial.c: Exiting with 
> DIALSTATUS=ANSWER.
> > Mar 24 16:17:47 VERBOSE[29506] logger.c:   == Spawn 
> extension (macro-DialIAX, s, 1) exited non-zero on 
> 'SIP/2944093-20ac' in macro 'DialIAX'
> > Mar 24 16:17:47 VERBOSE[29506] logger.c:   == Spawn 
> extension (macro-DialIAX, s, 1) exited non-zero on 'SIP/2944093-20ac'
> > Mar 24 16:17:47 DEBUG[29506] cdr_addon_mysql.c: cdr_mysql: 
> inserting a CDR record.
> >
> > It's all greek to me... actually you can see it exits with 
> DIALSTATUS=Answer. My macro calls MacroExit() on ANSWER, 
> which should return control back to where the Macro was 
> called from! How weird.. it looks like I _AM_ getting control 
> back, sort of...
> >
> > Doug.
> >
> >> -----Original Message-----
> >> From: Aaron Daniel [mailto:amdtech at shsu.edu]
> >> Sent: Friday, March 24, 2006 4:07 PM
> >> To: Asterisk Users Mailing List - Non-Commercial Discussion
> >> Subject: RE: [Asterisk-Users] Transferring a call with IAX
> >>
> >>
> >> Hmm... and nothing in the macro after the dial command is
> >> being executed?
> >> What does the CLI say on the caller server when the ACD server is
> >> finished?
> >>
> >> Aaron
> >>
> >> On Fri, 24 Mar 2006, Douglas Garstang wrote:
> >>
> >>> Aaron... I don't think that's it.
> >>>
> >>> When I comment out the Macro call on the ACD server, the
> >> NoOP(QUEUE DONE) is called, and that's where it stops.
> >> Without the macro being called on the ACD server, control
> >> should return to the PBX server and it does not.
> >>>
> >>> Here's what the caller has:
> >>> exten => 2944000,1,Dial(SIP/2944030,15,tr)
> >>> exten => 2944000,2,Answer
> >>> exten => 2944000,3,Wait,1
> >>> exten => 2944000,4,Playback(thank-you-for-calling)
> >>> exten => 2944000,5,Playback(customer-service)
> >>> exten =>
> >> 2944000,6,Macro(DialIAX,acdserver1,oe_custcare,oneeighty_acd)
> >>> exten => 2944000,7,NoOp(CONTROL RETURNED) <-- this does 
> NOT execute
> >>>
> >>> and here's what the callee has:
> >>> exten => oe_custcare,1,Answer
> >>> exten => oe_custcare,2,Queue(oe_custcare||||120)
> >>> exten => oe_custcare,3,NoOP(QUEUE DONE) <-- this executes
> >>> exten => oe_custcare,4,Hangup <-- this also executes
> >>>
> >>> and here's the caller's macro:
> >>> exten => s,1,Dial(IAX2/pbxuser@${ARG1}/${ARG2}@${ARG3},25,wW)
> >>> exten => s,2,Goto(s-${DIALSTATUS},1)
> >>> exten => s-ANSWER,1,Goto(s-OK,1)
> >>> exten => s-NOANSWER,1,Goto(s-ERROR,1)
> >>> exten => s-CONGESTION,1,Goto(s-ERROR,1)
> >>> exten => s-CHANUNAVAIL,1,Goto(s-ERROR,1)
> >>> exten => s-ERROR,1,Answer()
> >>> exten => s-ERROR,2,Wait,1
> >>> exten => s-ERROR,3,Set(i=1)
> >>> exten => s-ERROR,4,While($[${i} < 4])
> >>> exten => s-ERROR,5,Playback(cannot-complete-network-error)
> >>> exten => s-ERROR,6,Playback(message-number)
> >>> exten => s-ERROR,7,Playback(letters/o)
> >>> exten => s-ERROR,8,Playback(letters/e)
> >>> exten => s-ERROR,9,Playback(digits/9)
> >>> exten => s-ERROR,10,Playback(digits/0)
> >>> exten => s-ERROR,11,Playback(digits/0)
> >>> exten => s-ERROR,12,Set(i=$[${i} + 1])
> >>> exten => s-ERROR,13,EndWhile
> >>> exten => s-ERROR,14,Hangup()
> >>> exten => s-OK,1,MacroExit
> >>>
> >>> ... on callee:
> >>>    -- Executing NoOp("IAX2/216.187.142.203:4569-5", "QUEUE
> >> DONE") in new stack
> >>>    -- Executing Hangup("IAX2/216.187.142.203:4569-5", "")
> >> in new stack
> >>>
> >>> ... on the caller:
> >>>    -- Hungup 'IAX2/acdserver1-3'
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: Aaron Daniel [mailto:amdtech at shsu.edu]
> >>>> Sent: Friday, March 24, 2006 3:52 PM
> >>>> To: Asterisk Users Mailing List - Non-Commercial Discussion
> >>>> Subject: RE: [Asterisk-Users] Transferring a call with IAX
> >>>>
> >>>>
> >>>> My bad, sorry, one of those days.
> >>>>
> >>>> Change priority 4 on the ACD server to a Hangup and ignore
> >>>> what I said
> >>>> before about putting in priority 5.  Put the macro call you
> >>>> had on the ACD
> >>>> server on the PBX server, and that should fix your problem.
> >>>> Since you're
> >>>> having the ACD server do a macro of it's own, it's not
> >>>> getting sent back
> >>>> directly to the PBX server.
> >>>>
> >>>> Let me know how that works.
> >>>>
> >>>> Aaron
> >>>>
> >>>> On Fri, 24 Mar 2006, Douglas Garstang wrote:
> >>>>
> >>>>> Aaron.
> >>>>>
> >>>>> Uhm... yes. I thought you picked up on that.
> >>>>> It's like this:
> >>>>>
> >>>>> PBX Server -> ACD Server(queue times out) -> VM Server
> >>>>>
> >>>>> I'd like it to go like this:
> >>>>>
> >>>>> PBX Server -> ACD Server(queue times out) -> PBX Server
> >> -> VM Server
> >>>>>
> >>>>> So, after the pbx server dials the acd server, and the
> >>>> queue times out, I wanted to have control returned to the pbx
> >>>> server where _it_ could dial the VM server, instead of the
> >>>> ACD server doing it. I thought you where doing something similar?
> >>>>>
> >>>>> Douglas.
> >>>>>
> >>>>>
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: Aaron Daniel [mailto:amdtech at shsu.edu]
> >>>>>> Sent: Friday, March 24, 2006 2:51 PM
> >>>>>> To: Asterisk Users Mailing List - Non-Commercial Discussion
> >>>>>> Subject: RE: [Asterisk-Users] Transferring a call with IAX
> >>>>>>
> >>>>>>
> >>>>>> Hhhmmm... I missed something... You're jumping from one
> >>>>>> calling server
> >>>>>> through a "callee" server, and then from there to another
> >>>> server for
> >>>>>> voicemail?
> >>>>>>
> >>>>>> Aaron
> >>>>>>
> >>>>>> On Fri, 24 Mar 2006, Douglas Garstang wrote:
> >>>>>>
> >>>>>>> Thanks Aaron, but nope... that didn't do it. I put an
> >>>>>> explicit hangup right after the Queue app on the ACD server,
> >>>>>> and I see this when it times out:
> >>>>>>> Executing Hangup("IAX2/216.187.142.203:4569-2", "") 
> in new stack
> >>>>>>>
> >>>>>>> However, the calling server never regained control. Ahhh
> >>>>>> Asterisk a marvelous thing... I can see myself spending days
> >>>>>> on trying to get this to work.
> >>>>>>>
> >>>>>>> Doug
> >>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: Aaron Daniel [mailto:amdtech at shsu.edu]
> >>>>>>>> Sent: Friday, March 24, 2006 1:43 PM
> >>>>>>>> To: Asterisk Users Mailing List - Non-Commercial Discussion
> >>>>>>>> Subject: RE: [Asterisk-Users] Transferring a call with IAX
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Heh, lots of voodoo... I've got a drawer full of dolls shaped
> >>>>>>>> like servers
> >>>>>>>> that we stick pins into when something's not working :)
> >>>>>>>>
> >>>>>>>> Anyway... um, let's see if I can piece this together,
> >> it's kinda
> >>>>>>>> scattered...
> >>>>>>>>
> >>>>>>>> A call comes from SCM2 (the secondary call server) and it
> >>>>>>>> starts looking
> >>>>>>>> for the phone with this:
> >>>>>>>>                  Dial(SIP/${info_forwardto},25);
> >>>>>>>> then using the DIALSTATUS, if it finds that it's in
> >>>>>>>> CHANUNAVAIL, it sends
> >>>>>>>> it to the primary server:
> >>>>>>>>                  case "CHANUNAVAIL":
> >>>>>>>>
> >>>>>>>>
> >>>> 
> Dial(IAX2/asterisk:password at scm1.shsu.edu/${info_forwardto},25,wW);
> >>>>>>>>                          &uvm(${ext});
> >>>>>>>>                          Hangup;
> >>>>>>>>                          break;
> >>>>>>>>
> >>>>>>>> In order to keep the call compartmentalized, on SCM1,
> >> we've got:
> >>>>>>>> context from-scm2 {
> >>>>>>>>          _4XXXX => {
> >>>>>>>>                  NoOp(DIALING SIP EXTENSION ${EXTEN} - FROM
> >>>>>>>> ${CALLERIDNUM});
> >>>>>>>>                  Dial(SIP/${EXTEN},20,wW);
> >>>>>>>>                  Hangup;
> >>>>>>>>          };
> >>>>>>>>
> >>>>>>>>          _6XXXX => {
> >>>>>>>>                  NoOp(DIALING SIP EXTENSION ${EXTEN} - FROM
> >>>>>>>> ${CALLERIDNUM});
> >>>>>>>>                  Dial(SIP/${EXTEN},20,wW);
> >>>>>>>>                  Hangup;
> >>>>>>>>          };
> >>>>>>>> };
> >>>>>>>>
> >>>>>>>> I think your problem is that the other server isn't hanging
> >>>>>>>> up the line
> >>>>>>>> when it runs out of the queue.  Add this, and it should
> >>>>>> work for you:
> >>>>>>>>
> >>>>>>>> exten => oe_custcare,5,Hangup
> >>>>>>>>
> >>>>>>>> Let me know if that works :)
> >>>>>>>>
> >>>>>>>> Aaron
> >>>>>>>>
> >>>>>>>> P.S. It's the same on both servers, just the server names are
> >>>>>>>> switched.
> >>>>>>>> Either server can be the primary.  If you want it in
> >>>>>> extensions.conf
> >>>>>>>> language, let me know.
> >>>>>>>>
> >>>>>>>> On Fri, 24 Mar 2006, Douglas Garstang wrote:
> >>>>>>>>
> >>>>>>>>> Aaron,
> >>>>>>>>>
> >>>>>>>>> That's not what I'm seeing. I'd like to know how your
> >> doing it.
> >>>>>>>>> Here's what the calling system has:
> >>>>>>>>>
> >>>>>>>>> exten => 2944000,1,Dial(SIP/2944030,15,tr)
> >>>>>>>>> exten => 2944000,2,Answer
> >>>>>>>>> exten => 2944000,3,Wait,1
> >>>>>>>>> exten => 2944000,4,Playback(thank-you-for-calling)
> >>>>>>>>> exten => 2944000,5,Playback(customer-service)
> >>>>>>>>> exten =>
> >>>>>>>> 2944000,6,Macro(DialIAX,acdserver1,oe_custcare,oneeighty_acd)
> >>>>>>>>>
> >>>>>>>>> and on the callee system(acd box) I have:
> >>>>>>>>> exten => oe_custcare,1,Answer
> >>>>>>>>> exten => oe_custcare,2,Queue(oe_custcare||||120)
> >>>>>>>>> exten => oe_custcare,3,NoOP(QUEUE DONE)
> >>>>>>>>> exten =>
> >>>> oe_custcare,4,Macro(DialIAX,vmserver1,2944002,vmdeposit)
> >>>>>>>>>
> >>>>>>>>> and here's the Macro on the calling system:
> >>>>>>>>> exten => s,1,Dial(IAX2/pbxuser@${ARG1}/${ARG2}@${ARG3})
> >>>>>>>>> exten => s,2,Goto(s-${DIALSTATUS},1)
> >>>>>>>>> exten => s-ANSWER,1,Goto(s-OK,1)
> >>>>>>>>> exten => s-NOANSWER,1,Goto(s-ERROR,1)
> >>>>>>>>> exten => s-CONGESTION,1,Goto(s-ERROR,1)
> >>>>>>>>> exten => s-CHANUNAVAIL,1,Goto(s-ERROR,1)
> >>>>>>>>> exten => s-ERROR,1,Answer()
> >>>>>>>>> exten => s-ERROR,2,Wait,1
> >>>>>>>>> exten => s-ERROR,3,Set(i=1)
> >>>>>>>>> exten => s-ERROR,4,While($[${i} < 4])
> >>>>>>>>> exten => s-ERROR,5,Playback(cannot-complete-network-error)
> >>>>>>>>> exten => s-ERROR,6,Playback(message-number)
> >>>>>>>>> exten => s-ERROR,7,Playback(letters/o)
> >>>>>>>>> exten => s-ERROR,8,Playback(letters/e)
> >>>>>>>>> exten => s-ERROR,9,Playback(digits/9)
> >>>>>>>>> exten => s-ERROR,10,Playback(digits/0)
> >>>>>>>>> exten => s-ERROR,11,Playback(digits/0)
> >>>>>>>>> exten => s-ERROR,12,Set(i=$[${i} + 1])
> >>>>>>>>> exten => s-ERROR,13,EndWhile
> >>>>>>>>> exten => s-ERROR,14,Hangup()
> >>>>>>>>> exten => s-OK,1,MacroExit
> >>>>>>>>>
> >>>>>>>>> The callee system executes the NoOP(QUEUE DONE) when the
> >>>>>>>> queue times out, but does not return control to the calling
> >>>>>>>> system. I have to dial the VM server from the ACD box. I
> >>>>>>>> don't understand how that could work anyways. Once you've
> >>>>>>>> transferred the call, you've transferred it.
> >>>>>>>>>
> >>>>>>>>> What voodoo are you using?
> >>>>>>>>>
> >>>>>>>>> Doug.
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Aaron Daniel
> >>>>>>>> Computer Systems Technician
> >>>>>>>> Sam Houston State University
> >>>>>>>> amdtech at shsu.edu
> >>>>>>>> (936) 294-4198
> >>>>>>>> _______________________________________________
> >>>>>>>> --Bandwidth and Colocation provided by Easynews.com --
> >>>>>>>>
> >>>>>>>> Asterisk-Users mailing list
> >>>>>>>> To UNSUBSCRIBE or update options visit:
> >>>>>>>>    http://lists.digium.com/mailman/listinfo/asterisk-users
> >>>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>> --Bandwidth and Colocation provided by Easynews.com --
> >>>>>>>
> >>>>>>> Asterisk-Users mailing list
> >>>>>>> To UNSUBSCRIBE or update options visit:
> >>>>>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
> >>>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Aaron Daniel
> >>>>>> Computer Systems Technician
> >>>>>> Sam Houston State University
> >>>>>> amdtech at shsu.edu
> >>>>>> (936) 294-4198
> >>>>>> _______________________________________________
> >>>>>> --Bandwidth and Colocation provided by Easynews.com --
> >>>>>>
> >>>>>> Asterisk-Users mailing list
> >>>>>> To UNSUBSCRIBE or update options visit:
> >>>>>>    http://lists.digium.com/mailman/listinfo/asterisk-users
> >>>>>>
> >>>>> _______________________________________________
> >>>>> --Bandwidth and Colocation provided by Easynews.com --
> >>>>>
> >>>>> Asterisk-Users mailing list
> >>>>> To UNSUBSCRIBE or update options visit:
> >>>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
> >>>>>
> >>>>
> >>>> --
> >>>> Aaron Daniel
> >>>> Computer Systems Technician
> >>>> Sam Houston State University
> >>>> amdtech at shsu.edu
> >>>> (936) 294-4198
> >>>> _______________________________________________
> >>>> --Bandwidth and Colocation provided by Easynews.com --
> >>>>
> >>>> Asterisk-Users mailing list
> >>>> To UNSUBSCRIBE or update options visit:
> >>>>    http://lists.digium.com/mailman/listinfo/asterisk-users
> >>>>
> >>> _______________________________________________
> >>> --Bandwidth and Colocation provided by Easynews.com --
> >>>
> >>> Asterisk-Users mailing list
> >>> To UNSUBSCRIBE or update options visit:
> >>>   http://lists.digium.com/mailman/listinfo/asterisk-users
> >>>
> >>
> >> --
> >> Aaron Daniel
> >> Computer Systems Technician
> >> Sam Houston State University
> >> amdtech at shsu.edu
> >> (936) 294-4198
> >> _______________________________________________
> >> --Bandwidth and Colocation provided by Easynews.com --
> >>
> >> Asterisk-Users mailing list
> >> To UNSUBSCRIBE or update options visit:
> >>    http://lists.digium.com/mailman/listinfo/asterisk-users
> >>
> > _______________________________________________
> > --Bandwidth and Colocation provided by Easynews.com --
> >
> > Asterisk-Users mailing list
> > To UNSUBSCRIBE or update options visit:
> >   http://lists.digium.com/mailman/listinfo/asterisk-users
> >
> 
> -- 
> Aaron Daniel
> Computer Systems Technician
> Sam Houston State University
> amdtech at shsu.edu
> (936) 294-4198
> _______________________________________________
> --Bandwidth and Colocation provided by Easynews.com --
> 
> Asterisk-Users mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users
> 



More information about the asterisk-users mailing list