Setup guide for SIP dial-in, conflicting info

@damencho
Do you have any clue on what I can work on to clear this new error? Some logfile that could contain the valued information?

Ok, some part of the discussion happened in private because I had to share sensitive information…But this is no help for the community… (thanks a lot to you @damencho)

Sticking issue:

SEVERE: [88] impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin().1003 Failed to connect to XMPP service

org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized

I still have issues with having no audio, but I had a major breakthrough today as I was able to make my phone ring and connect to a meeting… Now I have to sort-out the audio bit…

Don’t forget that all my issues so far exist because I am using a secure domain

So, steps I did to get to this near-working state:

  1. PURGE everything that had the name “jigasi” on my server, leave no trace of it.

  2. Reinstall jigasi with the apt install jigasi command

  3. in /etc/jitsi/jigasi/sip-communicator.properties, uncomment the following lines and fill:
    org.jitsi.jigasi.xmpp.acc.USER_ID=[username]@auth.[domain_name]
    org.jitsi.jigasi.xmpp.acc.PASS=[PASSWORD_in plain text]
    org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
    org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true

The bit that had made it not working was that I registered the username in prosody using the “register” method… and that is wrong! What I had to do was use the adduser JID method

so:
5. prosodyctl adduser [username]@auth.[domain_name]
Enter the same password as before twice, and you are done!!!

Authentication with xmpp was solved after that… yay!

Now the sound part… I’m going in!

Make sure you leave only the codecs supported by your sip side.

Says the man who knows what he is talking about! :stuck_out_tongue:

I will investigate that… Unless you happen to know what protocols are used by voip.ms ?

audio codecs you need, not protocols :slight_smile: No idea, every provider is different …

https://wiki.voip.ms/article/Codecs_Supported

Leave just G.711, g729 is proprietary and you need license, the other one is not performing very well … If I remember the reports and is not widely used.

In what file am I supposed to enter these values? (or comment-out other unused codecs)

You need to leave just this one: https://github.com/jitsi/jigasi/blob/master/jigasi-home/sip-communicator.properties#L35
And put the rest as 0, don’t comment them, but set them as 0 priority.

Again, this question went in private with @damencho for sensitive information concerns.

If someone can help, I would greatly appreciate it! It would seem that the server does not send nor receive data on the RTP ports (10000 - 20000)

I tried fully opening the ports with ufw and made sure that they were not listed in fail2ban and still, no audio. If I try it with the jitsi-desktop app, it connects fine and sound works nicely. It is something with the server… I am at a lost!

Hi Damian, sorry for reviving this old post, but wouldn’t it be more suitable to leave the Dialin participants for an unopened room in the ringing state, instead of connecting them? During that time the IVR can play an announcement in a loop, that the room hasn’t yet been opened by the administrator. As soon as the administrator opens the room, jigasi will connect the calls by sending a 200 OK SIP message.
The Caller always has the possibility to hang up, if he doesn’t like to wait any longer. It could be necessary that jigasi sends a 183 call progress message once in a while to keep the VoIP Provider / IVR happy.

Greetings
Tom

I don’t think the call connects without anyone joining … It connects once there is a second participant

Well unfortunately it does and I have this behaviour in two separate installations. Maybe I didn’t write it detailled enough. It is not connecting to the room, just sending a 200 “Ok” (which is called a Connect in the PSTN world).
This is what you stated yourself:

Here is the anonymized wireshark trace showing the ok at 11:06:15,080885852

Time                            Source       Destination   Protocol   Info
2021-02-04 11:05:44,903914122   Provider     Jitsi         SIP/SDP    Request: INVITE sip:jitsi@10.10.10.10:5060;transport=udp;registering_acc=jitsi_provider_com | 
2021-02-04 11:05:44,911520641   Jitsi        Provider      SIP        Status: 180 Ringing | 
2021-02-04 11:05:45,412834339   Jitsi        Provider      SIP        Status: 180 Ringing | 
2021-02-04 11:05:46,412517462   Jitsi        Provider      SIP        Status: 180 Ringing | 
2021-02-04 11:05:48,412166699   Jitsi        Provider      SIP        Status: 180 Ringing | 
2021-02-04 11:06:00,077960412   Jitsi        Provider      SIP/SDP    Status: 200 OK | 
2021-02-04 11:06:00,091741467   Provider     Jitsi         SIP        Request: ACK sip:jitsi@10.10.10.10:5060;transport=udp;registering_acc=jitsi_provider_com | 
2021-02-04 11:06:15,075841472   Jitsi        Provider      SIP        Request: BYE sip:TFDUS001@10.10.10.2:5060 | 
2021-02-04 11:06:15,080885852   Provider     Jitsi         SIP        Status: 200 OK | 

In the jigasi log you can see the SIP connect:

2021-02-04 11:05:44.908 INFO: [456] org.jitsi.jigasi.SipGateway.incomingCallReceived().216 [ctx=16124331449081630436579] Incoming call received...
2021-02-04 11:05:44.908 INFO: [458] org.jitsi.jigasi.SipGatewaySession.run().1720 [ctx=16124331449081630436579] Wait thread cancelled
2021-02-04 11:05:44.909 INFO: [456] org.jitsi.jigasi.JvbConference.start().490 [ctx=16124331449081630436579] Starting JVB conference room: MyRoom
2021-02-04 11:05:44.910 INFO: [456] org.jitsi.jigasi.JvbConference.setXmppProvider().633 [ctx=16124331449081630436579] Using ProtocolProviderServiceJabberImpl(Jabber:120f2d70@myroom.example.com/120f2d70)
2021-02-04 11:05:44.986 INFO: [460] impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.registrationStateChanged().127 Jingle : ON
2021-02-04 11:05:44.987 INFO: [460] org.jitsi.jigasi.JvbConference.registrationStateChanged().684 [ctx=16124331449081630436579] Registering XMPP.
2021-02-04 11:05:45.004 INFO: [460] impl.protocol.jabber.ProtocolProviderServiceJabberImpl.authenticated().2423 Authenticated: false
2021-02-04 11:05:45.022 INFO: [460] org.jitsi.jigasi.JvbConference.joinConferenceRoom().775 [ctx=16124331449081630436579] Joining JVB conference room: MyRoom@conference.myroom.example.com
2021-02-04 11:05:45.067 SEVERE: [460] org.jitsi.jigasi.JvbConference.inviteFocus().1738 [ctx=16124331449081630436579] Could not invite the focus to the conference
org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPP error reply received from focus.myroom.example.com: XMPPError: not-authorized - auth
        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:1732)
        at org.jitsi.jigasi.JvbConference.joinConferenceRoom(JvbConference.java:856)
        at org.jitsi.jigasi.JvbConference.registrationStateChanged(JvbConference.java:663)
        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)
2021-02-04 11:06:00.076 INFO: [141] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1003 Dynamic PT map: 101=rtpmap:-1 telephone-event/8000;
2021-02-04 11:06:00.076 INFO: [141] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1020 PT overrides []
2021-02-04 11:06:00.078 INFO: [141] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1682 [ctx=16124331449081630436579] SIP peer state: Connecting*
2021-02-04 11:06:00.093 INFO: [474] org.jitsi.jigasi.SipGatewaySession.handleCallState().1599 [ctx=16124331449081630436579] Sip call IN_PROGRESS: Call: id=16124331449071809192851 peers=1
2021-02-04 11:06:00.093 INFO: [474] org.jitsi.jigasi.SipGatewaySession.handleCallState().1608 [ctx=16124331449081630436579] SIP call format used: rtpmap:8 PCMA/8000
2021-02-04 11:06:00.093 INFO: [474] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1682 [ctx=16124331449081630436579] SIP peer state: Connected
2021-02-04 11:06:00.093 INFO: [474] service.protocol.media.CallPeerMediaHandler.start().1961 Starting

Does jitsi really have to through an exception when it gets an XMPPError: not-authorized - auth, because of a not yet opened room?

Then you can see, that jitsi wants to play something, but due to some reason it can’t handle G.711 A-law (-> silence for the caller):

2021-02-04 11:06:00.094 SEVERE: [457] org.jitsi.jigasi.SoundNotificationManager.injectSoundFile().1164 [ctx=16124331449081630436579] No playback!
2021-02-04 11:06:00.137 INFO: [474] service.protocol.media.TransportManager.sendHolePunchPacket().552 Send NAT hole punch packets
2021-02-04 11:06:00.226 SEVERE: [526] net.sf.fmj.media.Log.error()   Unable to handle format: LINEAR, 48000.0 Hz, 16-bit, Mono, LittleEndian, Signed
2021-02-04 11:06:00.226 SEVERE: [526] net.sf.fmj.media.Log.error() Failed to prefetch: net.sf.fmj.media.ProcessEngine@563f6359
2021-02-04 11:06:00.227 SEVERE: [524] net.sf.fmj.media.Log.error() Error: Unable to prefetch net.sf.fmj.media.ProcessEngine@563f6359

Then after 30 seconds the caller gets disconnected. These 30 seconds are started with the incoming Invite and includes the ringing phase:

2021-02-04 11:06:15.068 SEVERE: [469] org.jitsi.jigasi.JvbConference.run().2005 [ctx=16124331449081630436579] Did not received session invite (30000 ms)
2021-02-04 11:06:15.069 INFO: [469] org.jitsi.jigasi.JvbConference.memberPresenceChanged().1211 [ctx=16124331449081630436579] Member left : GUEST jigasi@auth.myroom.example.com
2021-02-04 11:06:15.069 INFO: [469] org.jitsi.jigasi.JvbConference.stop().593 [ctx=16124331449081630436579] Removing account Jabber:120f2d70@myroom.example.com/120f2d70
2021-02-04 11:06:15.073 INFO: [469] impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.registrationStateChanged().134 Jingle : OFF
2021-02-04 11:06:15.076 INFO: [141] org.jitsi.jigasi.SipGatewaySession.handleCallState().1616 [ctx=16124331449081630436579] SIP call ended: CallPeerChangeEvent: type=CallPeerStatusChange oldV=net.java.sip.communicator.service.protocol.CallPeerState:Connected newV=net.java.sip.communicator.service.protocol.CallPeerState:Failed for peer=+497031386869 <+497031386869@jitsi.example.com>;status=Failed
2021-02-04 11:06:15.076 INFO: [141] org.jitsi.jigasi.SipGatewaySession.sipCallEnded().647 [ctx=16124331449081630436579] Sip call ended: Call: id=16124331449071809192851 peers=0
2021-02-04 11:06:15.080 INFO: [141] org.jitsi.jigasi.AbstractGateway.notifyCallEnded().129 [ctx=16124331449081630436579] Removed session for call. Sessions:0
2021-02-04 11:06:15.080 INFO: [141] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1682 null SIP peer state: Failed

How can jitsi be configured to not accept the SIP call (no 200 OK) for an unopened room until it is openend
or
how can it be configured to accept the call (that it does already), play an announcement (“The moderator hasn’t started yet”) and then wait for a configurable time like 15 min.

I appreciate your help.
Greetings Tom

Do you have secure domain on?

You mean if I only allow authenticated users to create new conference rooms? Yes, I configured that.
Guests can participate without authentication.

Yep, that case is not handled in jigasi. Open an issue in jigasi repo explaining that, thanks. We can look at it at some point when time permits. Any PRs are welcome.
The web client is doing the invite jicofo every 30secs or so waiting for the host to arrive and there is no such logic in jigasi.

okay, though luck. I will open that issue. May I stress you a little longer with some concrete questions?

  1. Can you point me to the jigasi src file in github handling incoming calls? Unfortunately Java is not a language I’m used to program in (these are C, C++, perl, …), but anyway…
  2. What is the problem, with the announcement? What would jitsi play to me if it worked?
  3. Where can I increase the time (currently 30000ms) until the caller is kicked out?

I already opened a request for more detailed SIP responses .

Nothing. We have some announcements that are played when translator mode is enabled, in which jigasi is not doing any mixing and mixing multiple streams is left to the sip side, but the sip side needs to support multistreaming.

You can control it with org.jitsi.jigasi.JVB_INVITE_TIMEOUT, the default value is: jigasi/AbstractGateway.java at 3294cc2b1f3860f6a7e5a9ab87999109131428a8 · jitsi/jigasi · GitHub

This is the code handling the xmpp side of things: jigasi/JvbConference.java at 929a43920ea888e9f9671fff793205ee3ce3ed01 · jitsi/jigasi · GitHub
And this is the one handling the sip side of things: jigasi/SipGatewaySession.java at fc1f1b6beeae89e6e291ee3ddac667a10f89f612 · jitsi/jigasi · GitHub

The secure domain is not something we use for our deployments, that’s why some features are missing when it comes to it.

1 Like

Thank you for your answers.

How do you restrict the creation of new conferences to authorized persons only, via a seperate process?

With lobby. There are custom modules doing that.
You can enable that on your tenant so all rooms to be like that. Or it can be the account’s personal room only with that setting.
Lobby rooms are handled in jigasi with sound notifications (in translator mode).

1 Like