Страница 1 из 1

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

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

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

Добавлено: 29 июл 2026, 13:59
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'ать из неё корректную причину разъединения и подставлять её в городскому абоненту ... Любая критика/подсказки приветствуются ... Возможно создать что-л. проще ...