Multiple dial-in users to initiate and communicate in the conference without web client user

Hi guys,

Is it possible to have multiple dial-in users to initiate and communicate in the conference; whether web client user joins or not?

I read in the forum about adding timeout on jigasi config and I already did that part. I would like to know if below scenario can work or not?

  • user 1 initiates the conference via dial-in.
  • user 2 dials in and joins the above conference.
  • Both user 1 and user 2 should be able to talk; whether user 3 from web joins or not.

In above scenario, if web user 3 joins, it works fine and I can see all 3 users can communicate; but what if user 3 doesn’t join?

Yes. That should be fine.

Thanks damien. I just tried the scenario above and I hear the ringing on 1 device and blank sound on another device for the dial-in users.

Also, I don’t see any jicofo side logs for the above scenario. Is that expected?

Anything here @damencho?

Nope. Check jigasi logs

Hi Damien,

I checked the jigasi logs and I can see logs and then at the end, I see:

2020-10-27 20:02:27.953 SEVERE: [199] org.jitsi.jigasi.JvbConference.registrationStateChanged().616 [ctx=16038433466132018671332] Registered bosh sid: ecf409fe-3fe9-44ea-937d-3e34c9cbafbb

However, the call still keeps ringing instead of blank voice (is it expected ?). Also, if another dial-in user joins the call, both users can not talk with each other unless web user joins the conference. Any help here.

Can you post your logs

Sure. Here are the logs:

Jigasi log when 1st dial in user initiates the meeting
2020-10-28 14:03:02.805 INFO: [55] org.jitsi.jigasi.SipGateway.incomingCallReceived().216 [ctx=16039081828041986617695] Incoming call received...

2020-10-28 14:03:02.805 INFO: [502] org.jitsi.jigasi.SipGatewaySession.run().1524 [ctx=16039081828041986617695] Wait thread cancelled

2020-10-28 14:03:02.805 INFO: [55] org.jitsi.jigasi.JvbConference.start().437 [ctx=16039081828041986617695] Starting JVB conference room: db78089d-db36-11ea-aaf6-0adbb24bf6fc@conference.domain.com

2020-10-28 14:03:02.806 INFO: [55] org.jitsi.jigasi.JvbConference.setXmppProvider().576 [ctx=16039081828041986617695] Using ProtocolProviderServiceJabberImpl(Jabber:73f064b2@domain.com/73f064b2)

2020-10-28 14:03:02.808 INFO: [504] org.igniterealtime.jbosh.BOSHClient.init() Starting with 1 request processors

2020-10-28 14:03:02.824 INFO: [504] impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.registrationStateChanged().127 Jingle : ON 

2020-10-28 14:03:02.824 INFO: [504] org.jitsi.jigasi.JvbConference.registrationStateChanged().627 [ctx=16039081828041986617695] Registering XMPP.

2020-10-28 14:03:02.840 INFO: [504] impl.protocol.jabber.ProtocolProviderServiceJabberImpl.authenticated().2423 Authenticated: false

2020-10-28 14:03:02.842 INFO: [504] org.jitsi.jigasi.JvbConference.joinConferenceRoom().714 [ctx=16039081828041986617695] Joining JVB conference room: db78089d-db36-11ea-aaf6-0adbb24bf6fc@conference.domain.com

2020-10-28 14:03:03.223 SEVERE: [504] org.jitsi.jigasi.JvbConference.inviteFocus().1456 [ctx=16039081828041986617695] Could not invite the focus to the conference

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPP error reply received from focus.domain.com: XMPPError: remote-server-not-found - cancel. Generated by auth.domain.com

at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:132)

at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:263)

at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:214)

at org.jitsi.jigasi.JvbConference.inviteFocus(JvbConference.java:1450)

at org.jitsi.jigasi.JvbConference.joinConferenceRoom(JvbConference.java:793)

at org.jitsi.jigasi.JvbConference.registrationStateChanged(JvbConference.java:606)

at net.java.sip.communicator.service.protocol.AbstractProtocolProviderService.fireRegistrationStateChanged(AbstractProtocolProviderService.java:187)

at net.java.sip.communicator.service.protocol.AbstractProtocolProviderService.fireRegistrationStateChanged(AbstractProtocolProviderService.java:141)

at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:1389)

at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:970)

at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.initializeConnectAndLogin(ProtocolProviderServiceJabberImpl.java:795)

at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.register(ProtocolProviderServiceJabberImpl.java:500)

at org.jitsi.jigasi.util.RegisterThread.run(RegisterThread.java:59)

2020-10-28 14:03:03.232 SEVERE: [504] org.jitsi.jigasi.JvbConference.registrationStateChanged().616 [ctx=16039081828041986617695] Registered bosh sid: 1def2cdf-b40a-4a8e-8ea9-7a17e2ee7793
Jigasi log when 2nd dial in user joins the same meeting

Similar logs as above with the new log as below:

2020-10-28 14:03:38.296 INFO: [513] impl.protocol.jabber.ChatRoomJabberImpl.joined().1256 db78089d-db36-11ea-aaf6-0adbb24bf6fc@conference.domain.com/39029006 has joined the db78089d-db36-11ea-aaf6-0adbb24bf6fc@conference.domain.com chat room.

After a minute, both calls drops away. Meantime, if web user joins the same meeting, everything works fine.

This is your problem … not sure why is that, though … why is that coming from auth.domain.com … for some reason the domain for the focus is wrong …

Try setting to your sip account properties:
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.DOMAIN_BASE=domain.com

Although you should be sending this with the custom sip headers.

I am already passing custom sip headers, so it should be fine over there.

Regarding incorrect focus, I have a multiple domain VirtualHost and domain1 focus is being used for both domain1 and domain2 vhosts. I think, thats the reason it is throwing this error, however works fine if web user joins. If that’s not how the focus should be configured, what should it be?

Jigasi is inviting wrong jicofo and why both jigasi users cannot hear each other is that they are in the same room but jicofo is not there and when webs and invites correctly jicofo there it works.

I see. I got it what you said. I am having focus for domain1 and trying to dial-in for domain2. So, basically, I am trying to use domain1 as my focus user. However, if this is so, how the multiple vhost configuration can have multiple focuses? Single Jicofo service will be running and that can be either for focus of domain1 or focus of domain2. In that case, how we will know which focus to configure for both vhosts?

Alright. So, I modified the configs to use focus component of the domain2 for which I am trying to dial-in. It seems to be working now. But, now, the similar issue (as above) will happen for my domain1 (vHost1) on the same VM, because, now it is using focus of vHost2 and not vHost1.

I am not sure, if this is a bug or I am doing something wrong. But, it will be great if you can let me know what focus we should be using for multiple vHosts configuration.

In jicofo config file, we set and fix HOSTNAME. What should we set for multiple vHosts? can we have two separate config files for jicofo?

# Jitsi Conference Focus settings

# sets the host name of the XMPP server

JICOFO_HOST=localhost

# sets the XMPP domain (default: none)

#JICOFO_HOSTNAME=vhost1-domain

JICOFO_HOSTNAME=vhost2-domain

# sets the secret used to authenticate as an XMPP component

#JICOFO_SECRET=focus_secret_for_vhost1-domain

JICOFO_SECRET=focus_secret_for_vhost2-domain

# sets the port to use for the XMPP component connection

JICOFO_PORT=5347

# sets the XMPP domain name to use for XMPP user logins

JICOFO_AUTH_DOMAIN=auth.vhost1-domain

# sets the username to use for XMPP user logins

JICOFO_AUTH_USER=focus

# sets the password to use for XMPP user logins

JICOFO_AUTH_PASSWORD=<password_vhost1-domain>

# extra options to pass to the jicofo daemon

JICOFO_OPTS=""

# adds java system props that are passed to jicofo (default are for home and logging config file)

JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties"

I read here that @saghul mentioned we can share internal auth, but how about domains? How to configure both?

Hi @damencho / @saghul,

It will be great if anyone can let me know what HOSTNAME should I be using in Jicofo config for multiple vHosts setup?

domain1 or domain2 or both? If both, how can I mention both.

Please let me know, because if this doesn’t work out, I will have to revert back to single host setup. Thanks

Jicofo can use only one hostname.

Jigasi should be able to serve several domains at once based on the domain_base header.

I’m not sure from where is your problem coming.
Jigasi takes domain_base to construct the address to invite jicofo, if you are getting that error means jigasi had connected to wrong deployment. The deployment to connect to is again based on the domain coming from domain base header, and that is used to construct the correct bosh url. Probably your bosh url in the settings is wrong and does not contain the domain param.
The setting should be exactly as this without any changes org.jitsi.jigasi.xmpp.acc.BOSH_URL_PATTERN=https://{host}{subdomain}/http-bind?room={roomName}

Phew! Awesome, this was the thing I was having it wrong. I did not know we need to pass focus user in the domain_base. I was passing the vHost domain over there (which was not the focus user). I tried just now with focus domain header and it worked. Thanks damien.!

The only issue I am facing is that the first dial-in user keeps ringing till another dial-in or web user joins. I checked original jitsi where, it stays quiet, when the first dial-in user initiates the conference. Is it some config to be changed to not keep ringing and just stay quiet while initiating the conference?

I’m not sure what you did, but in the goes domain1.com or domain2.com, the same DNS that you will use to open the webpage …

This is most probably on the sip side setting, the call is not answered till another participant joins.

I see. Things are getting complicated for me because of haproxy multiple shards multiple vHosts architecture :zipper_mouth_face:

Sure, I will check this out on our sip side.

I would like to ask 1 more thing that while passing room name in header like roomname@conference.domain.com, what should be the domain in that case? Whether it should be haproxy domain and automatically figure out the actual domain from the stick table mapping or it should be actual vHost domain itself that we should pass from our sip?

This should be the domain on the shard you land.
As there in prosody is configured this muc component.