[Asterisk-Users] Transferring a call with IAX

Aaron Daniel amdtech at shsu.edu
Fri Mar 24 16:32:48 MST 2006


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



More information about the asterisk-users mailing list