Francyz
@Francyz
Photographer & SysAdmin

Перевод с внешки на внешку, как реализовать на Asterisk?

Камрады!
Подсобите ответом для новичка в телефонии.
В сети есть трехзначные номера. Когда секретарь звонит на внешний номер, делает трансфер и переводит на внутренний то все работает нормально.
Но когда она звонит на внешний и пытается переводить на мобильный выдается ошибка. Я понимаю, что проблема в DialPlan'е, но не получается подкорректировать.
Dial Plan
;
; extensions.conf - the Asterisk dial plan
;

[general]
static=yes
writeprotect=no

[globals]
TRANSFER_CONTEXT=local

[default]

[phones]
include => local
include => outgoing

[local]
exten => 900,1,Answer()
exten => 900,n,ConfBridge(1,confer)
exten => 133,1,Dial(SIP/198&SIP/199,60)
exten => _XXX,1,Dial(SIP/${EXTEN},60,tT)
exten => _XXX,n,Hangup()

[outgoing]
exten => _XXX.,1,Gosub(trunk_check,s,1(${EXTEN}))

;Dial plan "Incoming"
[incoming]
exten => ***,1,Dial(SIP/150,,t)
exten => ***,1,Goto(ivr-main-1,s,1)
exten => ***,1,Goto(ivr-main-1,s,1)
exten => ***,1,Goto(ivr-main-1,s,1)
exten => ***,1,Goto(ivr-main-1,s,1)
exten => ***,1,Dial(SIP/122,,t)
exten => ***,1,Dial(SIP/145,,t)
exten => ***,1,Goto(ivr-main-1,s,1)

[trunk_check]
exten => s,1,Dial(SIP/${ARG1}@213153,45,T)
same => n,Dial(SIP/${ARG1}@213135,45,T)
same => n,Dial(SIP/${ARG1}@213136,45,T)
same => n,Dial(SIP/${ARG1}@213157,45,T)
same => n,Dial(SIP/${ARG1}@213158,45,T)
same => n,Dial(SIP/${ARG1}@213159,45,T)
same => n,Dial(SIP/${ARG1}@213162,45,T)
same => n,Hangup()

[ivr-main-1]
exten => s,1,Answer()
exten => s,2,Background(/etc/asterisk/ivr/ivr-welcome-02)
exten => s,3,WaitExten(5)
exten => #900,1,Goto(local,${EXTEN:1},1)
exten => _XXX,1,Dial(SIP/${EXTEN},15)
;Check status peer: exists or not
exten => _XXX,n,GotoIf($["${SIPPEER(${EXTEN},status)}" = ""]?num-not-exist,1)
;Check status peer: enable or not
exten => _XXX,n,GotoIf($["${SIPPEER(${EXTEN},status):0:2}" = "UN"]?num-not-connected,1)
;Check channel
exten => _XXX,n,ChanIsAvail(SIP/${EXTEN},s)
;If 2 or 3 - Busy
exten => _XXX,n,GoToIf($[${AVAILSTATUS} = 2]?num-BUSY,1)
exten => _XXX,n,GoToIf($[${AVAILSTATUS} = 3]?num-BUSY,1)
;other statuses
exten => _XXX,n,Goto(num-${DIALSTATUS},1)
;Say - Try again
exten => num-not-exist,1,Wait(2)
exten => num-not-exist,n,Playback(invalid)
;Say - check number
exten => num-not-connected,1,Wait(2)
exten => num-not-connected,n,Playback(ss-noservice)
;Say - Busy
exten => num-BUSY,1,Wait(2)
exten => num-BUSY,n,Playback(vm-isonphone)
;Say - not available
exten => num-NOANSWER,1,Wait(2)
exten => num-NOANSWER,n,Playback(vm-isunavail)
;status CHANUNAVAIL,say - disabled
exten => num-CHANUNAVAIL,1,Wait(2)
exten => num-CHANUNAVAIL,n,Playback(vm-isunavail)
;return Secretariat
exten => t,1,Dial(SIP/101,15)

Я понимаю, что в теории проблема в [local], я меняю там _ХХХ на _ХХХ. - как я понял это позволяет набирать номер с 3-мя и более цифрами, т.е. мобильный подходит.
Но когда я набираю внутренний номер состоящий из 3-х цифр он ругается, а в консоли астеры выдается что подобное не найдено в контексте [phones].

Подсобите советом. Не нужно ли как-то отдельно это делать? В контексте [outgoing] уже стоит по умолчанию _XXX., меняя в local - это не помогает.

Update^
Если не править диалплан и звонить так как есть, то лог ниже:
Лог картинкой
5c657694b6eb5269780476.png

Т.е. в логе видно, что когда я звоню наружу и набираю *2, для направленного перевода, то после набора трех цифр 886 в данном случае, он пытается искать этот внутренний номер, не находит его и возвращается звонок обратно.
Нужно понять как сделать так чтобы он не сбрасывал звонок а дальше слушал набор номера.

Update 2
А еще смотрите в заголовке написано:
[globals]
TRANSFER_CONTEXT=local

Может тут нужно какой то другой трансфер указать, который будет так же работать для внешки?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
_XXX - это строго три цифры
_XXX. - это три цифры и не менее, чем один любой символ.
_XXX! - это как минимум три цифры
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы