Author Topic: Outbound calls all circuits are busy. (RESOLVED)  (Read 53797 times)

luiz@tribecapediatrics

  • Newbie
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
Outbound calls all circuits are busy. (RESOLVED)
« on: June 11, 2012, 19:20:43 »
We are trying to setup qm to track our agent outgoing calls. We are running Elastix/freepbx, our agent ids are 5 digits long, and we created a custom trunk and outgoing route, when an agent diasl 74610013479445555, we get all circuits are busy now.

I've put the output of the cli below:

-- Executing [s@macro-dialout-trunk:26] Set("SIP/215-00002175", "the_num=4610013479445555") in new stack
    -- Executing [s@macro-dialout-trunk:27] Dial("SIP/215-00002175", "Local/4610013479445555@queuedial/n,300,") in new stack
    -- Called 4610013479445555@queuedial/n
    -- Executing [4610013479445555@queuedial:1] Set("Local/4610013479445555@queuedial-a270;2", "QDIALER_QUEUE=q-150") in new stack
    -- Executing [4610013479445555@queuedial:2] Set("Local/4610013479445555@queuedial-a270;2", "QDIALER_NUMBER=13479445555") in new stack
    -- Executing [4610013479445555@queuedial:3] Set("Local/4610013479445555@queuedial-a270;2", "QDIALER_AGENT=Agent/46100") in new stack
    -- Executing [4610013479445555@queuedial:4] Set("Local/4610013479445555@queuedial-a270;2", "QDIALER_CHANNEL=SIP/13479445555") in new stack
    -- Executing [4610013479445555@queuedial:5] Set("Local/4610013479445555@queuedial-a270;2", "QueueName=q-150") in new stack
    -- Executing [4610013479445555@queuedial:6] MixMonitor("Local/4610013479445555@queuedial-a270;2", "Q-q-150-1339437358.20774.WAV|b|") in new stack
    -- Executing [4610013479445555@queuedial:7] Goto("Local/4610013479445555@queuedial-a270;2", "qm-queuedial,s,1") in new stack
    -- Goto (qm-queuedial,s,1)
  == Spawn extension (qm-queuedial, s, 1) exited non-zero on 'Local/4610013479445555@queuedial-a270;2'
    -- Executing [h@qm-queuedial:1] NoOp("Local/4610013479445555@queuedial-a270;2", " "Call exiting: status  answered at:  DS: "  ") in new stack
    -- Executing [h@qm-queuedial:2] Goto("Local/4610013479445555@queuedial-a270;2", "case-") in new stack
  == Spawn extension (qm-queuedial, h, 2) exited non-zero on 'Local/4610013479445555@queuedial-a270;2'
  == Begin MixMonitor Recording Local/4610013479445555@queuedial-a270;2
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing [s@macro-dialout-trunk:28] NoOp("SIP/215-00002175", "Dial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 0") in new stack
    -- Executing [s@macro-dialout-trunk:29] Goto("SIP/215-00002175", "s-CHANUNAVAIL,1") in new stack
    -- Goto (macro-dialout-trunk,s-CHANUNAVAIL,1)
    -- Executing [s-CHANUNAVAIL@macro-dialout-trunk:1] Set("SIP/215-00002175", "RC=0") in new stack
    -- Executing [s-CHANUNAVAIL@macro-dialout-trunk:2] Goto("SIP/215-00002175", "0,1") in new stack
    -- Goto (macro-dialout-trunk,0,1)
    -- Executing [0@macro-dialout-trunk:1] Goto("SIP/215-00002175", "continue,1") in new stack
    -- Goto (macro-dialout-trunk,continue,1)
    -- Executing [continue@macro-dialout-trunk:1] GotoIf("SIP/215-00002175", "1?noreport") in new stack
    -- Goto (macro-dialout-trunk,continue,3)
    -- Executing [continue@macro-dialout-trunk:3] NoOp("SIP/215-00002175", "TRUNK Dial failed due to CHANUNAVAIL HANGUPCAUSE: 0 - failing through to other trunks") in new stack
    -- Executing [continue@macro-dialout-trunk:4] Set("SIP/215-00002175", "CALLERID(number)=215") in new stack
    -- Executing [74610013479445555@from-internal:5] Macro("SIP/215-00002175", "outisbusy,") in new stack
    -- Executing [s@macro-outisbusy:1] Progress("SIP/215-00002175", "") in new stack
    -- Executing [s@macro-outisbusy:2] GotoIf("SIP/215-00002175", "0?emergency,1") in new stack
    -- Executing [s@macro-outisbusy:3] GotoIf("SIP/215-00002175", "0?intracompany,1") in new stack
    -- Executing [s@macro-outisbusy:4] Playback("SIP/215-00002175", "all-circuits-busy-now&pls-try-call-later, noanswer") in new stack
    -- <SIP/215-00002175> Playing 'all-circuits-busy-now.gsm' (language 'en')
  == End MixMonitor Recording Local/4610013479445555@queuedial-a270;2
« Last Edit: July 11, 2012, 13:16:38 by luiz@tribecapediatrics »

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2993
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Outbound calls all circuits are busy.
« Reply #1 on: June 13, 2012, 10:17:35 »
Most likely this

Code: [Select]
QDIALER_CHANNEL=SIP/13479445555
should be

Code: [Select]
QDIALER_CHANNEL=SIP/provider/13479445555

luiz@tribecapediatrics

  • Newbie
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
Re: Outbound calls all circuits are busy.
« Reply #2 on: June 13, 2012, 15:40:29 »
Neither of those too worked for me. I actually had set as Local/EXTEN:5@from-internal/n, so this could pick up any of my 2 trunks.

this is what i have in my extensions_queuemetrics.conf

[queuedial]
; this piece of dialplan is just a calling hook into the [qm-queuedial] context that actually does the
; outbound dialing - replace as needed - just fill in the same variables.
exten => _XXX.,1,Set(QDIALER_QUEUE=q-150)
exten => _XXX.,n,Set(QDIALER_NUMBER=${EXTEN:5})
exten => _XXX.,n,Set(QDIALER_AGENT=Agent/${EXTEN:0:5})
exten => _XXX.,n,Set(QDIALER_CHANNEL=SIP/${EXTEN:5})
exten => _XXX.,n,Set(QueueName=${QDIALER_QUEUE})
exten => _XXX.,n,MixMonitor(Q-${QDIALER_QUEUE}-${UNIQUEID}.WAV|b|)
exten => _XXX.,n,Goto(qm-queuedial,s,1)
[qm-queuedial]
; We use a global variable to pass values back from the answer-detect macro.
; STATUS = U unanswered
;        = A answered    (plus CAUSECOMPLETE=C when callee hung up)
; The 'g' dial parameter must be used in order to track callee disconnecting.
; Note that we'll be using the 'h' hook in any case to do the logging when channels go down.
; We set the CDR(accountcode) for live monitoring by QM.
;
exten => s,1,NoOp,Outbound call -> A:${QDIALER_AGENT} N:${QDIALER_NUMBER} Q:${QDIALER_QUEUE} Ch:${QDIALER_CHANNEL}
exten => s,n,Set(CDR(accountcode)=QDIALAGI)
exten => s,n,Set(ST=${EPOCH})
exten => s,n,Set(GM=QDV-${QDIALER_AGENT})
exten => s,n,Set(GLOBAL(${GM})=U)
exten => s,n,Set(GLOBAL(${GM}ans)=0)
exten => s,n,Macro(queuelog,${ST},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},ENTERQUEUE,-,${QDIALER_NUMBER})
exten => s,n,Dial(${QDIALER_CHANNEL},30,gM(queuedial-answer^${UNIQUEID}^${GM}^${QDIALER_QUEUE}^${QDIALER_AGENT}^${ST}))
exten => s,n,Set(CAUSECOMPLETE=${IF($["${DIALSTATUS}" = "ANSWER"]?C)})

; Trapping call termination here
exten => h,1,NoOp( "Call exiting: status ${GLOBAL(${GM})} answered at: ${GLOBAL(${GM}ans)} DS: ${DIALSTATUS}"  )
exten => h,n,Goto(case-${GLOBAL(${GM})})
exten => h,n,Hangup()

; Call unanswered
exten => h,n(case-U),Set(WT=$[${EPOCH} - ${ST}])
exten => h,n,Macro(queuelog,${EPOCH},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},ABANDON,1,1,${WT})
exten => h,n,Hangup()

; call answered: agent/callee hung
exten => h,n(case-A),Set(COMPLETE=${IF($["${CAUSECOMPLETE}" = "C"]?COMPLETECALLER:COMPLETEAGENT)})
exten => h,n,Set(WT=$[${GLOBAL(${GM}ans)} - ${ST}])
exten => h,n,Set(CT=$[${EPOCH} - ${GLOBAL(${GM}ans)}])
exten => h,n,Macro(queuelog,${EPOCH},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},${COMPLETE},${WT},${CT})
exten => h,n,Hangup()


[macro-queuedial-answer]
; Expecting $ARG1: uniqueid of the caller channel
;           $ARG2: global variable to store the answer results
;           $ARG3: queue name
;           $ARG4: agent name
;           $ARG5: enterqueue
;
exten => s,1,NoOp("Macro: queuedial-answer UID:${ARG1} GR:${ARG2} Q:${ARG3} A:${ARG4} E:${ARG5}")
exten => s,n,Set(NOW=${EPOCH})
exten => s,n,Set(WD=$[${NOW} - ${ARG5}])
exten => s,n,Macro(queuelog,${NOW},${ARG1},${ARG3},${ARG4},CONNECT,${WD})
exten => s,n,Set(GLOBAL(${ARG2})=A)
exten => s,n,Set(GLOBAL(${ARG2}ans)=${NOW})
exten => s,n,NoOp("Macro queuedial-answer terminating" )

[macro-queuelog]
; The advantage of using this macro is that you can choose whether to use the Shell version
; (where you have complete control of what gets written) or the Application version (where you
; do not need a shellout, so it's way faster).
;
; Expecting  $ARG1: Timestamp
;            $ARG2: Call-id
;            $ARG3: Queue
;            $ARG4: Agent
;            $ARG5: Verb
;            $ARG6: Param1
;            $ARG7: Param2
;            $ARG8: Param3
;
;exten => s,1,System( echo "${ARG1}|${ARG2}|${ARG3|${ARG4}|${ARG5}|${ARG6}|${ARG7}|${ARG8}" >> /var/log/asterisk/queue_log )
exten => s,1,QueueLog(${ARG3},${ARG2},${ARG4},${ARG5},${ARG6}|${ARG7}|${ARG8})



QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2993
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Outbound calls all circuits are busy.
« Reply #3 on: June 15, 2012, 11:48:43 »

Try one thing at a time sending the call through through SIP or DAHDI in a way that you are sure works. This way we have less variables on our plate to understand what is going on.
l


Neither of those too worked for me. I actually had set as Local/EXTEN:5@from-internal/n, so this could pick up any of my 2 trunks.


luiz@tribecapediatrics

  • Newbie
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
Re: Outbound calls all circuits are busy.
« Reply #4 on: June 20, 2012, 15:00:10 »
I changed the QDIALER to (QDIALER_CHANNEL=SIP/parenting/${QDIALER_NUMBER}) and unfortunately still getting all circuit are busy now.
I have pasted the CLI output. I dont know where I am messing up.

Thank you

Code: [Select]
  == Extension Changed 215[ext-local] new state InUse for Notify User 312
    -- Executing [74610013479445555@from-internal:1] Macro("SIP/215-0000f712", "user-callerid,SKIPTTL,") in new stack
    -- Executing [s@macro-user-callerid:1] Set("SIP/215-0000f712", "AMPUSER=215") in new stack
    -- Executing [s@macro-user-callerid:2] GotoIf("SIP/215-0000f712", "0?report") in new stack
    -- Executing [s@macro-user-callerid:3] ExecIf("SIP/215-0000f712", "1?Set(REALCALLERIDNUM=215)") in new stack
    -- Executing [s@macro-user-callerid:4] Set("SIP/215-0000f712", "AMPUSER=215") in new stack
    -- Executing [s@macro-user-callerid:5] Set("SIP/215-0000f712", "AMPUSERCIDNAME=Hotdesk Agent") in new stack
    -- Executing [s@macro-user-callerid:6] GotoIf("SIP/215-0000f712", "0?report") in new stack
    -- Executing [s@macro-user-callerid:7] Set("SIP/215-0000f712", "AMPUSERCID=215") in new stack
    -- Executing [s@macro-user-callerid:8] Set("SIP/215-0000f712", "CALLERID(all)="Hotdesk Agent" <215>") in new stack
    -- Executing [s@macro-user-callerid:9] ExecIf("SIP/215-0000f712", "0?Set(CHANNEL(language)=)") in new stack
    -- Executing [s@macro-user-callerid:10] GotoIf("SIP/215-0000f712", "1?continue") in new stack
    -- Goto (macro-user-callerid,s,19)
    -- Executing [s@macro-user-callerid:19] NoOp("SIP/215-0000f712", "Using CallerID "Hotdesk Agent" <215>") in new stack
    -- Executing [74610013479445555@from-internal:2] Set("SIP/215-0000f712", "_NODEST=") in new stack
    -- Executing [74610013479445555@from-internal:3] Macro("SIP/215-0000f712", "record-enable,215,OUT,") in new stack
    -- Executing [s@macro-record-enable:1] GotoIf("SIP/215-0000f712", "1?check") in new stack
    -- Goto (macro-record-enable,s,4)
    -- Executing [s@macro-record-enable:4] ExecIf("SIP/215-0000f712", "0?MacroExit()") in new stack
    -- Executing [s@macro-record-enable:5] GotoIf("SIP/215-0000f712", "0?Group:OUT") in new stack
    -- Goto (macro-record-enable,s,15)
    -- Executing [s@macro-record-enable:15] GotoIf("SIP/215-0000f712", "0?IN") in new stack
    -- Executing [s@macro-record-enable:16] ExecIf("SIP/215-0000f712", "1?MacroExit()") in new stack
    -- Executing [74610013479445555@from-internal:4] Macro("SIP/215-0000f712", "dialout-trunk,20,4610013479445555,,") in new stack
    -- Executing [s@macro-dialout-trunk:1] Set("SIP/215-0000f712", "DIAL_TRUNK=20") in new stack
    -- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/215-0000f712", "0?sub-pincheck,s,1") in new stack
    -- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/215-0000f712", "0?disabletrunk,1") in new stack
    -- Executing [s@macro-dialout-trunk:4] Set("SIP/215-0000f712", "DIAL_NUMBER=4610013479445555") in new stack
    -- Executing [s@macro-dialout-trunk:5] Set("SIP/215-0000f712", "DIAL_TRUNK_OPTIONS=tr") in new stack
    -- Executing [s@macro-dialout-trunk:6] Set("SIP/215-0000f712", "OUTBOUND_GROUP=OUT_20") in new stack
    -- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/215-0000f712", "1?nomax") in new stack
    -- Goto (macro-dialout-trunk,s,9)
    -- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/215-0000f712", "0?skipoutcid") in new stack
    -- Executing [s@macro-dialout-trunk:10] Set("SIP/215-0000f712", "DIAL_TRUNK_OPTIONS=") in new stack
    -- Executing [s@macro-dialout-trunk:11] Macro("SIP/215-0000f712", "outbound-callerid,20") in new stack
    -- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/215-0000f712", "0?Set(CALLERPRES()=)") in new stack
    -- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/215-0000f712", "0?Set(REALCALLERIDNUM=215)") in new stack
    -- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/215-0000f712", "1?normcid") in new stack
    -- Goto (macro-outbound-callerid,s,6)
    -- Executing [s@macro-outbound-callerid:6] Set("SIP/215-0000f712", "USEROUTCID=") in new stack
    -- Executing [s@macro-outbound-callerid:7] Set("SIP/215-0000f712", "EMERGENCYCID=") in new stack
    -- Executing [s@macro-outbound-callerid:8] Set("SIP/215-0000f712", "TRUNKOUTCID=") in new stack
    -- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/215-0000f712", "1?trunkcid") in new stack
    -- Goto (macro-outbound-callerid,s,12)
    -- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/215-0000f712", "0?Set(CALLERID(all)=)") in new stack
    -- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/215-0000f712", "0?Set(CALLERID(all)=)") in new stack
    -- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/215-0000f712", "0?Set(CALLERID(all)=)") in new stack
    -- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/215-0000f712", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
    -- Executing [s@macro-dialout-trunk:12] ExecIf("SIP/215-0000f712", "0?AGI(fixlocalprefix)") in new stack
    -- Executing [s@macro-dialout-trunk:13] Set("SIP/215-0000f712", "OUTNUM=4610013479445555") in new stack
    -- Executing [s@macro-dialout-trunk:14] Set("SIP/215-0000f712", "custom=AMP") in new stack
    -- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/215-0000f712", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^))") in new stack
    -- Executing [s@macro-dialout-trunk:16] Macro("SIP/215-0000f712", "dialout-trunk-predial-hook,") in new stack
    -- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/215-0000f712", "") in new stack
    -- Executing [s@macro-dialout-trunk:17] GotoIf("SIP/215-0000f712", "0?bypass,1") in new stack
    -- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/215-0000f712", "1?customtrunk") in new stack
    -- Goto (macro-dialout-trunk,s,22)
    -- Executing [s@macro-dialout-trunk:22] Set("SIP/215-0000f712", "pre_num=AMP:Local/") in new stack
    -- Executing [s@macro-dialout-trunk:23] Set("SIP/215-0000f712", "the_num=OUTNUM") in new stack
    -- Executing [s@macro-dialout-trunk:24] Set("SIP/215-0000f712", "post_num=@queuedial/n") in new stack
    -- Executing [s@macro-dialout-trunk:25] GotoIf("SIP/215-0000f712", "1?outnum:skipoutnum") in new stack
    -- Goto (macro-dialout-trunk,s,26)
    -- Executing [s@macro-dialout-trunk:26] Set("SIP/215-0000f712", "the_num=4610013479445555") in new stack
    -- Executing [s@macro-dialout-trunk:27] Dial("SIP/215-0000f712", "Local/4610013479445555@queuedial/n,300,") in new stack
    -- Called 4610013479445555@queuedial/n
    -- Executing [4610013479445555@queuedial:1] Set("Local/4610013479445555@queuedial-223e;2", "QDIALER_QUEUE=q-150") in new stack
    -- Executing [4610013479445555@queuedial:2] Set("Local/4610013479445555@queuedial-223e;2", "QDIALER_NUMBER=13479445555") in new stack
    -- Executing [4610013479445555@queuedial:3] Set("Local/4610013479445555@queuedial-223e;2", "QDIALER_AGENT=Agent/46100") in new stack
    -- Executing [4610013479445555@queuedial:4] Set("Local/4610013479445555@queuedial-223e;2", "QDIALER_CHANNEL=SIP/parenting/13479445555") in new stack
    -- Executing [4610013479445555@queuedial:5] Set("Local/4610013479445555@queuedial-223e;2", "QueueName=q-150") in new stack
    -- Executing [4610013479445555@queuedial:6] MixMonitor("Local/4610013479445555@queuedial-223e;2", "Q-q-150-1340199786.130499.WAV|b|") in new stack
    -- Executing [4610013479445555@queuedial:7] Goto("Local/4610013479445555@queuedial-223e;2", "qm-queuedial,s,1") in new stack
  == Begin MixMonitor Recording Local/4610013479445555@queuedial-223e;2
    -- Goto (qm-queuedial,s,1)
  == Spawn extension (qm-queuedial, s, 1) exited non-zero on 'Local/4610013479445555@queuedial-223e;2'
    -- Executing [h@qm-queuedial:1] NoOp("Local/4610013479445555@queuedial-223e;2", " "Call exiting: status  answered at:  DS: "  ") in new stack
    -- Executing [h@qm-queuedial:2] Goto("Local/4610013479445555@queuedial-223e;2", "case-") in new stack
  == Spawn extension (qm-queuedial, h, 2) exited non-zero on 'Local/4610013479445555@queuedial-223e;2'
  == End MixMonitor Recording Local/4610013479445555@queuedial-223e;2
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing [s@macro-dialout-trunk:28] NoOp("SIP/215-0000f712", "Dial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 0") in new stack
    -- Executing [s@macro-dialout-trunk:29] Goto("SIP/215-0000f712", "s-CHANUNAVAIL,1") in new stack
    -- Goto (macro-dialout-trunk,s-CHANUNAVAIL,1)
    -- Executing [s-CHANUNAVAIL@macro-dialout-trunk:1] Set("SIP/215-0000f712", "RC=0") in new stack
    -- Executing [s-CHANUNAVAIL@macro-dialout-trunk:2] Goto("SIP/215-0000f712", "0,1") in new stack
    -- Goto (macro-dialout-trunk,0,1)
    -- Executing [0@macro-dialout-trunk:1] Goto("SIP/215-0000f712", "continue,1") in new stack
    -- Goto (macro-dialout-trunk,continue,1)
    -- Executing [continue@macro-dialout-trunk:1] GotoIf("SIP/215-0000f712", "1?noreport") in new stack
    -- Goto (macro-dialout-trunk,continue,3)
    -- Executing [continue@macro-dialout-trunk:3] NoOp("SIP/215-0000f712", "TRUNK Dial failed due to CHANUNAVAIL HANGUPCAUSE: 0 - failing through to other trunks") in new stack
    -- Executing [continue@macro-dialout-trunk:4] Set("SIP/215-0000f712", "CALLERID(number)=215") in new stack
    -- Executing [74610013479445555@from-internal:5] Macro("SIP/215-0000f712", "outisbusy,") in new stack
    -- Executing [s@macro-outisbusy:1] Progress("SIP/215-0000f712", "") in new stack
    -- Executing [s@macro-outisbusy:2] GotoIf("SIP/215-0000f712", "0?emergency,1") in new stack
    -- Executing [s@macro-outisbusy:3] GotoIf("SIP/215-0000f712", "0?intracompany,1") in new stack
    -- Executing [s@macro-outisbusy:4] Playback("SIP/215-0000f712", "all-circuits-busy-now&pls-try-call-later, noanswer") in new stack
    -- <SIP/215-0000f712> Playing 'all-circuits-busy-now.gsm' (language 'en')

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2993
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Outbound calls all circuits are busy.
« Reply #5 on: June 20, 2012, 16:24:40 »
It looks like it's not finding the [qm-queuedial] context.

See:

Code: [Select]
-- Executing [4610013479445555@queuedial:7] Goto("Local/4610013479445555@queuedial-223e;2", "qm-queuedial,s,1") in new stack
  == Begin MixMonitor Recording Local/4610013479445555@queuedial-223e;2
    -- Goto (qm-queuedial,s,1)
  == Spawn extension (qm-queuedial, s, 1) exited non-zero on 'Local/4610013479445555@queuedial-223e;2'

I would expect to have a NoOp record at (qm-queuedial, s, 1) ....

luiz@tribecapediatrics

  • Newbie
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
Re: Outbound calls all circuits are busy.
« Reply #6 on: June 20, 2012, 16:34:52 »
Yes there is a [qm-queuedial] in the extensions_queuemetrics.conf. Do I need to include => [qm-queuedial] anywhere?

here is that part of the conf file.

Code: [Select]
[queuedial]
; this piece of dialplan is just a calling hook into the [qm-queuedial] context that actually does the
; outbound dialing - replace as needed - just fill in the same variables.
exten => _XXX.,1,Set(QDIALER_QUEUE=q-150)
exten => _XXX.,n,Set(QDIALER_NUMBER=${EXTEN:5})
exten => _XXX.,n,Set(QDIALER_AGENT=Agent/${EXTEN:0:5})
exten => _XXX.,n,Set(QDIALER_CHANNEL=SIP/parenting/${QDIALER_NUMBER})
exten => _XXX.,n,Set(QueueName=${QDIALER_QUEUE})
exten => _XXX.,n,MixMonitor(Q-${QDIALER_QUEUE}-${UNIQUEID}.WAV|b|)
exten => _XXX.,n,Goto(qm-queuedial,s,1)

;[queuedial]
; This piece of dialplan will let only logged on agents dial out
;exten => _XXX.,1,Set(QDIALER_QUEUE=q-150)
;exten => _XXX.,n,Set(QDIALER_NUMBER=${EXTEN:0})
;exten => _XXX.,n,Set(QDIALER_AGENT=Agent/${AGENTBYCALLERID_${CALLERID(num)}})
;exten => _XXX.,n,Set(QDIALER_CHANNEL=SIP/broadvox/${QDIALER_NUMBER})
;exten => _XXX.,n,Set(QueueName=${QDIALER_QUEUE})
;exten => _XXX.,n,MixMonitor(Q-${QDIALER_QUEUE}-${UNIQUEID}.WAV,b,)
;exten => _XXX.,n,GotoIf($[${LEN(${QDIALER_AGENT})} > 6]?qm-queuedial,s,1)
;exten => _XXX.,n,NoOp,Extension ${CALLERID(num)} is not logged on as agent.
;exten => _XXX.,n,Playback(agent-loggedoff)
;exten => _XXX.,n,Congestion

[qm-queuedial]
; We use a global variable to pass values back from the answer-detect macro.
; STATUS = U unanswered
;        = A answered    (plus CAUSECOMPLETE=C when callee hung up)
; The 'g' dial parameter must be used in order to track callee disconnecting.
; Note that we'll be using the 'h' hook in any case to do the logging when channels go down.
; We set the CDR(accountcode) for live monitoring by QM.
;
exten => s,1,NoOp,Outbound call -> A:${QDIALER_AGENT} N:${QDIALER_NUMBER} Q:${QDIALER_QUEUE} Ch:${QDIALER_CHANNEL}
exten => s,n,Set(CDR(accountcode)=QDIALAGI)
exten => s,n,Set(ST=${EPOCH})
exten => s,n,Set(GM=QDV-${QDIALER_AGENT})
exten => s,n,Set(GLOBAL(${GM})=U)
exten => s,n,Set(GLOBAL(${GM}ans)=0)
exten => s,n,Macro(queuelog,${ST},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},ENTERQUEUE,-,${QDIALER_NUMBER})
exten => s,n,Dial(${QDIALER_CHANNEL},30,gM(queuedial-answer^${UNIQUEID}^${GM}^${QDIALER_QUEUE}^${QDIALER_AGENT}^${ST}))
exten => s,n,Set(CAUSECOMPLETE=${IF($["${DIALSTATUS}" = "ANSWER"]?C)})

Thank you

« Last Edit: June 20, 2012, 16:40:11 by luiz@tribecapediatrics »

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2993
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Outbound calls all circuits are busy.
« Reply #7 on: June 22, 2012, 08:42:15 »
It should already be present. Do you see it in core dialplan show qm-queuedial in the Asterisk CLI?

luiz@tribecapediatrics

  • Newbie
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
Re: Outbound calls all circuits are busy.
« Reply #8 on: June 22, 2012, 13:05:32 »
I see it. This is what the CLI outputs.

Code: [Select]
[root@localhost ~]# asterisk -rx 'dialplan show qm-queuedial'
[ Context 'qm-queuedial' created by 'pbx_config' ]
  'h' =>            1. NoOp( "Call exiting: status ${GLOBAL(${GM})} answered at: ${GLOBAL(${GM}ans)} DS: ${DIALSTATUS}"  ) [pbx_config]
                    2. Goto(case-${GLOBAL(${GM})})                [pbx_config]
                    3. Hangup()                                   [pbx_config]
     [case-U]       4. Set(WT=$[${EPOCH} - ${ST}])                [pbx_config]
                    5. Macro(queuelog,${EPOCH},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},ABANDON,1,1,${WT}) [pbx_config]
                    6. Hangup()                                   [pbx_config]
     [case-A]       7. Set(COMPLETE=${IF($["${CAUSECOMPLETE}" = "C"]?COMPLETECALLER:COMPLETEAGENT)}) [pbx_config]
                    8. Set(WT=$[${GLOBAL(${GM}ans)} - ${ST}])     [pbx_config]
                    9. Set(CT=$[${EPOCH} - ${GLOBAL(${GM}ans)}])  [pbx_config]
                    10. Macro(queuelog,${EPOCH},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},${COMPLETE},${WT},${CT}) [pbx_config]
                    11. Hangup()                                  [pbx_config]
  's' =>            1. NoOp,Outbound call -> A:${QDIALER_AGENT} N:${QDIALER_NUMBER} Q:${QDIALER_QUEUE} Ch:${QDIALER_CHANNEL}() [pbx_config]
                    2. Set(CDR(accountcode)=QDIALAGI)             [pbx_config]
                    3. Set(ST=${EPOCH})                           [pbx_config]
                    4. Set(GM=QDV-${QDIALER_AGENT})               [pbx_config]
                    5. Set(GLOBAL(${GM})=U)                       [pbx_config]
                    6. Set(GLOBAL(${GM}ans)=0)                    [pbx_config]
                    7. Macro(queuelog,${ST},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},ENTERQUEUE,-,${QDIALER_NUMBER}) [pbx_config]
                    8. Dial(${QDIALER_CHANNEL},30,gM(queuedial-answer^${UNIQUEID}^${GM}^${QDIALER_QUEUE}^${QDIALER_AGENT}^${ST})) [pbx_config]
                    9. Set(CAUSECOMPLETE=${IF($["${DIALSTATUS}" = "ANSWER"]?C)}) [pbx_config]

-= 2 extensions (20 priorities) in 1 context. =-

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2993
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Outbound calls all circuits are busy.
« Reply #9 on: June 26, 2012, 11:28:37 »
It's weird, it seems to be there. Do you still get the very same error?

luiz@tribecapediatrics

  • Newbie
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
Re: Outbound calls all circuits are busy.
« Reply #10 on: June 26, 2012, 18:05:38 »
Yes, I can not get this to work.

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2993
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Outbound calls all circuits are busy.
« Reply #11 on: June 27, 2012, 11:08:04 »
My suggestion at this point would be renting an Asterisk expert in your local area who can do the integration. If you send an email to Loway Support telling them where you're located, they can surely find someone in your area. As this is a general Asterisk issue, any Asterisk consultant will do.

luiz@tribecapediatrics

  • Newbie
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
Re: Outbound calls all circuits are busy.
« Reply #12 on: July 11, 2012, 13:16:18 »
I put this project on the side for a while so I could get my head out of it and look at it again with fresh eyes.
I now have it outbound tracking working on our system. Agent can dial using the agent portal or by dial 7+AgentNumber+PhoneNumber.

This is what was wrong with the dial plan

Original dial plan:

Code: [Select]
exten => s,1,NoOp,Outbound call -> A:${QDIALER_AGENT} N:${QDIALER_NUMBER} Q:${QDIALER_QUEUE} Ch:${QDIALER_CHANNEL}
exten => s,n,Set(CDR(accountcode)=QDIALAGI)
exten => s,n,Set(ST=${EPOCH})
exten => s,n,Set(GM=QDV-${QDIALER_AGENT})
exten => s,n,Set(GLOBAL(${GM})=U)
exten => s,n,Set(GLOBAL(${GM}ans)=0)
exten => s,n,Macro(queuelog,${ST},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},ENTERQUEUE,-,${QDIALER_NUMBER})
exten => s,n,Dial(${QDIALER_CHANNEL},30,gM(queuedial-answer^${UNIQUEID}^${GM}^${QDIALER_QUEUE}^${QDIALER_AGENT}^${ST}))
exten => s,n,Set(CAUSECOMPLETE=${IF($["${DIALSTATUS}" = "ANSWER"]?C)})

My Dial Plan:

Code: [Select]
exten => s,1,NoOp(Outbound call -> A:${QDIALER_AGENT} N:${QDIALER_NUMBER} Q:${QDIALER_QUEUE} Ch:${QDIALER_CHANNEL})
exten => s,n,Set(CDR(accountcode)=QDIALAGI)
exten => s,n,Set(ST=${EPOCH})
exten => s,n,Set(GM=QDV-${QDIALER_AGENT})
exten => s,n,Set(GLOBAL(${GM})=U)
exten => s,n,Set(GLOBAL(${GM}ans)=0)
exten => s,n,Macro(queuelog,${ST},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},ENTERQUEUE,-,${QDIALER_NUMBER})
exten => s,n,Dial(${QDIALER_CHANNEL},30,gM(queuedial-answer^${UNIQUEID}^${GM}^${QDIALER_QUEUE}^${QDIALER_AGENT}^${ST}))
exten => s,n,Set(CAUSECOMPLETE=${IF($["${DIALSTATUS}" = "ANSWER"]?C)})

The NoOp line had a comma after the NoOp operation, changed to a open parenthesis and got it all to work.

Thank you for all the help.



QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2993
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Outbound calls all circuits are busy. (RESOLVED)
« Reply #13 on: July 17, 2012, 10:53:48 »
 ;D

GymGuyElinty

  • Newbie
  • *
  • Posts: 18
  • Karma: 0
    • View Profile
    • Email
WEIGHT REDUCTION Related Articles
« Reply #14 on: July 21, 2017, 13:53:01 »
Comply along with my own recommendations within addition to put directly into action a straightforward diet system that can change the particular body technique associated with your own property favorably. This powerful method offers established every so usually raspberry cleanse and many of those have observed results inside 5 days, the reason will be that these folks implemented your cleanse detox diet plan the right way.
The experienced professionals inside detox centers can manual you with the detoxification method and ease the drawback symptoms to a considerable degree. When one thinks of detoxification, one immediately thinks of alcohol in addition evolution slimming garcinia cambogia to drug abuse detoxification programs; however, there are different types of detox applications and diets using the sugar detox diet being the associated focus of this short article.
It is very important include foods high in dietary fiber, as this will help rid the body of poisons and speed up typically the elimination process. Any easy way to slim lower before your wedding without investing six months dieting is to do a detox system with a series of colonics. Not necessarily everybody comply with that will program but cleanse detoxification diet is nevertheless desirable to medical professionals as well as yoga gurus.
Lessen sugar cravings and support blood sugar with a new diet of whole grain, vegetables, beans and lentils or lean, free variety poultry, meat and ova. Always remember to tread with caution when you are a new comer fat loss factory to cleansing; if your body is utilized to unhealthy food content then you should reduce back slowly rather as compared to beginning with a full physique detox.
Natural body cleanse procedures are the most beneficial ones simply because they do not necessarily have any unwanted part effects. Once again that cannot be stressed adequate which a detox is not really a quick treatment for shed weight and you require to concentrate on the diet detoxify body at home plan plan as a method to improve your health in general. Lunchtime can be pretty essential to cleansing a person's body along with detox that, beverage all typically the h2o as you can once you have swallowed ones lunch break, only give a 10 minutes bust in advance of standard water.