Мы запускаем экземпляр FreeSwitch на хосте A, который выполняет исходящие вызовы на экземпляр 3CX, работающий на хосте B, используя модуль SOFIA.
Все работает нормально, за исключением зависания: Пакет BYE, отправленный хостом А, не принимается 3CX-хостом с неизвестным пользователем 404.
После первого (рабочего) звонка больше нельзя инициировать звонки, так как линия занята, пока мы не перезапустим весь freeswitch-сервис.
Шлюз настроен так:
<include>
<gateway name="default">
<param name="realm" value="<host B>:5059"/>
<param name="username" value="59"/>
<param name="password" value="<the password>"/>
<param name="register-transport" value="udp"/>
<param name="extension" value="59"/>
<param name="from-user" value="59"/>
<param name="expire-seconds" value="800"/>
<param name="register" value="true"/>
<param name="register-transport" value="udp"/>
<param name="context" value="public"/>
<param name="caller-id-in-from" value="falseâ/>
<param name="extension-in-contact" value="true"/>
<param name="cid-type" value="rpid"/>
</gateway>
</include>
Авторизация работает на всех остальных пакетах, кроме BYE.
Также мы включили SIP-трассировку и проверили правильность установки заголовка Proxy-Athorization:
ПОКА sip:<номер назначения>@<хост B>:5059 SIP/2.0
Через: SIP/2.0/UDP <host A>:5059;rport;branch=z9hG4bKpB6QZ9aU643pH
Максимальное количество нападающих: 70
От кого: "pi" <sip:59@<host B>:5059>;tag=jXU3S8avD9tQH
Кому: <sip:<номер назначения>@<хост B>:5059>;tag=4442ed0d
Идентификатор вызова: fac6951d-4ab5-123a-0d9b-dca632517e68
CSeq: 37449519 ПОКА
Агент пользователя: FreeSWITCH-mod_sofia/1.10.6-release-7-1ff9d0a60e~32bit
Разрешить: ПРИГЛАШАТЬ, ПОДТВЕРЖДАТЬ, ПОКА, ОТМЕНА, ВАРИАНТЫ, СООБЩЕНИЕ, ИНФОРМАЦИЯ, ОБНОВЛЕНИЕ, РЕГИСТРАЦИЯ, РЕФЕР, УВЕДОМЛЕНИЕ
Поддерживается: таймер, путь, замена
Прокси-авторизация: дайджест username="59", realm="3CXPhoneSystem", nonce="414d535960cc5fda38:061e13fce3696c0ade88da4c548cab3a", алгоритм=MD5, uri="sip:<номер назначения>@<хост B>:5059", response=" 9d75bd5d59cc7b2111e005259d04aa65"
Причина: Q.850;cause=16;text="NORMAL_CLEARING"
Длина содержимого: 0
Проверяя SIP-пакеты на стороне 3CX, нам сказали, что пакет BYE вообще не нужно авторизовать, чтобы он заработал.
Поэтому мы добавили следующую настройку в используемый профиль:
<param name="auth-all-packets" value="false"/>
Но София (или Freeswitch?) тем не менее разрешает пакет BYE.
Кто-нибудь может нам помочь? Это было бы здорово!