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

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

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, но всем попытки оказались тщетными.

удалить закрыть спам изменить тег редактировать

спросил 2017-03-19 20:41:18 +0400

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()
ссылка удалить спам редактировать

ответил 2017-03-19 23:07:02 +0400

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 ( 2017-03-19 23:18:23 +0400 )редактировать

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

zzuz ( 2017-03-20 02:10:36 +0400 )редактировать

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

zzuz ( 2017-03-20 02:13:38 +0400 )редактировать

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

Francyz ( 2017-03-20 09:14:37 +0400 )редактировать

Ваш ответ

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 ленту новостей

Статистика

Задан: 2017-03-19 20:41:18 +0400

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

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

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