Я так понял разделять и по пользователям, и по тому что они набрали.
Можно начать с того что набрали:
exten => _7XXX,1,Noop("Направление1")
exten => _7XXX/3001,s,Goto(dial)
exten => _7XXX/3004,s,Goto(dial)
exten => _7XXX/,s,Goto(kto_eto_takoy)
exten => _7XXX,n(tuda_nizya),Play("Вам туда низя")
exten => _7XXX,n,Hangup
exten => _7XXX,n(kto_eto_takoy),Play("Ты хто такой")
exten => _7XXX,n,Goto(tuda_nizya)
exten => _7XXX,n(dial),Dial(SIP/cisco/${EXTEN:1})
exten => _7XXX,n,Hangup
exten => _7XXXX,1,Noop("Направление2")
exten => _7XXXX/3002,s,Goto(dial)
exten => _7XXXX/3003,s,Goto(dial)
exten => _7XXXX/3004,s,Goto(dial)
exten => _7XXXX/,s,Goto(kto_eto_takoy)
exten => _7XXXX,n(tuda_nizya),Play("Вам туда низя")
exten => _7XXXX,n,Hangup
exten => _7XXXX,n(kto_eto_takoy),Play("Ты хто такой")
exten => _7XXXX,n,Goto(tuda_nizya)
exten => _7XXXX,n(dial),Dial(SIP/cisco/${EXTEN:1})
exten => _7XXXX,n,Hangup
А можно начать с юзверей. Используем ${LEN(foo)} (
Asterisk+variables):
exten => _7X.,1,Noop("Сортир")
exten => _7X./3001,s,Goto(mozno_na_napravlenie1)
exten => _7X./3002,s,Goto(mozno_na_napravlenie2)
exten => _7X./3003,s,Goto(mozno_na_napravlenie2)
exten => _7X./3004,s,Goto(mozno_na_napravlenie1i2)
exten => _7X./,s,Goto(kto_eto_takoy)
exten => _7X.,n(tuda_nizya),Play("Вам туда низя")
exten => _7X.,n,Hangup
exten => _7X.,n(kto_eto_takoy),Play("Ты хто такой")
exten => _7X.,n,Goto(tuda_nizya)
exten => _7X.,n(mozno_na_napravlenie2),GotoIf($["${LEN(EXTEN)}" = "5]?dial)
exten => _7X.,n,Goto(tuda_nizya)
exten => _7X.,n(mozno_na_napravlenie1i2),GotoIf($["${LEN(EXTEN)}" = "5]?dial)
exten => _7X.,n(mozno_na_napravlenie1),GotoIf($["${LEN(EXTEN)}" = "4]?dial)
exten => _7X.,n,Goto(tuda_nizya)
exten => _7X.,n(dial),Dial(SIP/cisco/${EXTEN:1})
exten => _7X.,n,Hangup
Что так, что так получится:
Юзер -> Набранный номер
3001 -> 7XXX
3002 -> 7XXXX
3003 -> 7XXXX
3004 -> 7XXX or 7XXXX
По моему это просто, или я не так понял вопрос?