Для правильного вопроса надо знать половину ответа
exten => _X!, 1, GotoIf($[${SIPPEER(${EXTEN},curcalls)}<${SIPPEER(${EXTEN},limit)}]?num_free)
same => n, Answer()
same => n, Playback(abonent_is_busy, noanswer)
same => n, Hangup
same => n(num_free), Dial(SIP/${EXTEN},,t)