Сообщения о недоступности абонента
Сообщений: 1573
|
Re: Сообщения о недоступности абонента
dimas: exten => _XXX,1,Macro(stdexten,,SIP/${EXTEN}&IAX2/${EXTEN})
срать на консоль будет про то что IAX2/999 недоступен или SIP/999 недоступен - в зависимости от того как он реально подключен. Не смертельно, но анноит.
Так при чем здесь ... ?
Консоль для того и нужна, что бы "это" разгребать ... :))
P.S. Даже в демо (от разработчиков) используется такой вариант ...
P.P.S. А этот вариант похоже - упрощенный ... :)
dimas:
По хорошему нужно прописывать в sip.conf
regxontext = sipregs
в iax.conf:
regxontext = iaxregs
и делать что-то вроде
[sipusers]
includes => sipregs
exten => _XXX,2,Dial(SIP/${EXTEN})
exten => _XXX,n,Hangup
[iaxusers]
includes => iaxregs
exten => _XXX,2,Dial(IAX2/${EXTEN})
exten => _XXX,n,Hangup
[users]
includes => sipusers
includes => iaxusers
и кидать звонки уже в users
P.P.P.S. А для чего делать инклюды на sipregs, iaxregs? Да и логика не совсем понятна.
|
Сообщений: 866
|
Re: Сообщения о недоступности абонента
cron, то что вы не понимаете как работает мой вариант - не делает его упрощенным :)
Почитайте как работает regcontext. При регистрации софтфона в соотв. контексте появляется priority 1 extesion типа
exten => 702,1,Noop(...)
соответственно sipregs/iaxregs это просто набор Noop'ов для _зарегистрированных_ телефонов. И это важно.
Теперь мы инклюдим sipregs в sipusers и объявляем priority 2 wildcard extension
exten => _XXX,2,Dial(SIP/${EXTEN})
если мы попытаемся вызвать 999@sipusers то это будет invalid extension потому что нету priority 1 длянего и диалплан не выполняется. А вот если мы позовем 702@sipusers - то находится Noop в заинклюженном sipregs и выполнение диалплана продолжается на priority 2. То есть на Dial(SIP/...). Таким образом попытка Dial делается ТОЛЬКО для тех экстеншенов которые зарегистрированы в данный момент.
Единственно где перемудрил - нельзя делать разделение на sip/iax - надо и регистрировать в один контекст и инклюдить в один в котором Dial сразу и SIP и IAX делает. Ибо отдельными контекстами работать не будет.
|
Сообщений: 1573
|
Re: Сообщения о недоступности абонента
dimas: Почитайте как аботает regcontext.
exten => _XXX,2,Dial(SIP/${EXTEN})
я знаю как работает regcontext, поэтому и задал этот вопрос ... Просмотрел, что 2 приоритет стоит.
dimas: Единственно где перемудрил - нельзя делать разделение на sip/iax - надо и регистрировать в один контекст и инклюдить в один в котором Dial сразу и SIP и IAX делает. Ибо отдельными контекстами работать не будет.
вот теперь логика выстраивается ...
А теперь вопрос - что проще (если не учитывать единственный ваш аргумент, что в консоли "насрано", и который реально ни на что не влияет)? ;)
P.S. Ваш вариант я назвал упрощенным в переносном смысле, если что ... )
P.P.S. Подумал над вашим вариантом еще раз, насчет "срать" в консоль. Он будет это делать так же ... И если уж идти "простым путем" тогда уж так:
regxontext = sipregs
в iax.conf:
regxontext = iaxregs
и делать что-то вроде
[sipregs]
exten => _XXX,2,Dial(SIP/${EXTEN})
exten => _XXX,n,Hangup
exten => h,1,Hangup
[iaxregs]
exten => _XXX,2,Dial(IAX2/${EXTEN})
exten => _XXX,n,Hangup
exten => h,1,Hangup
[users]
includes => sipregs
includes => iaxregs
и кидать звонки уже в users
|
Сообщений: 866
|
Re: Сообщения о недоступности абонента
Что-то плохо я вас понимаю. "простым путем" - и вы приводите мне мой же диалплан единственно что "h" экстеншены добавлены. Это при том что я уже написао что НЕЛЬЗЯ разделять sip/iax контексты.... Правильно - вот так:
в sip.conf:
regxontext = regs
в iax.conf:
regxontext = regs
[users]
includes => regs
exten => _XXX,2,Macro(dial-user,${EXTEN})
exten => _XXX,n,Hangup
Где macro dial-users примерно такое как я выше приводил. Там правда AEL, но сути это не меняет.
1. "срать" в консоль не будет потому что в dial-user улетают только звонки на зарегистрированные _в данный момент_ экстеншены. И во-вторых, dial-user делает ChanIsAvail чтобы найти кто именно жив из двух протоколов и может обработать ситуацию когда не жив ни один.
2. Вешать на "h" экстеншен Hangup это вообще бессмыслица потому как звонок и так оборван уже и "h" нужен только чтобы какой-то cleanup в конце сделать или в базу что-нибудь занести например. А вешать код который "в случае hangup cделай Hangup" это странно как-то.
|
Сообщений: 1573
|
Re: Сообщения о недоступности абонента
dimas: Что-то плохо я вас понимаю. "простым путем" - и вы приводите мне мой же диалплан единственно что "h" экстеншены добавлены. Это при том что я уже написао что НЕЛЬЗЯ разделять sip/iax контексты....
Вы предлагали там еще добавить обе команды Dial в один контекст. Так это будет в консоли еще больше делать ... Я и поправил.
h - добавлен для той же корректности, при задаче, меньше "нагадить" в консоли ... (простоту мы пока отодвинули. Кстати, вы не ответили на вопрос, что проще)
dimas:
1. "срать" в консоль не будет потому что в dial-user улетают только звонки на зарегистрированные _в данный момент_ экстеншены. И во-вторых, dial-user делает ChanIsAvail чтобы найти кто именно жив из двух протоколов и может обработать ситуацию когда не жив ни один.
это сейчас вы придумали вариант с проверкой канала. Выше вы предлагали другой вариант. Но это все равно делается гораздо проще, без всяких динамических регистраций и т.д. ...
dimas:
2. Вешать на "h" экстеншен Hangup это вообще бессмыслица потому как звонок и так оборван уже и "h" нужен только чтобы какой-то cleanup в конце сделать или в базу что-нибудь занести например. А вешать код который "в случае hangup cделай Hangup" это странно как-то.
Это делается для того, что бы, как вы выразились, меньше "сралось" в консоли ... ;)
В общем - ваш вариант, как из мухи сделать слона ...
Простота - сестра таланта!
P.S. Я пока при выполнении своих задач ни разу не сталкивался с необходимостью использовать regcontext, в смысле того, чего бы я не смог сделать без него ...
|
Сообщений: 866
|
Re: Сообщения о недоступности абонента
это сейчас вы придумали вариант с проверкой канала. Выше вы предлагали другой вариант.
Э нет, я dial-user привел РАНЬШЕ чем заговорил про regcontext вообще - посмотрите хронологию в треде сами :) Просто я эти две штуки приводил отдельно как примеры как надо "делать А" и "делать Б" не объединяя их в одно целое. А в конце уже объединил раз вы такой въедливый :)
А "придумал" я это давно - у меня мои сервера именно по такой схеме работают. Но в отличие от dial-user который копипаст с реального сервера, части с regcontext писал ручками а не копипастил и по дороге перемудрил с тем что разделил SIP и IAX2 регистрироваться в разные контексты. Чего делать нельзя. (На реальных серверах они у меня в один контекст регистрируются)
Это делается для того, что бы, как вы выразились, меньше "сралось" в консоли ... ;)
Можно узнать, что именно из консоли исчезнет от наличия h,1,Hangup ?
В общем - ваш вариант, как из мухи сделать слона ...
Дело вкуса. У меня есть минимум две причины делать так:
1. Без regcontext и ChanIsAvail будет:
-- Executing [116@default:1] Dial("IAX2/1001-13561", "SIP/1002&IAX2/1002") in new stack
[Feb 18 02:45:41] WARNING[14503]: app_dial.c:1183 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
[Feb 18 02:45:41] WARNING[14503]: app_dial.c:1183 dial_exec_full: Unable to create channel of type 'IAX2' (cause 3 - No route to destination)
WARNING-и в консоле (и лог файле) на ровном месте. По моей философии в нормально работающем продукте варнингов и ерроров быть не должно. Поэтому заставлять астериск ругаться там где этого можно не делать я не хочу.
2. Мне нужно отличать ситуацию "экстеншен не зарегистрирован на сервере" от иных причин его недоступности. Моя схема мне это позволяет.
Простота - сестра таланта!
А иногда простота хуже воровства )
P.S. Я пока при выполнении своих задач ни разу не сталкивался с необходимостью использовать regcontext, в смысле того, чего бы я не смог сделать без него
Ну это уже вообще ни о чем. А кто-то скажет "я ни разу не встречал задачу для которой _обязательно_ бы требовался IAX. Все можно точно также сделать SIP'ом" и будет прав. А еше кто-то скажет то же самое про voip - у него ни разу не было ни одной задачи которой было не решить с помощью email. Каждому свое. Способы решения есть разные. Вам ближе один, мне другой.
|
Сообщений: 1573
|
Re: Сообщения о недоступности абонента
dimas: Э нет, я dial-user привел РАНЬШЕ чем заговорил про regcontext вообще - посмотрите хронологию в треде сами :) Просто я эти две штуки приводил отдельно как примеры как надо "делать А" и "делать Б" не объединяя их в одно целое. А в конце уже объединил раз вы такой въедливый :)]
да нет, не нада считать себя хитрее других ... ) Это вы сейчас ищете рабочей вариант, склеивая ваши посты.
Ваш пример, который вы привели против моего, был вообще не рабочий. Потом вы поправились. Но и это было не то, что вы продекларировали (меньше информации в консоли)
Насчет въедливости ...), это просто - поиск истины. Вы сказали, что ваш вариант - правильнее. Но пока что я этого не увидел ...
dimas:
А "придумал" я это давно - у меня мои сервера именно по такой схеме работают. Но в отличие от dial-user который копипаст с реального сервера, части с regcontext писал ручками а не копипастил и по дороге перемудрил с тем что разделил SIP и IAX2 регистрироваться в разные контексты. Чего делать нельзя. (На реальных серверах они у меня в один контекст регистрируются)
так перемудрить, списывая, нужно постараться ... Из рабочего (допустим ;) ) варианта, написать потенциально нерабочий ... Мне кажется, что то здесь не так ... ;)
dimas:
Можно узнать, что именно из консоли исчезнет от наличия h,1,Hangup ?
самый простой способ, самому посмотреть, что менятся будет ... )
dimas:
В общем - ваш вариант, как из мухи сделать слона ...
Дело вкуса. У меня есть минимум две причины делать так:
1. Без regcontext и ChanIsAvail будет:
-- Executing [116@default:1] Dial("IAX2/1001-13561", "SIP/1002&IAX2/1002") in new stack
[Feb 18 02:45:41] WARNING[14503]: app_dial.c:1183 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
[Feb 18 02:45:41] WARNING[14503]: app_dial.c:1183 dial_exec_full: Unable to create channel of type 'IAX2' (cause 3 - No route to destination)
WARNING-и в консоле (и лог файле) на ровном месте. По моей философии в нормально работающем продукте варнингов и ерроров быть не должно. Поэтому заставлять астериск ругаться там где этого можно не делать я не хочу.
2. Мне нужно отличать ситуацию "экстеншен не зарегистрирован на сервере" от иных причин его недоступности. Моя схема мне это позволяет.
еще раз повторю, ChanIsAvail можно выполнить было и без regcontext ... (но вы привели другой пример с "рабочего сервера". О проверке на доступность не было и речи)
dimas:
P.S. Я пока при выполнении своих задач ни разу не сталкивался с необходимостью использовать regcontext, в смысле того, чего бы я не смог сделать без него
Ну это уже вообще ни о чем. А кто-то скажет "я ни разу не встречал задачу для которой _обязательно_ бы требовался IAX. Все можно точно также сделать SIP'ом" и будет прав. А еше кто-то скажет то же самое про voip - у него ни разу не было ни одной задачи которой было не решить с помощью email. Каждому свое. Способы решения есть разные. Вам ближе один, мне другой.
Вы привели пример, прямо противополженный простоте, для решения одной задачи, аргументируя это появлением дополнительных строчек в консоли ! (к тому же пример, который ничего не убавляет, даже в своем рабочем варианте (до того, как вы предложили использовать ChanIsAvail))
Я понимаю, что сейчас наш разговор будет напоминать разговор слепого с глухим, и я не смогу вам (надеюсь только вам) доказать, что в Москву из Рязани проще и быстрее ехать не через Владивосток, даже если есть такой маршрут (рабочий вариант), но все же ...
Не знаю, может не прав, но считаю, что в коде, как и в подходе - ценится простота ... (IMHO)
P.S. Кстати, скажите, какую такую задачу вы выполняете с использованием regcontext`ов, которую нельзя выполнить без них? (если это конечно не секрет)
|
Сообщений: 866
|
Re: Сообщения о недоступности абонента
да нет, не нада считать себя хитрее других ... ) Это вы сейчас ищете рабочей вариант, склеивая ваши посты.
Еще раз повторюсь, "искать" рабочий вариант мне не нужно ибо оно УЖЕ работает больше года именно так как я написал.
Ваш пример, который вы привели против моего, был вообще не рабочий. Потом вы поправились.
Знаете, то что вариант не рабочий сказал я сам. Вы это только повторяете. Но если вас не затруднит - скажите пожалуйста ПОЧЕМУ он не рабочий. Тогда вы реально убедите что понимаете о чем речь а не переливаете из пустого в порожнее. За исключением синтаксических ошибок/опечаток если таковые есть. То есть чем ПОДХОД не рабочий.
самый простой способ, самому посмотреть, что менятся будет ...
Подобные обороты применяют когда нечего ответить по сути вопроса. Еще можно сделав многозначительное лицо говорить "то есть вы не знаете зачем подобное нужно? поняяяяяятно" и "что даже идей нет? о чем нам разговаривать... учите матчасть!". Предментее еси не трудно.
Вы привели пример, прямо противополженный простоте, для решения одной задачи, аргументируя это появлением дополнительных строчек в консоли! (к тому же пример, который ничего не убавляет, даже в своем рабочем варианте (до того, как вы предложили использовать ChanIsAvail))
Ваш пример это просто Dial по шаблону? Я уже написал - он будет сыпать варнингами на консоль и в лог при попытке звонка не экстеншен которй в данный момент не зарегистрирован.
Вопрос не в абстрактных "дополнительных строчках" на консоли а в наличии или отсутствии варнингов на ней. Мне казалось что уж хоть это я объяснил.
P.S. Кстати, скажите, какую такую задачу вы выполняете с использованием regcontext`ов, которую нельзя выполнить без них? (если это конечно не секрет)
во истину слепого с глухим. Я вам в предыдущем посте написал два пункта зачем мне комбинация regcontext+Chanavail. Подсказка - пункты в тексте пронумерованы (1 и 2)...
еще раз повторю, ChanIsAvail можно выполнить было и без regcontext ... (но вы привели другой пример с "рабочего сервера". О проверке на доступность не было и речи)
Там в комментариях к dial-user написано почему его нужно звать только для рельно зарегистрированных юзеров. ChanIsAvail можно выполнить и без regcontext - но это опять же варнинги в консоль. Для несуществующих номеров.
|
Откуда: UA
Сообщений: 127
|
Re: Сообщения о недоступности абонента
Спасибо. Не нужно из-за меня ссорится :)
Поставил такой вариант:
exten => _XXX,1,Macro(stdexten,,SIP/${EXTEN}&IAX2/${EXTEN})
Все работает отлично. На лог наплевать - это оффисная (внутренняя) АТС, там на логи никто смотреть не будет, пока совсем работать не перестанет :)
|
Сообщений: 1573
|
Re: Сообщения о недоступности абонента
dimas: Знаете, то что вариант не рабочий сказал я сам. Вы это только повторяете. Но если вас не затруднит - скажите пожалуйста ПОЧЕМУ он не рабочий. Тогда вы реально убедите что понимаете о чем речь а не переливаете из пустого в порожнее. За исключением синтаксических ошибок/опечаток если таковые есть. То есть чем ПОДХОД не рабочий.
:) - понял. Гуру здесь - один ...
dimas:
По хорошему нужно прописывать в sip.conf
regxontext = sipregs
в iax.conf:
regxontext = iaxregs
и делать что-то вроде
[sipusers]
includes => sipregs
exten => _XXX,2,Dial(SIP/${EXTEN})
exten => _XXX,n,Hangup
[iaxusers]
includes => iaxregs
exten => _XXX,2,Dial(IAX2/${EXTEN})
exten => _XXX,n,Hangup
[users]
includes => sipusers
includes => iaxusers
и кидать звонки уже в users
наверное будет вызываться только sip-юзер, даже если будет зарегистрирован iax-юзер?
Экзамен продолжается? ;)
(dimas, просьба - не считайте себя умнее, хитрее и т.д. других)
После вы предложили:
dimas: Единственно где перемудрил - нельзя делать разделение на sip/iax - надо и регистрировать в один контекст и инклюдить в один в котором Dial сразу и SIP и IAX делает. Ибо отдельными контекстами работать не будет.
так вот при таком раскладе "срать" будет еще больше, потому что обе команды Dial окажутся в одном контексте ... а главное, это только повторит мой (он же разработчиков *) вариант, только через ж...
dimas:
самый простой способ, самому посмотреть, что менятся будет ...
Подобные обороты применяют когда нечего ответить по сути вопроса. Еще можно сделав многозначительное лицо говорить "то есть вы не знаете зачем подобное нужно? поняяяяяятно" и "что даже идей нет? о чем нам разговаривать... учите матчасть!". Предментее еси не трудно.
вдруг скопипастить не получится, а перепишу так, что никто ничего не поймет ... Ведь такое бывает же ... ;)
А вообще, это не из области - "сам дурак"? ... )
dimas:
во истину слепого с глухим. Я вам в предыдущем посте написал два пункта зачем мне комбинация regcontext+Chanavail. Подсказка - пункты в тексте пронумерованы (1 и 2)...
еще раз повторю, ChanIsAvail можно выполнить было и без regcontext ... (но вы привели другой пример с "рабочего сервера". О проверке на доступность не было и речи)
Там в комментариях к dial-user написано почему его нужно звать только для рельно зарегистрированных юзеров. ChanIsAvail можно выполнить и без regcontext - но это опять же варнинги в консоль. Для несуществующих номеров.
вы хотите сказать, что WARNING в вашем случае не выскочит??? При попытке набрать не зарегистрированного в системе юзера ...
masters: Спасибо. Не нужно из-за меня ссорится :)
Это не ссора, а поиск истины ... )
|
|