Мы запускаем экземпляр FreeSwitch на хосте A, который отправляет исходящие вызовы экземпляру 3CX, запущенному на хосте B, используя модуль SOFIA.
Все работает нормально, за исключением зависания: пакет BYE, отправленный хостом A, не принимается хостом 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 установлен правильно:
BYE sip:<destination number>@<host B>:5059 SIP/2.0
Via: SIP/2.0/UDP <host A>:5059;rport;branch=z9hG4bKpB6QZ9aU643pH
Max-Forwards: 70
From: "pi" <sip:59@<host B>:5059>;tag=jXU3S8avD9tQH
To: <sip:<dest number>@<host B>:5059>;tag=4442ed0d
Call-ID: fac6951d-4ab5-123a-0d9b-dca632517e68
CSeq: 37449519 BYE
User-Agent: FreeSWITCH-mod_sofia/1.10.6-release-7-1ff9d0a60e~32bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY
Supported: timer, path, replaces
Proxy-Authorization: Digest username="59", realm="3CXPhoneSystem", nonce="414d535960cc5fda38:061e13fce3696c0ade88da4c548cab3a", algorithm=MD5, uri="sip:<dest number>@<host B>:5059", response="9d75bd5d59cc7b2111e005259d04aa65"
Reason: Q.850;cause=16;text="NORMAL_CLEARING"
Content-Length: 0
При проверке SIP-пакетов на стороне 3CX нам сказали, что пакет BYE вообще не должен быть авторизован, чтобы заставить его работать.
Итак, мы добавили следующую настройку в используемый профиль:
<param name="auth-all-packets" value="false"/>
Но София (или Freeswitch?) Тем не менее авторизует пакет BYE.
Кто-нибудь может нам помочь? Было бы здорово!
Для нашего сценария проблема может быть решена на стороне 3CX:
наша точка расширения была настроена как "конечная точка факса". После переключения ее на "обычную конечную точку voip" все заработало, как ожидалось. (не уверен в правильности терминологии 3CX)