BelledonneCommunications / flexisip

Linphone.org mirror for flexisip (git://git.linphone.org/flexisip.git)
http://flexisip.org
GNU Affero General Public License v3.0
150 stars 74 forks source link

Chat Groups including external participants is impossible #199

Open Gorbas opened 1 month ago

Gorbas commented 1 month ago

Problem description

When I try to create a new Chat Group that includes "external" SIP addresses using my Linphone clone app, I see that Flexisip Proxy forwards the SIP messages to my external SIP server and my SIP server replies back with "OK" and "NOTIFY" messages. However, the Linphone app fails to create the group.

Is there anything that I am missing in my configuration or in the exchanged messages?

SETUP

I have setup my Flexisip server using two domains:

The "external" SIP accounts will be managed by a separate SIP service that listens on port 6060 of the same VM as Flexisip.

I have also configured the follwoing Flexisip route (routes.conf), so that Flexisip Proxy forwards the SIP messages to my external SIP server:

<sip:127.0.0.1:6060;tansport=tcp> to.uri.domain == 'extsip.mydomain.com'

EXCHANGED MESSAGES

Flexisip Proxy forward to my external SIP

SUBSCRIBE sip:+12344051262@extsip.mydomain.com SIP/2.0
Via: SIP/2.0/UDP siptst.mydomain.com;rport=5060;branch=z9hG4bK.r6Fp2HSB5F0FjpZUprFjU942QF;received=5.78.111.77
Via: SIP/2.0/TCP siptst.mydomain.com:6064;alias;branch=z9hG4bK.D85AAHnO1;rport=57532;received=5.78.111.77
Record-Route:  <sip:siptst.mydomain.com:5060;lr>,  <sip:siptst.mydomain.com:5060;transport=tcp;lr>
From:  <sip:conference-focus@siptst.mydomain.com>;tag=LUE6Qk12N
To:  <sip:+12344051262@extsip.mydomain.com>
CSeq: 20 SUBSCRIBE
Call-ID: wqXGL5P6GC
Max-Forwards: 69
Supported: replaces, outbound, gruu, path
Event: reg
Expires: 600
Contact:  <sip:5.78.111.77:57532;transport=tcp>;+org.linphone.specs="ephemeral/1.1,groupchat/1.2"
Accept: application/reginfo+xml
User-Agent: Flexisip-conference/2.4.0-beta-113-g9691f2da
Content-Length: 0
Route:  <sip:127.0.0.1:6060;tansport=tcp;lr>

My external SIP sends back to Flexisip PROXY [200 OK]

SIP/2.0 200 OK
Via: SIP/2.0/UDP siptst.mydomain.com;rport=5060;branch=z9hG4bK.r6Fp2HSB5F0FjpZUprFjU942QF;received=5.78.111.77
Via: SIP/2.0/TCP siptst.mydomain.com:6064;alias;branch=z9hG4bK.D85AAHnO1;rport=57532;received=5.78.111.77
To:  <sip:+12344051262@extsip.mydomain.com>;tag=456789abcdef
From:  <sip:conference-focus@siptst.mydomain.com>;tag=LUE6Qk12N
Call-ID: wqXGL5P6GC
CSeq: 20 SUBSCRIBE
Record-Route:  <sip:siptst.mydomain.com:5060;lr>,  <sip:siptst.mydomain.com:5060;transport=tcp;lr>
Expires: 3600
Content-Length: 0

My external SIP sends back to Flexisip PROXY [NOTIFY]

NOTIFY sip:conference-focus@siptst.mydomain.com SIP/2.0
Via: SIP/2.0/TCP 127.0.0.1:6060;branch=z9hG4bK382149;received=5.78.111.77;rport=34272
Via: SIP/2.0/UDP siptst.mydomain.com;rport=5060;branch=z9hG4bK.FSaH1pHHrB4QtXD78av8pXre8H;received=5.78.111.77
Via: SIP/2.0/TCP siptst.mydomain.com:6064;alias;branch=z9hG4bK.3Xyuzp6pH;rport=35760;received=5.78.111.77
To: <sip:conference-focus@siptst.mydomain.com>;tag=xhM01g2m2
From: <sip:+12344051262@extsip.mydomain.com>;tag=456789abcdef
Call-ID: KuFq~s~QVS
CSeq: 1 NOTIFY
Contact: <sip:+12344051262@extsip.mydomain.com>;+org.linphone.specs="conference/1.0,ephemeral/1.1,groupchat/1.2,lime"
Event: reg
Subscription-State: active;expires=3600
Content-Type: application/reginfo+xml
User-Agent: 4F SIP Bridge
Content-Length: 1092

<?xml version="1.0"?>
<reginfo xmlns="urn:ietf:params:xml:ns:reginfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0" state="full">
    <registration aor="sip:+12344051262@extsip.mydomain.com" id="af8c26cf62e5c62af32265fdb84ca2aec" state="active">
        <contact id="cf8c26cf62e5c62af32265fdb84ca2aec" state="active" event="registered" duration-registered="3600" q="0.8" expires="3600">
            <uri>sip:+12344051262@extsip.mydomain.com</uri>
            <display-name>+12344051262</display-name>
            <unknown-param name="+org.linphone.specs">conference/1.0,ephemeral/1.1,groupchat/1.2</unknown-param>
        </contact>
    </registration>
</reginfo>
Failxxx commented 1 month ago

Hello @Gorbas, Thank you for taking time to report a problem with Flexisip.

Here is the procedure to implement interoperability between two domains : documentation. Can you please follow these instructions and let me know if it helped?

Sincerely, Félix.

Gorbas commented 1 month ago

Thank you @Failxxx , I will test this approach and I will update you.

It should be noted that the "external" participants are not actual SIP Clients, but in fact an SIP Bridge will forward messages using Inbound & Outbound SMS/MMS

Gorbas commented 1 month ago

Hi @Failxxx ,

I checked that I already had applied this configuration.

Have you tested integration to external domains using RFC4579?

Is there something that I should include to my NOTIFY messages to make it work or could I somehow make Flexisip allow participation of any SIP address to group chats without checking that they are actually registered?

Sincerely, George A.

Failxxx commented 3 weeks ago

Hi @Gorbas, I confirm that Flexisip conference follows the concepts of RFC4579 and should support integration to external domains.

However, I would need more information to better understand the issue you are facing here. Did you find what is the problem? What is the cause of the failure to create a chat room? Can you please provide more information?

Sincerely, Félix.

Gorbas commented 3 weeks ago

@Failxxx I have postponed the implementation of Group Chat support for now. I will send you as soon as I will continue working on it.

May I keep this issue open?

Best, George A.

Failxxx commented 2 weeks ago

Alright, no problem. I also recommend you to get in touch with our commercial team : https://www.linphone.org/contact We may have plans (support, Dev-assist, etc.) that would fit your needs in order to implement group chat support on your infrastructure.

Félix.