Asterisk guida: dialplan – come creare i Call Limits

PROBLEMA
Si desidera implementare dei limiti di chiamata personalizzati nel dialplan Asterisk.


SOLUZIONE
Utilizzare le funzioni del dialplan GROUP() e GROUP_COUNT():

exten => _0Z.,1,Set(GROUP(outbound)=myprovider)
same => n,Set(COUNT=${GROUP_COUNT(myprovider@outbound)})
same => n,NoOp(Ci sono in corso ${COUNT} chiamate con myprovider)
same => n,GotoIf($[${COUNT} > 2]?denied:continue)
same => n(denied),NoOp(Superato il limite massimo di chiamate. Chiudo…)
same => n,HangUp()
same => n(continue),NoOp(Canali disponibili. Faccio chiamata)
same => n,Dial(SIP/my_provider_trunk/${EXTEN},10)
same => n,Hangup()

In questo esempio vediamo come utilizzare le funzioni GROUP() e GROUP_COUNT() per limitare il numero di chiamate in uscita per un determinato trunk/provider (nell’esempio massimo 2 chiamate).
Con la funzione GROUP() definiamo una categoria (nell’esempio “outbound”) e assegniamo un valore/nome (nell’esempio “myprovider”).
Con la funzione GROUP_COUNT() otteniamo il valore dei canali attivi per qual determinato gruppo.
L’argomento fornito alla funzione GROUP() è una categoria ed è facoltativo.

Riferimenti wiki Asterisk 18:

GROUP() https://wiki.asterisk.org/wiki/display/AST/Asterisk+18+Function_GROUP

GROUP_COUNT() https://wiki.asterisk.org/wiki/display/AST/Asterisk+18+Function_GROUP_COUNT