Page 1 of 1

carrier hunt/trunk hunt

PostPosted: Wed Dec 08, 2010 9:26 pm
by steve745
goautodial install iso
asterisk 1.4
i have under Globals String: DIAL1 = SIP/trunk
dialplan entry exten => _9NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _9NXXNXXXXXX,2,Dial(${DIAL1}/${EXTEN:1},,tTor)
exten => _9NXXNXXXXXX,3,Hangup


i'm aiming to jump to next trunk DIAL2 = SIP/trunk2...etc if trunk is unavailable or in use
some form of rollover. I have trunks limited to 2 channels and have no clue how to code the dialplan to such. Someone PLZ help i know someone who knows what they are doing can do this in a minute or 2

PostPosted: Thu Dec 09, 2010 10:44 am
by williamconley
I'm not sure about goautodial (or version 2.2.1), but there were notes in the extensions.conf for rollover of trunks (sample dialplan commented out, but left there for posterity). I'm not positive it's still there, but if it is :)

PostPosted: Thu Dec 09, 2010 4:43 pm
by gardo
Simplest way to do it is:

exten => _9NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _9NXXNXXXXXX,n,Dial(${DIAL1}/${EXTEN:1},,tTor)
exten => _9NXXNXXXXXX,n,Dial(${DIAL2}/${EXTEN:1},,tTor)
exten => _9NXXNXXXXXX,n,Dial(${DIAL3}/${EXTEN:1},,tTor)
exten => _9NXXNXXXXXX,n,Hangup


Where:

DIAL2 = SIP/trunk2
DIAL3 = SIP/trunk3


Of course there are more elegant ways to have it done. :)

PostPosted: Sun Dec 12, 2010 9:19 am
by steve745
ok that looks much easier than i thought it would now let me ask this. will this cause the system to dial every trunk for priority 2,3,4 before hangup or with this function to hunt till open trunk is found then hangup.

i was thinking it would look like if trunkunavailable goto
or something like that i'll give a try to what you posted and see how that works

thanks for the assistance.

PostPosted: Sun Dec 12, 2010 11:15 am
by williamconley
Alternate from Vicibox 2.0 extensions.conf:
Code: Select all
; ViciDial Outbound FailOver Dialing
;exten => _91NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _91NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(sgw)}<80]?10)
;exten => _91NXXNXXXXXX,n,NoOp("Max Trunks Exceeded")
;exten => _91NXXNXXXXXX,n,Congestion
;exten => _91NXXNXXXXXX,10,Set(GROUP()=sgw)
;exten => _91NXXNXXXXXX,n,NoOp("TIU: ${GROUP_COUNT(sgw)}") ; For debug/testing
;exten => _91NXXNXXXXXX,n,Dial(${VICITRUNK1}/${EXTEN:1},,To)
;exten => _91NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?20)
;exten => _91NXXNXXXXXX,n,Hangup
;exten => _91NXXNXXXXXX,20,Dial(${VICITRUNK2}/${EXTEN:1},,To)
;exten => _91NXXNXXXXXX,n,Hangup

dialplan for trunk failover busy etc

PostPosted: Wed Dec 15, 2010 9:00 am
by striker
hi

use this dialplan it works great
this basedon n+101 concept as described in astersik
when there is a busy or trunk failure it will be go to n+101 dialplan

exten => _8X.,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _8X.,2,Dial(${TRUNK1}/0${EXTEN:1},,tTor)
exten => _8X.,3,Dial(${TRUNK2}/0${EXTEN:1},,tTor)
exten => _8X.,4,Hangup
exten => _8X.,103,Dial(${TRUNK2}/0${EXTEN:1},,tTor)
exten => _8X.,104,Hangup
exten => _8X.,204,Hangup

Load Balance trunks/round robin

PostPosted: Wed Dec 29, 2010 11:42 pm
by chasejordan1
I am currently using goautodial 2.0 final. Just downloaded it a day ago and set it up. It works great, a few minor adjustments and all is perfect. Thanks. I have set up 3 carriers (using web interface) and all of them work fine set up is below. Each trunk was set up 9 then 8 then 7 and each trunk would dial fine if I use the appropriate number (9,8, or 7) but then I wanted to set up the trunks to round robin/load balance etc. Below is the config and it works great "except" goautodial doesn't control the callid, the carrier does "ugh" I have tried some of the set up below and they wont dial out at all. Please advise.

"WORKS BUT CALLER ID ISSUE"

"FROM EXTENSIONS-VICIDIAL.CONF"

; WARNING- THIS FILE IS AUTO-GENERATED BY VICIDIAL, ANY EDITS YOU MAKE WILL BE LOST
TRUNKloop = IAX2/ASTloop:test@127.0.0.1:40569
TRUNKblind = IAX2/ASTblind:test@127.0.0.1:41569
SIPgoautodial = SIP/goautodial
cordiaip = SIP/cordiaip
VITEL-OUTBOUND = SIP/vitel-outbound


; logging of all outbound calls from agent phones
[defaultlog]
exten => s,1,AGI(agi-VDAD_inbound_calltime_check.agi,-----NO-----defaultlog--------------------)
exten => s,n,Background(sip-silence)
exten => s,n,WaitExten(20)


; hangup
exten => t,1,Playback(vm-goodbye)
exten => t,n,Hangup
exten => i,1,Goto(s,2)
; hangup
exten => h,1,DeadAGI(agi://127.0.0.1:4577/call_log--HVcauses ... EBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME})

; custom dialplan entries
exten => _X.,1,AGI(agi-NVA_recording.agi,BOTH------Y---Y---Y)
exten => _X.,n,Goto(default,${EXTEN},1)



[vicidial-auto]
exten => h,1,DeadAGI(agi://127.0.0.1:4577/call_log--HVcauses ... EBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME})

; Local Server: 10.1.10.90
exten => _010*001*010*090*.,1,Goto(default,${EXTEN:16},1)
; VICIDIAL Carrier: GoAutoDial - GoAutoDial SIP Gateway
; Visit http://goautodial.com/voip-store/ for instant $0.5 credits
exten => _9X.,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _9X.,2,NoOp(LB IS ${lb_trunk})
exten => _9X.,3,GotoIf($[${lb_trunk} != 0]?10)
exten => _9X.,4,Set(GLOBAL(lb_trunk)=1)
exten => _9X.,5,Dial(${SIPgoautodial}/${EXTEN:1},,tTor)

exten => _9X.,10,GotoIf($[${lb_trunk} != 1]?20)
exten => _9X.,11,Set(GLOBAL(lb_trunk)=2)
exten => _9X.,12,Dial(${cordiaip}/${EXTEN:1},,tTor)

exten => _9X.,20,GotoIf($[${lb_trunk} != 2]?30)
exten => _9X.,21,Set(GLOBAL(lb_trunk)=3)
exten => _9X.,22,Dial(${vitel-outbound}/${EXTEN:1},,tTor)

exten => _9X.,30,Set(GLOBAL(lb_trunk)=0)
exten => _9X.,31,Goto(1)

callid

PostPosted: Wed Dec 29, 2010 11:53 pm
by striker
have you set correct callerid in campaign ie:outbound callid

PostPosted: Thu Dec 30, 2010 12:10 am
by chasejordan1
yes I have and only one of my carriers accepts it. When I set up the carriers individually, cordiaip as 9 vitel as 8 etc the caller ID passthru seems to be fine. Maybe I should retest??? But I am 99.99% sure it works fine.

PostPosted: Thu Dec 30, 2010 12:36 am
by chasejordan1
OK my bad it is the carrier not allowing caller id pass thru. But I hope the configuration helps. Thanks All

Re: dialplan for trunk failover busy etc

PostPosted: Fri Jul 22, 2011 8:25 am
by kashutu
Hi,
Stiker -----> I tried your method of Round Robin, and i am getting the following CLI>

ibbs*CLI> console dial 818609464041@default
[Jul 22 18:19:55] == Console is full duplex
[Jul 22 18:19:55] -- Executing [818609464041@default:1] AGI("Console/dsp", "agi://127.0.0.1:4577/call_log") in new stack
[Jul 22 18:19:55] -- AGI Script agi://127.0.0.1:4577/call_log completed, returning 0
[Jul 22 18:19:55] -- Executing [818609464041@default:2] Dial("Console/dsp", "SIP/ibrain01/018609464041||tTor") in new stack
[Jul 22 18:19:55] WARNING[17497]: app_dial.c:1296 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
[Jul 22 18:19:55] == Everyone is busy/congested at this time (1:0/0/1)
[Jul 22 18:19:55] -- Executing [818609464041@default:3] Dial("Console/dsp", "SIP/ibrain02/018609464041||tTor") in new stack
[Jul 22 18:19:55] WARNING[17497]: app_dial.c:1296 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
[Jul 22 18:19:55] == Everyone is busy/congested at this time (1:0/0/1)
[Jul 22 18:19:55] -- Executing [818609464041@default:4] Hangup("Console/dsp", "") in new stack
[Jul 22 18:19:55] == Spawn extension (default, 818609464041, 4) exited non-zero on 'Console/dsp'
[Jul 22 18:19:55] -- Executing [h@default:1] DeadAGI("Console/dsp", "agi://127.0.0.1:4577/call_log--HVcauses--PRI-----NODEBUG-----20-----CHANUNAVAIL----------") in new stack
[Jul 22 18:19:55] -- AGI Script agi://127.0.0.1:4577/call_log--HVcauses ... ---------- completed, returning 0
[Jul 22 18:19:55] << Hangup on console >>


What am i doing wrong? Also the methoed you have given is for two trunks, i have 5 trunks that i need to put in Round Robin, can you also please edit the method that you have mentioned for 5 Trunks.

Thank You


striker wrote:hi

use this dialplan it works great
this basedon n+101 concept as described in astersik
when there is a busy or trunk failure it will be go to n+101 dialplan

exten => _8X.,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _8X.,2,Dial(${TRUNK1}/0${EXTEN:1},,tTor)
exten => _8X.,3,Dial(${TRUNK2}/0${EXTEN:1},,tTor)
exten => _8X.,4,Hangup
exten => _8X.,103,Dial(${TRUNK2}/0${EXTEN:1},,tTor)
exten => _8X.,104,Hangup
exten => _8X.,204,Hangup

PostPosted: Fri Jul 22, 2011 9:18 am
by kashutu
Hey William,
Can you please edit this code for 5 Trunks with 2 channels each? In total 10 calls can be dialed at the same time.

Thanks
williamconley wrote:Alternate from Vicibox 2.0 extensions.conf:
Code: Select all
; ViciDial Outbound FailOver Dialing
;exten => _91NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _91NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(sgw)}<80]?10)
;exten => _91NXXNXXXXXX,n,NoOp("Max Trunks Exceeded")
;exten => _91NXXNXXXXXX,n,Congestion
;exten => _91NXXNXXXXXX,10,Set(GROUP()=sgw)
;exten => _91NXXNXXXXXX,n,NoOp("TIU: ${GROUP_COUNT(sgw)}") ; For debug/testing
;exten => _91NXXNXXXXXX,n,Dial(${VICITRUNK1}/${EXTEN:1},,To)
;exten => _91NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?20)
;exten => _91NXXNXXXXXX,n,Hangup
;exten => _91NXXNXXXXXX,20,Dial(${VICITRUNK2}/${EXTEN:1},,To)
;exten => _91NXXNXXXXXX,n,Hangup

PostPosted: Mon Jul 25, 2011 9:29 pm
by williamconley
Sounds like fun, actually. Ask again on Friday. 8)

PostPosted: Tue Jul 26, 2011 12:02 pm
by kashutu
williamconley wrote:Sounds like fun, actually. Ask again on Friday. 8)



I will for sure. Thnx

PostPosted: Fri Jul 29, 2011 7:12 am
by kashutu
Hi WIlliam,

It is Friday, just a reminder. Need your help on the above situation.

Thanks

PostPosted: Fri Jul 29, 2011 3:31 pm
by williamconley
LOL. Sorry, project came up. No time to test! ask again tomorrow. Or send Pizza. 8-)

But here's a rough without "thought" just expansion:

Code: Select all
; ViciDial Outbound FailOver Dialing
exten => _91NXXNXXXXXX,1,NoOp("CG1: ${GROUP_COUNT(cg1)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,NoOp("CG2: ${GROUP_COUNT(cg2)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,NoOp("CG3: ${GROUP_COUNT(cg3)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,NoOp("CG4: ${GROUP_COUNT(cg4)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,NoOp("CG5: ${GROUP_COUNT(cg5)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,AGI(agi://127.0.0.1:4577/call_log)
exten => _91NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg1)}<3]?110)
exten => _91NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?120)
exten => _91NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?130)
exten => _91NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?140)
exten => _91NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?150)
exten => _91NXXNXXXXXX,n,NoOp("Max Trunks Exceeded")
exten => _91NXXNXXXXXX,n,Congestion

exten => _91NXXNXXXXXX,110,Set(GROUP()=cg1)
exten => _91NXXNXXXXXX,n,NoOp("CG1: ${GROUP_COUNT(CG1)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,Dial(${VICITRUNK1}/${EXTEN:1},,To)
exten => _91NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?120)
exten => _91NXXNXXXXXX,n,Hangup

exten => _91NXXNXXXXXX,120,Set(GROUP()=cg2)
exten => _91NXXNXXXXXX,n,NoOp("CG1: ${GROUP_COUNT(CG2)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,Dial(${VICITRUNK2}/${EXTEN:1},,To)
exten => _91NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?130)
exten => _91NXXNXXXXXX,n,Hangup

exten => _91NXXNXXXXXX,130,Set(GROUP()=cg3)
exten => _91NXXNXXXXXX,n,NoOp("CG1: ${GROUP_COUNT(CG3)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,Dial(${VICITRUNK3}/${EXTEN:1},,To)
exten => _91NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?140)
exten => _91NXXNXXXXXX,n,Hangup

exten => _91NXXNXXXXXX,140,Set(GROUP()=cg4)
exten => _91NXXNXXXXXX,n,NoOp("CG1: ${GROUP_COUNT(CG4)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,Dial(${VICITRUNK4}/${EXTEN:1},,To)
exten => _91NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?150)
exten => _91NXXNXXXXXX,n,Hangup

exten => _91NXXNXXXXXX,150,Set(GROUP()=cg5)
exten => _91NXXNXXXXXX,n,NoOp("CG1: ${GROUP_COUNT(CG5)}") ; For debug/testing
exten => _91NXXNXXXXXX,n,Dial(${VICITRUNK5}/${EXTEN:1},,To)
exten => _91NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?900)
exten => _91NXXNXXXXXX,n,Hangup

exten => _91NXXNXXXXXX,900,NoOp("Max Trunks Exceeded")
exten => _91NXXNXXXXXX,n,Congestion

PostPosted: Sat Jul 30, 2011 5:19 am
by kashutu
Thanks William, I will test it and let you know along with Pizza....... :)

PostPosted: Fri Aug 05, 2011 9:29 am
by bryan.kewl
guys can anyone confirm that its working as expected?

also where do I need to put this code?

3rd, if I disable any carrier, it will keep working or will throw an error?

also do I need to create these groups anywhere else or just defining them here will work?

in the carrier > dialplan entry we usually have something like

exten => _91XXXXXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _91XXXXXXXXXX,2,Dial(SIP/${EXTEN:1}@sip-trunk-name,,tTor)
exten => _91XXXXXXXXXX,3,Hangup

PostPosted: Sat Aug 06, 2011 10:55 am
by williamconley
Dunno, I never got my pizza. 8-)

PostPosted: Tue Sep 13, 2011 6:20 pm
by williamconley
11 Trunk version which will fill the trunks from the top down (spare variables which allow for zeroing a trunk without losing the original value).

Remember that ";" does not save in Vicidial fields, so these globals would have to be directly inserted to work properly. Also, the globals field in Vicidial is a single line entry anyway, so Manual entry is necessary. We put it in a sep file and included it just below the Globals to be sure it wasn't hammered during upgrade.

When we used it the version was forwarding the calls to 11 different call centers (with a quantity for each) with only two actual trunks in use, instead of using 11 different actual trunks, so this has been hand edited for 11 trunks (without testing for typos!) for posting here.

Before the editing of the Dial command, this code was tested on a NONVicidial dialplan.

But make no mistake: this was tested under heavy load and worked very well. Watch your CLI (the NoOp lines will show you how well it is working) and be sure it works for you! No Warranty 8-)

I wish we had had time to build a monitor for it to show trunk group usage in real time, but we only had a few hours to build servers, test, connect to 11 other call centers and "Go Live". No pretty stuff. LOL

extensions.conf entry
Code: Select all
exten => _1NXXNXXXXXX,1,NoOp("CG1: ${GROUP_COUNT(cg1)}"|${TOPDOWNTRUNK1SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG2: ${GROUP_COUNT(cg2)}"|${TOPDOWNTRUNK2SEATS}) 
exten => _1NXXNXXXXXX,n,NoOp("CG3: ${GROUP_COUNT(cg3)}"|${TOPDOWNTRUNK3SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG4: ${GROUP_COUNT(cg4)}"|${TOPDOWNTRUNK4SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG5: ${GROUP_COUNT(cg5)}"|${TOPDOWNTRUNK5SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG6: ${GROUP_COUNT(cg6)}"|${TOPDOWNTRUNK6SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG7: ${GROUP_COUNT(cg7)}"|${TOPDOWNTRUNK7SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG8: ${GROUP_COUNT(cg8)}"|${TOPDOWNTRUNK8SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG9: ${GROUP_COUNT(cg9)}"|${TOPDOWNTRUNK9SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG10: ${GROUP_COUNT(cg10)}"|${TOPDOWNTRUNK10SEATS})
exten => _1NXXNXXXXXX,n,NoOp("CG11: ${GROUP_COUNT(cg11)}"|${TOPDOWNTRUNK11SEATS})
;exten => _1NXXNXXXXXX,n,AGI(agi://127.0.0.1:4577/call_log) ; only if using Vicidial
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg1)}<${TOPDOWNTRUNK1SEATS}]?110)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg2)}<${TOPDOWNTRUNK2SEATS}]?120)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg3)}<${TOPDOWNTRUNK3SEATS}]?130)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg4)}<${TOPDOWNTRUNK4SEATS}]?140)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg5)}<${TOPDOWNTRUNK5SEATS}]?150)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg6)}<${TOPDOWNTRUNK6SEATS}]?160)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg7)}<${TOPDOWNTRUNK7SEATS}]?170)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg8)}<${TOPDOWNTRUNK8SEATS}]?180)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg9)}<${TOPDOWNTRUNK9SEATS}]?190)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg10)}<${TOPDOWNTRUNK10SEATS}]?200)
exten => _1NXXNXXXXXX,n,GotoIf($[${GROUP_COUNT(cg11)}<${TOPDOWNTRUNK11SEATS}]?210)
exten => _1NXXNXXXXXX,n,NoOp("Max Trunks Exceeded")
exten => _1NXXNXXXXXX,n,Goto(900)

exten => _1NXXNXXXXXX,110,Set(GROUP()=cg1)
exten => _1NXXNXXXXXX,n,NoOp("CG1: ${GROUP_COUNT(CG1)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK1}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?120)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,120,Set(GROUP()=cg2)
exten => _1NXXNXXXXXX,n,NoOp("CG2: ${GROUP_COUNT(CG2)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK2}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?130)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,130,Set(GROUP()=cg3)
exten => _1NXXNXXXXXX,n,NoOp("CG3: ${GROUP_COUNT(CG3)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK3}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?140)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,140,Set(GROUP()=cg4)
exten => _1NXXNXXXXXX,n,NoOp("CG4: ${GROUP_COUNT(CG4)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK4}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?150)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,150,Set(GROUP()=cg5)
exten => _1NXXNXXXXXX,n,NoOp("CG5: ${GROUP_COUNT(CG5)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK5}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?160)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,160,Set(GROUP()=cg6)
exten => _1NXXNXXXXXX,n,NoOp("CG6: ${GROUP_COUNT(CG6)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK6}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?170)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,170,Set(GROUP()=cg7)
exten => _1NXXNXXXXXX,n,NoOp("CG7: ${GROUP_COUNT(CG7)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK7}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?180)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,180,Set(GROUP()=cg8)
exten => _1NXXNXXXXXX,n,NoOp("CG8: ${GROUP_COUNT(CG8)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK8}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?190)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,190,Set(GROUP()=cg9)
exten => _1NXXNXXXXXX,n,NoOp("CG9: ${GROUP_COUNT(CG9)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK9}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?200)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,200,Set(GROUP()=cg10)
exten => _1NXXNXXXXXX,n,NoOp("CG10: ${GROUP_COUNT(CG10)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK10}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?210)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,210,Set(GROUP()=cg11)
exten => _1NXXNXXXXXX,n,NoOp("CG11: ${GROUP_COUNT(CG11)}")
exten => _1NXXNXXXXXX,n,Dial(${TOPDOWNTRUNK11}/${EXTEN},25,To)
exten => _1NXXNXXXXXX,n,NoOp("DIALSTATUS: ${DIALSTATUS}")
exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?900)
exten => _1NXXNXXXXXX,n,Hangup

exten => _1NXXNXXXXXX,900,NoOp("Max Trunks Exceeded")
exten => _1NXXNXXXXXX,n,Answer
exten => _1NXXNXXXXXX,n,Playback(everyoneisbusypleasecallbacklater)
exten => _1NXXNXXXXXX,n,Hangup


globals

Code: Select all
TOPDOWNTRUNK1=SIP/trunk1
;TOPDOWNTRUNK1SEATS=0
TOPDOWNTRUNK1SEATS=109
TOPDOWNTRUNK2=SIP/trunk2
TOPDOWNTRUNK2SEATS=0
;TOPDOWNTRUNK2SEATS=240
TOPDOWNTRUNK3=SIP/trunk3
;TOPDOWNTRUNK3SEATS=0
TOPDOWNTRUNK3SEATS=70
TOPDOWNTRUNK4=SIP/trunk4
;TOPDOWNTRUNK4SEATS=0
TOPDOWNTRUNK4SEATS=75
TOPDOWNTRUNK5=SIP/trunk5
;TOPDOWNTRUNK5SEATS=0
TOPDOWNTRUNK5SEATS=80
TOPDOWNTRUNK6=SIP/trunk6
TOPDOWNTRUNK6SEATS=0
;TOPDOWNTRUNK6SEATS=120
TOPDOWNTRUNK7=SIP/trunk7
TOPDOWNTRUNK7SEATS=0
;TOPDOWNTRUNK7SEATS=65
TOPDOWNTRUNK8=SIP/trunk8
TOPDOWNTRUNK8SEATS=0
;TOPDOWNTRUNK8SEATS=50
TOPDOWNTRUNK9=SIP/trunk9
;TOPDOWNTRUNK9SEATS=0
TOPDOWNTRUNK9SEATS=40
TOPDOWNTRUNK10=SIP/trunk10
;TOPDOWNTRUNK10SEATS=0
TOPDOWNTRUNK10SEATS=40
TOPDOWNTRUNK11=SIP/trunk11
TOPDOWNTRUNK11SEATS=0
;TOPDOWNTRUNK11SEATS=3

Re: carrier hunt/trunk hunt

PostPosted: Mon Oct 15, 2012 1:04 pm
by steve745
Glad to see this was updated. I have just implemneted this into vicidial /goautodial install iso a few edits seems to works so far under 2 test calls going to load it down and try it out. will update later with results.---"LATER---> IT WORKED LIKE A CHARM " Thanks for the hard work William :D

Re: carrier hunt/trunk hunt

PostPosted: Mon Oct 15, 2012 3:52 pm
by williamconley
We actually tested this under quite a heavy load for a "one-time" job in a serious panic (our client became the central call center for a load heaver than their local network could support, so we turned a previous vicidial cluster into a routing system for a 2000 channel inbound "hunt group" ...). It worked like a charm.

But it was a one-shot run and the client had no interest in ANY bells or whistles. They just wanted to know that XXX calls were going to each room before overflow would go to the next room. They were quite happy with the fact that it worked on such short notice and all the calls were handled with no "drama", and at any moment in time I could tell them how many calls were in which room, and they could then verify that with the room in question accurately. Very cool.

Re: carrier hunt/trunk hunt

PostPosted: Thu Oct 18, 2012 5:00 pm
by sofcall
Hi williamconley

i did some modificatiton to the dialplan you sent to my trunks but i got an error in the cli.
Code: Select all
exten => _90XXXXXXXX.,1,NoOp("CG1: ${GROUP_COUNT(cg1)}") ; For debug/testing
exten => _90XXXXXXXX.,n,NoOp("CG2: ${GROUP_COUNT(cg2)}") ; For debug/testing
exten => _90XXXXXXXX.,n,NoOp("CG3: ${GROUP_COUNT(cg3)}") ; For debug/testing
exten => _90XXXXXXXX.,n,NoOp("CG4: ${GROUP_COUNT(cg4)}") ; For debug/testing
exten => _90XXXXXXXX.,n,NoOp("CG5: ${GROUP_COUNT(cg5)}") ; For debug/testing
exten => _90XXXXXXXX.,n,AGI(agi://127.0.0.1:4577/call_log)
exten => _90XXXXXXXX.,n,GotoIf($[${GROUP_COUNT(cg1)}<3]?110)
exten => _90XXXXXXXX.,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?120)
exten => _90XXXXXXXX.,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?130)
exten => _90XXXXXXXX.,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?140)
exten => _90XXXXXXXX.,n,GotoIf($[${GROUP_COUNT(cg2)}<3]?150)
exten => _90XXXXXXXX.,n,NoOp("Max Trunks Exceeded")
exten => _90XXXXXXXX.,n,Congestion

exten => _90XXXXXXXX.,110,Set(GROUP()=cg1)
exten => _90XXXXXXXX.,n,NoOp("CG1: ${GROUP_COUNT(CG1)}") ; For debug/testing
exten => _90XXXXXXXX.,n,Dial(${gsm }/0033${EXTEN:2},,tToR)
exten => _90XXXXXXXX.,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?120)
exten => _90XXXXXXXX.,n,Hangup

exten => _90XXXXXXXX.,120,Set(GROUP()=cg2)
exten => _90XXXXXXXX.,n,NoOp("CG1: ${GROUP_COUNT(CG2)}") ; For debug/testing
exten => _90XXXXXXXX.,n,Dial(${compte01 }/0033${EXTEN:2},,tToR)
exten => _90XXXXXXXX.,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?130)
exten => _90XXXXXXXX.,n,Hangup

exten => _90XXXXXXXX.,130,Set(GROUP()=cg3)
exten => _90XXXXXXXX.,n,NoOp("CG1: ${GROUP_COUNT(CG3)}") ; For debug/testing
exten => _90XXXXXXXX.,n,Dial(${ppservice }/0033${EXTEN:2},,tToR)
exten => _90XXXXXXXX.,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?140)
exten => _90XXXXXXXX.,n,Hangup

exten => _90XXXXXXXX.,140,Set(GROUP()=cg4)
exten => _90XXXXXXXX.,n,NoOp("CG1: ${GROUP_COUNT(CG4)}") ; For debug/testing
exten => _90XXXXXXXX.,n,Dial(${amal }/0033${EXTEN:2},,tToR)
exten => _90XXXXXXXX.,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?150)
exten => _90XXXXXXXX.,n,Hangup

exten => _90XXXXXXXX.,150,Set(GROUP()=cg5)
exten => _90XXXXXXXX.,n,NoOp("CG1: ${GROUP_COUNT(CG5)}") ; For debug/testing
exten => _90XXXXXXXX.,n,Dial(${phoneprospect }/0033${EXTEN:2},,tToR)
exten => _90XXXXXXXX.,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?900)
exten => _90XXXXXXXX.,n,Hangup

exten => _90XXXXXXXX.,900,NoOp("Max Trunks Exceeded")
exten => _90XXXXXXXX.,n,Congestion

My trunks are named:gsm;compte01;ppservice;amal;phoneprospect

Cli:
Code: Select all
[Oct 18 23:47:31]     -- Executing [90321201474@default:7] GotoIf("Local/8600051@default-12d9,1", "1?110") in new stack
[Oct 18 23:47:31]     -- Goto (default,90321201474,110)
[Oct 18 23:47:31]     -- Executing [90321201474@default:110] Set("Local/8600051@default-12d9,1", "GROUP()=cg1") in new stack
[Oct 18 23:47:31]     -- Executing [90321201474@default:111] NoOp("Local/8600051@default-12d9,1", ""CG1: 1"") in new stack
[Oct 18 23:47:31]     -- Executing [90321201474@default:112] Dial("Local/8600051@default-12d9,1", "/0033321201474||tToR") in new stack
[Oct 18 23:47:31] WARNING[7916]: channel.c:3765 ast_request: No channel type registered for ''
[Oct 18 23:47:31] WARNING[7916]: app_dial.c:1310 dial_exec_full: Unable to create channel of type '' (cause 66 - Channel not implemented)
[Oct 18 23:47:31]   == Everyone is busy/congested at this time (1:0/0/1)
[Oct 18 23:47:31]     -- Executing [90321201474@default:113] GotoIf("Local/8600051@default-12d9,1", "1?120") in new stack
[Oct 18 23:47:31]     -- Goto (default,90321201474,120)
[Oct 18 23:47:31]     -- Executing [90321201474@default:120] Set("Local/8600051@default-12d9,1", "GROUP()=cg2") in new stack
[Oct 18 23:47:31]     -- Executing [90321201474@default:121] NoOp("Local/8600051@default-12d9,1", ""CG1: 1"") in new stack
[Oct 18 23:47:31]     -- Executing [90321201474@default:122] Dial("Local/8600051@default-12d9,1", "/0033321201474||tToR") in new stack
[Oct 18 23:47:31] WARNING[7916]: channel.c:3765 ast_request: No channel type registered for ''
[Oct 18 23:47:31] WARNING[7916]: app_dial.c:1310 dial_exec_full: Unable to create channel of type '' (cause 66 - Channel not implemented)
[Oct 18 23:47:31]   == Everyone is busy/congested at this time (1:0/0/1)
[Oct 18 23:47:31]     -- Executing [90321201474@default:123] GotoIf("Local/8600051@default-12d9,1", "1?130") in new stack


any help?

Thank you.

Re: carrier hunt/trunk hunt

PostPosted: Thu Oct 18, 2012 9:16 pm
by williamconley
Code: Select all
exten => _90XXXXXXXX.,n,Dial(${gsm }/0033${EXTEN:2},,tToR)
you never defined gsm

also in several of them, you have a " " (space) inside the variable. not cool. even if you did define it, the space will break it.

Re: carrier hunt/trunk hunt

PostPosted: Sat Oct 20, 2012 4:38 pm
by sofcall
Hi William,

Thanks. Problem sorted.

Re: carrier hunt/trunk hunt

PostPosted: Fri Nov 16, 2012 10:15 pm
by williamconley
Computers are so picky. LOL