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

Register expire timeot при использовании callbackextension

0

Здравствуйте коллеги.

Asterisk может регистрироваться как клиент на другом сервере (у оператора). Согласно рекомендации из документации http://doxygen.asterisk.org/trunk/Config_sip.html для этого применяется строка вида

register => [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][~expiry]

в секции [general] файлв sip.conf. Длительность регистрации при этом задается параметром в конце этой строки.

Но есть одно но. Этот метод регистрации не очень хорош когда астериск регистрирует несколько транков на одном сервере. В результате входящие от этого сервера приходят в первый зарегистрировавшийся транк что не очень удобно в статистике, отображении в FOP2 и т.д.

Решением проблемы является использование параметра callbackextension в описании пира. При этом строку регистрации в [general] задавать не надо, все регистрации создаются автоматически. Входящие при этом приходят правильно, в FOP2 все отображается где надо и т.д. Но некоторые операторы (типа Datagroup) при этом ругаются:

chan_sip.c: Got 423 Interval too brief for service 0441234567@natsip.datagroup.com.ua, minimum is 600 seconds

Вот собственно вопрос - где в этом случае задается время экспайра регистрации? Вроде уже всю документацию на эту тему до дыр зачитал - а как это сделать так и не понял.

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

спросил 2015-01-19 20:54:53 +0400

SolarW Gravatar SolarW
356 2 10

обновил 2015-01-19 21:04:32 +0400

Comments

ну тут всего два места,не? а вообще это все ерунда. большинство сервисов блочат аккаунт у которого перерегистрация меньше рекомендованой, ибо нефиг

meral ( 2015-01-20 00:37:26 +0400 )редактировать

Если не тяжело - можно пальцем ткнуть в эти два места?

Я в курсе про:

registertimeout - сколько времени ждать ответ на запрос о регистрации

registerattempts - количество попыток регистрации

Плюс еще три параметра, которые вроде для того, что надо

minexpiry = 60

maxexpiry = 3600

defaultexpiry = 120

но нифига не работают судя по тому, что:

Host dnsmgr Username Refresh State Reg.Time

natsip.datagroup.com.ua:5060 N 0441234567 585 Registered Mon, 19 Jan 2015 22:58:28

1 SIP registrations.

Откуда вылазят эти 585? Я их не задавал ни в одной настройке.

SolarW ( 2015-01-20 01:56:10 +0400 )редактировать

вылязят из ответа сервера на регистрацию. вы спрашиваете регистрацию, он вам отвечает и говорит до какого времени валидна(в данном случае скорее всего 600). а min/max это ВАША серверная часть. когда на вас регистрируются.

meral ( 2015-01-21 02:43:02 +0400 )редактировать

1 Ответ

0

Expire можно задать в строке с регистрацией в конце. Вы же сами привели из документации: [~expiry]

и вы точно не забываете выполнить sip reload после правки конфига ?

Ответ на ваш вопрос "откуда берется" можно получить подампав (tcpdump) (или sip set debug ip ...) пакеты REGISTER при регистрации номера и посмотреть на передаваемые значения expire.

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

ответил 2015-01-20 09:23:20 +0400

virus_net Gravatar virus_net flag of Russian Federation
302 1 6
http://www.mega-net.ru/

Comments

Или вы невнимательно прочитали, или я не очень внятно спросил.

Я не применяю для регистрации строку register => в секции [general] файла sip.conf в конце которой пишется expire, потому что это вызывает проблемы с идентификацией по какому транку пришел входящий в случае если я регистрирую несколько транков на одном сервере (у одного оператора).

Вместо этого я в описании транка указываю параметр callbackextension= при указании которого астериск автоматом создает регистрацию и при котором нет вышеописанной проблемы. Но вылазит другая проблема - я не знаю как указать registration expire в этом случае.

SolarW ( 2015-01-20 16:22:29 +0400 )редактировать

Спасибо за наводку на идею глянуть в дебаг :-)

Там действительно много интересного.

В пакете REGISTER оказалось что я шлю поле Expires: 120 (данные из параметра defaultexpire=120 раздела [general] файла sip.conf)

На что сервер провайдера отвечает мне

SIP/2.0 423 Interval Too Brief

Min-Expires: 600

На что мой астериск шлет еще один пакет REGISTER у которого уже Expires: 600

Но тут же пишет в лог, что:

NOTICE[2759]: chansip.c:23507 handleresponse_register: Outbound Registration: Expiry for natsip.datagroup.com.ua is 600 sec (Scheduling reregistration in 585 s)

Вот и выяснилось откуда взялось 585 сек.

SolarW ( 2015-01-20 16:48:38 +0400 )редактировать

ага. а вам говорил же что еще провайдер должен согласится с вашим експаир.

meral ( 2015-01-21 02:43:54 +0400 )редактировать

>то вызывает проблемы с идентификацией по какому транку пришел входящий

Не совсем понимаю о идентификации где ? Отправить в нужный контекст ? Для этого в register есть [/extension]

virus_net ( 2015-01-21 10:04:16 +0400 )редактировать

meral, да я в курсе что провайдер должен согласится. Я не зная что есть механизм запроса от провайдера / ответа от моего астериска нужного провайдеру экспайра. Ну и цифра 585 сек смущала...

virus_net, как минимум в двух местах. Во-первых в CDR отображаются входящие не по тому транку, во-вторых в FOP2 (и аналогах) отображается занятость не того транка. http://igorg.ru/2012/02/22/sip-trank-neskolko-uchyotok/ - вот у Игоря эта проблема описана. А звонок в нужный контекст для обработки без проблем уходит, с этим вопросов нет.

Так что вопрос пока остается открытым - как указать в настройках пира (а не глобально) время экспайра регистрации. Ибо судя по тому что я вижу параметр defaultexpire можно указывать только глобально, что делать не хотелось бы.

SolarW ( 2015-01-21 11:44:54 +0400 )редактировать

Про "проблему" слышал. Ответ на как задать без register не знаю.

FOP2 и аналоги не знаю и знать не хочу, пишу все сам, потому оно показывает всегда то что хочу я. С CDR тоже решаемый вопрос, если подумать и поколдовать, но это в "своем" астере. Что делать в "коробочном" я ХЗ.

Удачи.

virus_net ( 2015-01-21 23:03:57 +0400 )редактировать

в настроках пира никак.можно в конце регистрационой строки. а зачем в вам пире?пир все равно не регистрится.

meral ( 2015-01-22 02:52:50 +0400 )редактировать

meral, в том то и дело что при использовании callbackextention= в свойствах пира регистрируется как раз пир. А если при этом еще задать строку register => то получаются ДВЕ регистрации видимые по sip show registry

Попробуйте сами прописать callbackextention= в свойствах пира и посмотреть что при этом происходит.

SolarW ( 2015-01-22 13:22:02 +0400 )редактировать

в том то и дело, тчо это НЕ НАДО. просто поменяйте екстеншен в строке регистрации.

meral ( 2015-01-25 23:54:17 +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 ленту новостей

Статистика

Задан: 2015-01-19 20:54:53 +0400

Просмотрен: 5,831 раз

Обновлен: Jan 20 '15

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