Limiting Calls on Asterisk using Group() cmd http://www.voip-info.org/wiki-Asterisk cmd SetGroup Example 4 (Matt Riddell's Example)The idea is that when you do setgroup you are putting this caller into a group. I.E. you could have exten => s,1,SetGroup(People_With_Short_Hair) That would put anyone who visits this extension into the People_With_Short_Hair group. Then if you do: exten => s,2,CheckGroup(678) You can make sure that there are not more than 678 people already in the People_With_Short_Hair group. If there are more than 678 people in the group then the application will go to the priority x 101 where x is the current priority. See the ,2, on the checkgroup line? That's the current priority. So, 2 101=103. So you could have a line exten => s,103,Playback(more_than_678_short_hair) which would only be played if there are more than 678 people in the group. If however there are less than or equal to the number inside the brackets for checkgroup (say for example there are 500 people who have short hair), then it will continue to the next priority. As above, the current priority is 2 when you do the checkgroup, so the next priority is 3. This means that you can have the line: exten => s,3,Playback(less_than 678_short_hair) Now, if we put them all together you'd end up with: exten => s,1,SetGroup(People_With_Short_Hair) exten => s,2,CheckGroup(678) exten => s,3,Playback(less_than_or_equal_to_678_short_hair) exten => s,103,Playback(more_than_678_short_hair) Example 5 (Tagapache's Example) using the GROUP() function.SetGroup and CheckGroup have been deprecated in (i think the rel I have is 1.0.7). I get horribly confused with CVS Head and which release I have at any one point. Instead you use the GROUP() function. Here is a working fragment from a SAIL-generated dial plan. It works very well, choking the outbound calls at whatever number is set. This won't work on stable releases, at least up to 1.0.9. ;******************************************************************** ; ; S T D V O I P - with choke ; ;******************************************************************** [macro-stdvoip] ; ; ${ARG1} - full dial string ; Return ${DIALSTATUS} = CHANUNAVAIL if ${VOIPMAX} exceeded ; ; exten => s,1,Set(GROUP()=OUTBOUND_GROUP) ;Set Group exten => s,2,GotoIf($[${GROUP_COUNT()} > ${VOIPMAX}]?103) ;Exceeded? exten => s,3,Dial(${ARG1}) ;dial it exten => s,103,SetVar(DIALSTATUS=CHANUNAVAIL) ;deny call ${VOIPMAX} is a user-set Global which limits the concurrent number of outbound VOIP calls Example 6 Using Categories in 1.0.x (Ramon's example)Using categories you are able to set multiple groups on only one active channel. So you are able to set the amount of calls on the called channel but also on the calling channel. exten => 200,1,SetGroup(CW@${EXTEN}) ; Increase the number of calls on the called channel exten => 200,2,CheckGroup(1@CW) ; Check if called channel has more than 1 call exten => 200,3,SetGroup(CW@${CALLERIDNUM}) ; Increase the number of calls on the calling channel exten => 200,4,Dial(SIP/200) ; Call the extension exten => 200,103,Busy ; Checkgroup jumped here if there was more than 1 call. Note that this works in Asterisk 1.0.7 and no longer in new releases, See Example 5 for more info... Also Note that a problem in Asterisk 1.0.x will cause incorrect data on transfer of calls
Comments Leave your comment(s) below: | To start Your own Blog Other Blogs » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » |

