Для того, чтобы ограничить количество одновременных вызовов в Астериск используйте функции GROUP и GROUP_COUNT. Нижу приведен пример номерного плана Астериск , где количество одновременных линий ограничено до 1.
-
Набирается номер 810ХХХХХХХ, в консоль выводится сообщение: набираем 810ХХХХХХХ
-
функция GROUP() назначает вызовы в группу long
-
В консоль выводится сообщение: кол-во одновременных вызовов — ${GROUP_COUNT(long)}, где ${GROUP_COUNT(long) = порядковый номер вызова.
-
Проверяется условие, если количество одновременных вызовов больше 1, вызов направляется в екстеншен over и разъединяется с выводом в консоль:
лимит превышен на — […] вызова.
-
Если вызов первый, номер набирается через SIP транк provider.
1 2 3 4 5 6 7 |
exten => _810.,1,Verbose(*** набираем - ${EXTEN} ***) same => n,Set(GROUP()=long) same => n,Verbose(*** кол-во одновременных вызовов - ${GROUP_COUNT(long)} ***) same => n,GotoIf($[${GROUP_COUNT(long)} > 1]?over) same => n,Dial(PJSIP/${EXTEN}@siptrunk,,) same => n(over),Verbose(*** лимит превышен на - ${MATH(${GROUP_COUNT(long)}-1)} вызова ***) same => n,Set(DIALSTATUS=CHANUNAVAIL) |
Удачи!