VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Вход

Как откорректировать причину разъединения, прилетевшую через IAX2 ?

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: Glukinho, Zavr2008, Glukinho, Zavr2008

Ответить
Аватара пользователя
Reader
Сообщения: 154
Зарегистрирован: 24 апр 2013, 10:35

Как откорректировать причину разъединения, прилетевшую через IAX2 ?

Сообщение Reader »

Неожиданно столкнулся с такой проблемой: при трансляции сигнала отбоя от одной АТС Asterisk до другой АТС Asterisk по протоколу IAX2 значение причины разъединения меняется на другое. В результате городской абонент, позвонивший моему локальному абоненту (из города) вместо сигнала разъединения Busy вдруг получает сигнал разъединения Unanswer ! Схему организации звонка прикрепил (*.pdf). Долго не мог поверить вообще в эту проблему, пока сам не проверил: взял городской стационарный телефон и позвонил на свой локальный телефон. Перед этим занял свой локальный телефон общением с автоответчиком (добился разговорного состояния). И поскольку на моём локальном телефоне всего одна линия, то при звонке на него из города я ожидал услышать занято (Busy). Но нет - услышал специальный трёхтональный сигнал "у-лю-лю" (Unanswer). Сильно удивился. Поставил трассировку по диалплану на своей городской АТС и на своей локальной АТС. И повторил этот же проверочный звонок. Локальная АТС честно показала причину разъединения Hangup(17) "Busy". В тот же самый момент вышестоящая городская АТС Asterisk показала Hangup(18) "Unanswer" ! Без объяснения причин. Проверил навскидку ещё несколько входящих звонков на локальных абонентов. Локальная АТС при этом каждый раз выдавала корректную причину отбоя. Однако вышестоящая городская АТС несколько раз ошиблась в выдаче причины разъединения. Такое никуда не годится. Подскажите пож. - как бы можно было бы влоб (или обходными путями) помочь локальной станции Asterisk-Local передать вышестоящей станции Asterisk-City корректную причину разъединения ? А соответственно бы городскому Астериску вставить полученную корректную причину разъединения в контекст выдачи причины разъединения.
Вложения
Схема организации звонка.pdf
(1.39 МБ) 49 скачиваний
Уж лучше колымить в Гондурасе, чем гондурасить на Колыме !
Аватара пользователя
Reader
Сообщения: 154
Зарегистрирован: 24 апр 2013, 10:35

Re: Как откорректировать причину разъединения, прилетевшую через IAX2 ?

Сообщение Reader »

Забыл указать, оба Астериска (городской и локальный) имеют версии 16. Правда один - голый Астериск (локальный), другой - ванильный (городской - Issabel). Оба обновлял, перезагружал, перепроверял файрволлы, даже игрался параметром qualify=yes or no - одинаково всё плохо. Точнее качество звука близко к идеальному, скорость дозвона молниеносная, разговорное состояние - стабильное. А вот городской Астериск получает от локального Астериска через IAX2 некорректную причину разъединения ! И это никуда не годится. Перейти с IAX2 на SIP (в котором сигнал отбоя точно передаётся без искажений) я не могу, т.к. между Asterisk-Local и Asterisk-City располагаются чужие сети с NAT, с которыми у SIP бывают проблемы. Зато IAX2 соединяет оба моих Астериска идеально. Остаётся придумать - как бы научить эти 2 Астериска обмениваться точной причиной разъединения ... В голову приходит постоянно идея примонтировать к Asterisk-Local RAM-disc, создать в нём файл, в который заставить Asterisk-Local на автомате при окончании каждого соединения записывать корректную причину разъединения. Затем сделать папку с файлом причин разъединения на Asterisk-Local доступной для Asterisk-City. И в контексте Астериска-City прописать обязанность автоматически импортировать этот файлик из общей папки Астериска-Local и вы'grep'ать из неё корректную причину разъединения и подставлять её в городскому абоненту ... Любая критика/подсказки приветствуются ... Возможно создать что-л. проще ...
Уж лучше колымить в Гондурасе, чем гондурасить на Колыме !
Glukinho
Сообщения: 665
Зарегистрирован: 07 янв 2011, 20:05

Re: Как откорректировать причину разъединения, прилетевшую через IAX2 ?

Сообщение Glukinho »

Запустите на двух астерисках sngrep и iax debug, проведите тест.
Выпишите, кто кому что отвечает: что приходит от телефона, когда он якобы занят, что уходит в IAX транк, что приходит на второй астериск, что уходит дальше.
Только без "у-лю-лю", а конкретные SIP коды и IAX сообщения.
Сразу должно стать попонятнее, что да как. Например, сейчас я три раза прочитал - так и не понял, что происходит.
ded
Сообщения: 15643
Зарегистрирован: 26 авг 2010, 19:00

Re: Как откорректировать причину разъединения, прилетевшую через IAX2 ?

Сообщение ded »

Я понял. Тест входящего вызова:
взял городской стационарный телефон и позвонил на свой локальный телефон. Перед этим занял свой локальный телефон общением с автоответчиком (добился разговорного состояния). И поскольку на моём локальном телефоне всего одна линия, то при звонке на него из города я ожидал услышать занято (Busy).
Думаю, что вопрос к оператору связи, через которого заведён транк на Астериск.
На вашей стороне (раз ваш Астериск честно отправляет Busy) всё работает как надо.
как бы можно было бы влоб (или обходными путями) помочь локальной станции Asterisk-Local передать вышестоящей станции Asterisk-City корректную причину разъединения ?
строго говоря - передача сигнализации Busy - это не разъединение.
Но как указано было выше - смотрите передаваемые коды сигнализации.
Ответить
© 2008 — 2026 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH