[Asterisk-Users] Has anybody experience with SetGroup / CheckGroup commands?

Matt Riddell matt.riddell at sineapps.com
Mon Mar 14 17:21:19 MST 2005


Ronald Wiplinger wrote:
>    Example 2
> 
> *Problem*: How to limit incoming calls to SIP channels using the 
> SetGroup & Checkgroup command. I don't want any call waiting on SIP 
> channels!
> *Approach*: One solution is to increment the GROUPCOUNT for both the 
> caller and callee, to ensure the callee doesn't get a 2nd call while on 
> the phone.
> 

[sip-phones]

; increment GROUPCOUNT for the calling exten
exten => 602,1,SetGroup(${CALLERIDNUM})

The idea of this line is to put one person into the say 601 group (if 
the caller has a caller ID number of 601).  This means if anyone else 
goes into the 601 group, there will be too many.

; increment GROUPCOUNT for exten you are calling
exten => 602,2,SetGroup(${EXTEN})

This will then add one person to the 602 group (the extension at the 
beginning of the line is 602).

; ensure this is the 1st call to this exten
exten => 602,3,CheckGroup(1)

This line checks to make sure that there is not more than one person in 
the 602 group (the last setGroup was 602).  That way we can tell if 602 
is already on the phone.

; dial if we make it this far
exten => 602,4,Dial(SIP/602)

; CheckGroup jumped here, 602 is on the phone
exten => 602,104,Busy

So if you were calling from callerIDNum 601 you would have:

[sip-phones]
exten => 602,1,SetGroup(601)
exten => 602,2,SetGroup(602)
exten => 602,3,CheckGroup(1)
exten => 602,4,Dial(SIP/602)
exten => 602,104,Busy

Or if you were dialling from 603:

[sip-phones]
exten => 602,1,SetGroup(603)
exten => 602,2,SetGroup(602)
exten => 602,3,CheckGroup(1)
exten => 602,4,Dial(SIP/602)
exten => 602,104,Busy

So in effect you end up with groups 603 and 602 having one person 
inside.  If someone tried to call either of these, they would get a busy 
signal.

more likely than the above you'd have something like:

[sip-phones]
exten => _6XX,1,SetGroup(${CALLERIDNUM})
exten => _6XX,2,SetGroup(${EXTEN})
exten => _6XX,3,CheckGroup(1)
exten => _6XX,4,Dial(SIP/${EXTEN})
exten => _6XX,104,Busy

That way you'd only need to have it once and it would take care of 100 
phones.

> You will also want to ensure you SetGroup(${CALLERIDNUM}) before dialing 
> any outgoing numbers as well (to PSTN,etc). ie:
> 
> [outbound-local]
> exten => _9NXXXXXX,1,SetGroup(${CALLERIDNUM})

This makes sure that if you dial an external line, one person will be 
added to the group 601 (if that's your caller ID Number).

Also, you'd need to do the same thing for applications.  I.E. if you 
have voicemailMain at say 800, you want to make sure that no one can 
dial you while you're listening to voicemail.  You would do that the same:

exten => 800,1,SetGroup(${CALLERIDNUM})
exten => 800,2,VoicemailMain()

So that way it adds one person to the group [Your_Caller_ID_Number]. 
i.e. if you have a callerid number in sip.conf defined as 601 then when 
you dial voicemail it will be doing setgroup(601).

This means that if someone tried to call you with the 6XX thing, when it 
gets to the 2 priority it would do setGroup(601).  This would mean that 
there are now 2 people in the group 601, so the next line (checkgroup) 
would jump to x+101.

Make sense?

-- 
Cheers,

Matt Riddell
_______________________________________________

http://www.sineapps.com/news.php (Daily Asterisk News - html)
http://www.sineapps.com/rssfeed.php (Daily Asterisk News - rss)




More information about the asterisk-users mailing list