Transcription in Jitsi Meet: CC button not quite working, transcriber not joining hidden

Hi there,

I’ve been reading through a couple other topics on the issue of how to properly configure transcription. There’s a lot of great information but it seems as though none of it is entirely complete.

I’ve managed to get through the hurdles of getting the google cloud authentication working, using a service account (important! I’ll document this stuff all later once I’m sure of the correct settings in their entirety)

Now the issue i’m facing is, despite the CC button’s best intentions of inviting the transcriber into the room, Jicofo seems to just hang as soon as Jicofo attempts to invite it:

INFO: [436] org.jitsi.jicofo.jigasi.TranscriberManager.log() Attempting to invite transcriber

Beyond that, if I manually invite jitsi_meet_transcribe into the room, and click the CC button, everything works as expected except the Transcriber doesnt join as a hidden user, they join as a visible audio-only user which I dont think is the intention.

I’ve seen all sorts of suggestions such as using XMPP authentication versus anonymous to fix this, but none of that seemed to help or change anything.

Any suggestions for where to start?

Will gladly document all of the changes necessary so they can be added to the README!

3 Likes

Also, i am on the latest jitsi-meet (1.0.3734-1) /jicofo (1.0-468-1)/jigasi (1.0-235) as of right now.

When you clock CC button do you see any logs in jigasi?

Hum, you had configured the brewery room property in jicofo for discovering jigasi, right?
org.jitsi.jicofo.jigasi.BREWERY

What is that supposed to be configured to?

Create an initernal muc iin prosody:

Component "internal.auth.your.domain.com" "muc"
    modules_enabled = {
      "ping";
    }
--    storage = "null" -- for trunk
--    storage = "none" -- for 0.10
    storage = "memory" -- for 0.11
    muc_room_cache_size = 1000

In your jicofo config /etc/jitsi/jicofo/sip-communicator.properties add:

org.jitsi.jicofo.jigasi.BREWERY=JigasiBrewery@internal.auth.your.domain.com

In jigasi config /etc/jitsi/jigasi/sip-communicator.properties add enabling xmpp account (you will need to create that account in prosody), the properties for the xmpp account to use: https://github.com/jitsi/docker-jitsi-meet/blob/master/jigasi/rootfs/defaults/sip-communicator.properties#L50
Enable brewery there:

org.jitsi.jigasi.BREWERY_ENABLED=true

Make sure for .BREWERY you add JigasiBrewery@internal.auth.your.domain.com and you edit DOMAIN_BASE.

This will ignore the component and will configure jigasi to register in a muc where jicofo will be watching for jigasi instances.

This the more advance way of discovering jigasi/jvb instances, we should switch and the default installations to use that and stop using the component.

This worked for me - I’ll add these notes to a full end-to-end writeup on how to get this working from start to finish.

One question remains: When I click the CC icon, the “Transcriber” attendee joins, and i see AUD in the quality indicator in the top right. I know previously, it was a hidden participant that changed the indicator to REC in the top right. Is this functionality still available? Does it take some particular configuration that I’m missing to restore it?

Thanks for your help!

You need to configure authentication for the transcriber https://github.com/jitsi/jigasi/blob/master/jigasi-home/sip-communicator.properties#L89 and then configure that domain as hidden domain for your jitsi-meet deployment: https://github.com/jitsi/jitsi-meet/blob/master/config.js#L469

For example meet.jit.si has this because of jibri: hiddenDomain: ‘recorder.meet.jit.si’,

Can you share the way to create XMPP account for jigasi.
I don’t know what to fill in this. Thank you
" ```
#base64
net.java.sip.communicator.impl.protocol.jabber.acc-xmpp-1.PASSWORD=<xmpp_account_password>

Base64 string of the password. You can use let’s say: https://www.base64encode.org/ and ‘123’ is ‘MTIz’.

Where can I find this password. I haven’t create “jigasi@auth.vcrxdev9.topica.vn” account before

You need to create it in your prosody server.

I just add the follow component. Are they the same thing?

"Component “callcontrol.vcrxdev9.topica.vn” component_secret = “iks@LrUH”
Component “internal.auth.vcrxdev9.topica.vn” “muc”
modules_enabled = {
“ping”;
}
– storage = “null” – for trunk
– storage = “none” – for 0.10
storage = “memory” – for 0.11
muc_room_cache_size = 1000
"

I cannot find the way to create xmpp account in prosody. I have try with " sudo prosodyctl register jigasi auth.mediauni.topica.vn AAELJHQC" but it seem like not work

This is my jigasi log now. Could you give me some advice
2019-09-24 16:31:11.943 INFO: [45] org.igniterealtime.jbosh.BOSHClient.init() Starting with 1 request processors
2019-09-24 16:31:12.273 INFO: [45] impl.protocol.jabber.ProtocolProviderServiceJabberImpl.authenticated().2535 Authenticated: false
2019-09-24 16:31:12.277 INFO: [45] org.jitsi.jigasi.xmpp.CallControlMucActivator.joinCommonRoom().285 Joining call control room: JigasiBreweryRoom@internal.muc.vcrx dev9.topica.vn pps:ProtocolProviderServiceJabberImpl(jigasi@auth.vcrxdev9.topica.vn (Jabber))
2019-09-24 16:31:12.517 SEVERE: [45] impl.protocol.jabber.ChatRoomJabberImpl.joinAs().743 Failed to join room jigasibreweryroom@internal.muc.vcrxdev9.topica.vn with nickname: jitsi-p368gl
org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPP error reply received from internal.muc.vcrxdev9.topica.vn: XMPPError: remote-server-not-found - cancel
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.jivesoftware.smackx.disco.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:540)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:506)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeatures(ServiceDiscoveryManager.java:748)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeatures(ServiceDiscoveryManager.java:744)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeature(ServiceDiscoveryManager.java:740)
at org.jivesoftware.smackx.muc.MultiUserChatManager.providesMucService(MultiUserChatManager.java:361)
at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:311)
at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:711)
at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:603)
at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl.joinAs(ChatRoomJabberImpl.java:665)
at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl.joinAs(ChatRoomJabberImpl.java:778)
at org.jitsi.jigasi.xmpp.CallControlMucActivator.joinCommonRoom(CallControlMucActivator.java:309)
at org.jitsi.jigasi.xmpp.CallControlMucActivator.registrationStateChanged(CallControlMucActivator.java:261)
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)
2019-09-24 16:31:12.517 SEVERE: [45] org.jitsi.jigasi.xmpp.CallControlMucActivator.joinCommonRoom().323 net.java.sip.communicator.service.protocol.OperationFailedEx ception: Failed to join room jigasibreweryroom@internal.muc.vcrxdev9.topica.vn with nickname: jitsi-p368gl
net.java.sip.communicator.service.protocol.OperationFailedException: Failed to join room jigasibreweryroom@internal.muc.vcrxdev9.topica.vn with nickname: jitsi-p368 gl
at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl.joinAs(ChatRoomJabberImpl.java:745)
at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl.joinAs(ChatRoomJabberImpl.java:778)
at org.jitsi.jigasi.xmpp.CallControlMucActivator.joinCommonRoom(CallControlMucActivator.java:309)
at org.jitsi.jigasi.xmpp.CallControlMucActivator.registrationStateChanged(CallControlMucActivator.java:261)
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)
Caused by: org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPP error reply received from internal.muc.vcrxdev9.topica.vn: XMPPError: remote-server-not-fou nd - cancel
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.jivesoftware.smackx.disco.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:540)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:506)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeatures(ServiceDiscoveryManager.java:748)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeatures(ServiceDiscoveryManager.java:744)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeature(ServiceDiscoveryManager.java:740)
at org.jivesoftware.smackx.muc.MultiUserChatManager.providesMucService(MultiUserChatManager.java:361)
at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:311)
at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:711)
at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:603)
at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl.joinAs(ChatRoomJabberImpl.java:665)
… 10 more

Do you have internal.muc.vcrxdev9.topica.vn, defined in your prosody. You should use a known muc component that is defined, otherwise prosody thinks this is an external service and tries to find the server for it and it fails.

You had defined internal.auth.vcrxdev9.topica.vn, but you are configuring jigasi to use internal.muc.vcrxdev9.topica.vn.

1 Like

Thank you. I see. After I fix this. I got another when I click CC button. Have I foget something.
"2019-09-24 17:05:22.536 SEVERE: [61] impl.protocol.jabber.ProtocolProviderFactoryJabberImpl.createService().169 http://callcontrol.vcrxdev9.topica.vn is not a valid JID
org.jxmpp.stringprep.XmppStringprepException: XmppStringprepException caused by ‘http://callcontrol.vcrxdev9.topica.vn’: org.jxmpp.stringprep.XmppStringprepException: Argument can 't be the empty string
at org.jxmpp.jid.impl.JidCreate.entityBareFrom(JidCreate.java:591)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderFactoryJabberImpl.createService(ProtocolProviderFactoryJabberImpl.java:165)
at net.java.sip.communicator.service.protocol.ProtocolProviderFactory.loadAccount(ProtocolProviderFactory.java:1010)
at org.jitsi.jigasi.JvbConference.start(JvbConference.java:452)
at org.jitsi.jigasi.AbstractGatewaySession.createOutgoingCall(AbstractGatewaySession.java:103)
at org.jitsi.jigasi.TranscriptionGateway.createOutgoingCall(TranscriptionGateway.java:118)
at org.jitsi.jigasi.xmpp.CallControl.handleDialIq(CallControl.java:202)
at org.jitsi.jigasi.xmpp.CallControlMucActivator$DialIqHandler.processIQ(CallControlMucActivator.java:387)
at org.jitsi.jigasi.xmpp.CallControlMucActivator$DialIqHandler.processIQ(CallControlMucActivator.java:368)
at org.jitsi.jigasi.xmpp.CallControlMucActivator$RayoIqHandler.handleIQRequest(CallControlMucActivator.java:540)
at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.jxmpp.stringprep.XmppStringprepException: Argument can’t be the empty string
"

Check your config, you must have an error there. You have entered http://callcontrol.vcrxdev9.topica.vn somewhere for xmpp jid

I comment this block on jigasi config.

If you want jigasi to perform authenticated login instead of anonymous login

to the XMPP server, you can set the following properties.

#org.jitsi.jigasi.xmpp.acc.USER_ID=http://callcontrol.vcrxdev9.topica.vn
#org.jitsi.jigasi.xmpp.acc.PASS=iks@LrUH
#org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false

Then Jicofo log show that:

Jicofo 2019-09-24 17:12:26.332 INFO: [195] org.jitsi.jicofo.jigasi.TranscriberManager.log() Attempting to invite transcriber
Jicofo 2019-09-24 17:12:41.332 WARNING: [195] org.jitsi.jicofo.jigasi.TranscriberManager.log() failed to invite transcriber; lack of response from Xmm pConnection
Jicofo 2019-09-24 17:12:59.491 INFO: [38] org.jitsi.jicofo.xmpp.BaseBrewery.removeInstance().368 Removed brewery instance: jigasibreweryroom@internal.auth.vcrxdev9.topica.vn/jitsi-194m34m

I have tried with add “transcibe” from invite but it got error too. Could you give me some advice
"2019-09-24 17:24:49.304 INFO: [81] org.jitsi.jigasi.JvbConference.joinConferenceRoom().653 Joining JVB conference room: hainn3@conference.vcrxdev9.topica.vn
2019-09-24 17:24:54.198 SEVERE: [77] org.jitsi.jigasi.xmpp.CallControlMucActivator.processIQ().401 Error processing RayoIq
java.lang.Exception: Fail to join muc!
at org.jitsi.jigasi.xmpp.CallControlMucActivator$WaitToJoinRoom.waitToJoinRoom(CallControlMucActivator.java:487)
at org.jitsi.jigasi.xmpp.CallControlMucActivator$DialIqHandler.setDialResponseAndRegisterHangUpHandler(CallControlMucActivator.java:433)
at org.jitsi.jigasi.xmpp.CallControlMucActivator$DialIqHandler.processIQ(CallControlMucActivator.java:390)
at org.jitsi.jigasi.xmpp.CallControlMucActivator$DialIqHandler.processIQ(CallControlMucActivator.java:368)
at org.jitsi.jigasi.xmpp.CallControlMucActivator$RayoIqHandler.handleIQRequest(CallControlMucActivator.java:540)
at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2019-09-24 17:24:54.203 INFO: [77] impl.protocol.jabber.ChatRoomJabberImpl.left().1300 jigasibreweryroom@internal.auth.vcrxdev9.topica.vn/jitsi-2fitclc has left the jigasibreweryroom@internal. auth.vcrxdev9.topica.vn chat room.
2019-09-24 17:25:09.803 INFO: [88] impl.protocol.sip.SipLogger.logInfo().196 Info from the JAIN-SIP stack: Setting SIPMessage peerPacketSource to: /210.245.12.146:5060
"