Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Нужна помощь в корректировке исходящих (синтаксис)

0

Приветствую, Камрады! Помогите разобраться с синтаксисом в extensions.conf. Вот есть к примеру 4 номера, как добавить перебор номеров при исходящем звонке? Сейчас все сделано громоздко и топорно, т.е. план выглядит вот так:

[general]
static=yes
writeprotect
=no

[globals]
[default]

[phones]
include
=> local
include
=> outgoing

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

[outgoing]
exten
=> _XXX.,1,Dial(SIP/${EXTEN}@213137,45,t)
exten
=> _XXX.,n,Dial(SIP/${EXTEN}@213153,45,t)
exten
=> _XXX.,n,Dial(SIP/${EXTEN}@213157,45,t)
exten
=> _XXX.,n,Dial(SIP/${EXTEN}@213158,45,t)
exten
=> _XXX.,n,Hangup()

Как можно исправить код, чтобы не городить кучу текста, а использовать "same". Потому что если я захочу к примеру ограничить или изменить правило для какого-нибудь межгорода по типу exten => _8495** мне снова придется лепить это кучей друг за другом. А если номера будет не 4 исходящих а 7-10, то количество строчек увеличится. Понимаю что делается с помощью Gosub и ChanIsAvail, но всем попытки оказались тщетными.

спросил Mar 19 '17

Francyz Gravatar Francyz
21 5 1 5

1 Ответ

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

[trunk_check]
exten
=> s,1,Dial(SIP/${ARG1}@213137,45,t)
 same
=> n,Dial(SIP/${ARG1}@213153,45,t)
 same
=> n,Dial(SIP/${ARG1}@213157,45,t)
 same
=> n,Dial(SIP/${ARG1}@213158,45,t)
 same
=> n,Hangup()
ссылка удалить спам редактировать

ответил Mar 19 '17

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Comments

Спасибо, по сути тоже самое, немного упрошает. А касательно проверки ChanIsAvail не подскажете (проверить не могу), верно ли данное суждение?

[outcall]

exten => s,1,NoOp(Selecting channel)

same => 2,ChanIsAvail(SIP/213137&SIP/213153&SIP/213157&SIP/213158,sj)

same => 3,Dial(${AVAILCHAN}/${ARG1},45,t)

same => 4,Hangup

same => 103,Playback(all-circuits-busy-now)

same => n,Hangup

[outgoing]

exten => _XXX.,1,Gosub(outcall,s,1(${EXTEN}))

По сути получится тоже самое что и у вас но только с проверкой уже на свободную линию?

Francyz (Mar 19 '17)edit

Ну так проверьте . Только какой в этом смысл? Если AVAILCHAN будет равен SIP/213137&SIP/213153 ? Куда звонить? Внешние транки лучше не проверять через ChanIsAvail .

zzuz (Mar 19 '17)edit

И лучше заменить ${AVAILCHAN} , на ${CUT(AVAILCHAN,,1)}

zzuz (Mar 19 '17)edit

zzuz, спасибо за пояснения, еще не сильно в этом силен, только познаю все прелести. Простите а как тогда узнавать свободная ли линия для звонка? Или это делать не обязательно и достаточно просто делать перебор, как Вы указали ранее?

Francyz (Mar 20 '17)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Mar 19 '17

Просмотрен: 230 раз

Обновлен: Mar 19 '17

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.