Как разрешить или пройти (повторно) пригласить в диалплане Freeswitch - PullRequest
0 голосов
/ 02 ноября 2018

В диалплане freeswitch я создаю расширение debug_001 и подключаюсь к другому экземпляру freeswitch.

<extension name="debug_001">
         <condition field="destination_number" expression="^\+(49301234567)$">
            <action application="export" data="sip_invite_params=user=phone"/>
            <action application="export" data="sip_cid_type=pid"/>
            <action application="export" data="t38_passthru=true"/>
            <action application="export" data="sip_from_uri=${sip_from_uri}"/>
            <action application="bridge" data="sofia/gateway/FS2/$1"/>
         </condition>
</extension>

Это прекрасно работает, расширение соответствует в правильном случае, и вызов соединяется с FS2. Но в случае, если экземпляр FS2 отправляет повторное посещение экземпляра FS1, не соединяйте (re) inivte с ​​вызывающей стороной. При повторном включении устанавливается настраиваемое поле заголовка, которое мы хотим проанализировать на сайте вызывающего абонента.

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

Ladderdiagram

Или более подробно с этой диаграммой:

SIP Flow

FS1 не соединяет повторное посещение с вызывающей стороной. Возможно, обновление было проанализировано как keepalive между FS1 и FS2, потому что ничего не изменилось в SDP или чем-то еще, вставлен только пользовательский заголовок. Какое действие я должен определить для (повторного) приглашения в любом случае?

Я думаю, что проблема в том, что Freeswitch обходит (повторно) приглашение, только если SDP (повторного) приглашения был изменен, в этом случае SDP не является дифференцированным, и софия указывает это как Duplicate SDP, как вы можете видеть здесь:

fac8529a-e0d9-11e8-91c6-0d38c130bd96 2018-11-05 10:05:46.508841 [DEBUG] sofia.c:7048 Channel sofia/external/49301234567 entering state [ready][200]
fac8529a-e0d9-11e8-91c6-0d38c130bd96 2018-11-05 10:05:46.508841 [NOTICE] sofia.c:8123 Channel [sofia/external/49301234567] has been answered
fac8529a-e0d9-11e8-91c6-0d38c130bd96 2018-11-05 10:05:46.508841 [DEBUG] switch_channel.c:3773 (sofia/external/49301234567) Callstate Change EARLY -> ACTIVE
fac8529a-e0d9-11e8-91c6-0d38c130bd96 2018-11-05 10:05:46.568848 [DEBUG] switch_rtp.c:7254 Correct audio ip/port confirmed.
fac8529a-e0d9-11e8-91c6-0d38c130bd96 2018-11-05 10:05:54.228841 [DEBUG] sofia.c:7048 Channel sofia/external/49301234567 entering state [received][100]
fac8529a-e0d9-11e8-91c6-0d38c130bd96 2018-11-05 10:05:54.228841 [DEBUG] sofia.c:7055 Duplicate SDP
fac8529a-e0d9-11e8-91c6-0d38c130bd96 v=0
fac8529a-e0d9-11e8-91c6-0d38c130bd96 o=- 1541408745 2 IN IP4 10.1.11.10
fac8529a-e0d9-11e8-91c6-0d38c130bd96 s=-
fac8529a-e0d9-11e8-91c6-0d38c130bd96 c=IN IP4 10.1.11.10
fac8529a-e0d9-11e8-91c6-0d38c130bd96 b=AS:64
fac8529a-e0d9-11e8-91c6-0d38c130bd96 t=0 0
fac8529a-e0d9-11e8-91c6-0d38c130bd96 m=audio 10374 RTP/AVP 8 101
fac8529a-e0d9-11e8-91c6-0d38c130bd96 a=rtpmap:8 PCMA/8000
fac8529a-e0d9-11e8-91c6-0d38c130bd96 a=rtpmap:101 telephone-event/8000
fac8529a-e0d9-11e8-91c6-0d38c130bd96 a=ptime:20

Поэтому мне нужно решение, чтобы софия отправляла также дублированные SDP или чтобы София также проанализировала поле настраиваемого заголовка в заголовке (пере) приглашения. В этом билете JIRA Брайан Уэст писал, что это поведение является функцией прокси, а Freeswitch не является прокси. Но в нашем случае SDP - то же самое, но настраиваемое поле заголовка является другим, поэтому оно не является прокси-поведением и должно быть обойдено для другого Call-Leg.

...