dnis の GROUP コマンドで通話をグループ化します。
その dnis を持つ呼び出しをカウントします
制限を適用する
このようなもの...
; this is your dialplan
[yourdialplan]
exten => 7314451234,n,Macro(limit-by-did,${EXTEN})
exten => 7314451235,n,Macro(limit-by-did,${EXTEN})
exten => 7314451236,n,Macro(limit-by-did,${EXTEN})
exten => 7314451237,n,Macro(limit-by-did,${EXTEN})
exten => 7314451238,n,Macro(limit-by-did,${EXTEN})
; this does the check
[macro-limit-by-did]
exten => s,1,Verbose(2,"checking limits")
; group by dnis
exten => s,n,Set(GROUP(CLIENT)=${ARG1})
; count number of calls in this dnis that are active
exten => s,n,Set(CLIENT_COUNT=${GROUP_COUNT(${ARG1}@CLIENT)})
; apply the limits jumping to block or pass
exten => s,n,GotoIf($[${CLIENT_COUNT} > 4]?block:pass)
; sorry you were 5th caller
exten => s,n(block),Verbose(2,too many callers to ${ARG1})
exten => s,n,Hangup()
; you were less than 5th caller continue on
exten => s,n(pass),Verbose(2,less than 4 callers on ${ARG1})