Music-Bot-for-Jitsi / Jimmi

JIMMI - The Jitsi Integrated Musicbot Management Interface is an open source management interface that provides a music bot for jitsi, the free video conferencing platform. Together with him, you can get your party started 🎉
http://app.jimmi.party
GNU Affero General Public License v3.0
21 stars 2 forks source link

Spinny wheel of doom. Uncaught (in promise) Error: The "bosh" option is no longer supported, please use "serviceUrl" instead. #154

Closed confuciussayuhm closed 9 months ago

confuciussayuhm commented 9 months ago

Summary

Tried on multiple different Chromium based browsers (Brave, Chromium, Edge) and get the same error. The Jitsi SDK docs mention that bosh is deprecated: https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-ljm-api/#jitsiconnection

Logs

xmpp.js:135 Uncaught (in promise) Error: The "bosh" option is no longer supported, please use "serviceUrl" instead
    at new Ra (xmpp.js:135:19)
    at new zh (JitsiConnection.js:24:17)
    at oo.D (Bot-0231bad4.js:4:26412)
    at async Bot-0231bad4.js:6:341

Reproduction

Question Answer
My operating system Windows 11, WSL2 Ubuntu
Used browser with version Brave->1.62.153 (121.0.6167.85), Edge->121.0.2277.83, Chromium->120.0.6099.129
p-fruck commented 9 months ago

Thanks for reporting, I am a little short on time to debug. Can you please try http://app.jimmi.party/beta to test the hotfix?

confuciussayuhm commented 9 months ago

Gave http://app.jimmi.party/beta a go now. Get the following:

Bot-85252d40.js:4  Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'getUserMedia')
    at y (Bot-85252d40.js:4:19453)
    at Bn (index-72b0b780.js:1:2200)
    at Array.map (<anonymous>)
    at index-72b0b780.js:4:3767
    at Vn (index-72b0b780.js:4:1569)

A different error! Promising!

p-fruck commented 9 months ago

Suspicious. What browser are you using? Does navigator.mediaDevices.getUserMediaresult in the same error if you paste it directly into the browser console?

p-fruck commented 9 months ago

sorry, I didn't notice you actually sent your browser details. Is this because because you denied access to the microphone or something? Could you try a different browser? The PR above fixes the connectivity issue for me, tested with Chromium Version 121.0.6167.85 (Official Build) (64-bit)

confuciussayuhm commented 9 months ago

Super I get the DJ Jim bot in Jitsi now.

I can't seem to figure out how to actually play music though. If I look through the code I see references to googlevideo.com. Is the idea to manually update the rules.json and manifest.json files and then reimport the browser extension?

Feel like I am missing something obvious.

p-fruck commented 9 months ago

Do I understand correctly that your question is how to control the bot? The bot is controlled via the jitsi chat, there are the !play and !queue commands to play music from youtube. The the !help command to get a list of all possible commands

confuciussayuhm commented 9 months ago

Knew it was something obvious! Perhaps this should be added to the readme?

Next problem: seems the bot doesn't get unmuted. When I check the console of app.jimmi.party I see these errors for audio:

Bot-de0f2f7c.js:4  The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.
y @ Bot-de0f2f7c.js:4
Logger.js:155 2024-02-01T11:26:18.869Z [modules/statistics/LocalStatsCollector.js] <fi.connectAudioContext>:  Connecting audio context
LocalStatsCollector.js:169  The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.
fi.connectAudioContext @ LocalStatsCollector.js:169
Logger.js:155  2024-02-01T11:26:18.900Z [JitsiMeetJS.ts] <Object.init>:  Analytics disabled, disposing.
r @ Logger.js:155
Show 1 more frame
Show less
Bot-de0f2f7c.js:4  The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.
navigator.mediaDevices.getUserMedia @ Bot-de0f2f7c.js:4
Bot-de0f2f7c.js:4 Connection established successfully
Bot-de0f2f7c.js:4 Successfully joined conference!
BridgeChannel.js:393  2024-02-01T11:27:11.340Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:155
e.onclose @ BridgeChannel.js:393
Show 1 more frame
Show less
AudioOutputProblemDetector.js:123  2024-02-01T11:27:12.121Z [modules/statistics/AudioOutputProblemDetector.js] A potential problem is detected with the audio output for participant 2c5a1fd1, local audio levels: [null,null], remote audio levels: undefined
r @ Logger.js:155
(anonymous) @ AudioOutputProblemDetector.js:123
_onLocalAudioLevelsReport @ AudioOutputProblemDetector.js:112
o.emit @ events.js:158
Pi._processAndEmitReport @ RTPStatsCollector.js:407
Pi.processStatsReport @ RTPStatsCollector.js:695
(anonymous) @ RTPStatsCollector.js:225
Promise.then (async)
t @ RTPStatsCollector.js:219
setInterval (async)
Pi.start @ RTPStatsCollector.js:235
Ni.startRemoteStats @ statistics.js:119
Gh._acceptJvbIncomingCall @ JitsiConference.js:2243
Gh.onIncomingCall @ JitsiConference.js:2160
o.emit @ events.js:153
onJingle @ strophe.jingle.js:214
run @ strophe.umd.js:2507
(anonymous) @ strophe.umd.js:3843
(anonymous) @ strophe.umd.js:3840
forEachChild @ strophe.umd.js:1502
_dataRecv @ strophe.umd.js:3838
_onMessage @ strophe.umd.js:6187
socket.onmessage @ strophe.umd.js:5920
Show 10 more frames
Show less
AudioOutputProblemDetector.js:123  2024-02-01T11:27:12.121Z [modules/statistics/AudioOutputProblemDetector.js] A potential problem is detected with the audio output for participant 263e0ef6, local audio levels: [null,null], remote audio levels: undefined
p-fruck commented 9 months ago

good point, I didn't notice it was missing in the readme. This is a privacy feature of modern webbrowsers, essentially stating that you have to interact with the website (move the mouse and click somewhere) before the media devices (microphone) can be accessed. The bot is likely also muted inside your meeting room. Try to move to mouse in the app.jimmi.party interface to interact with the website and execute the play command again. This should cause the bot the bot to unmute and hopefully play something

confuciussayuhm commented 9 months ago

Hmm ok. So I've reloaded app.jimmi.party and clicked all the things (apart from typing my play command in the jitsi meeting windows) and nothing happens 😢

p-fruck commented 9 months ago

pushed some changes to /beta again. Unmuting should now be triggered properly. Please note that during playback two issues might occur:

confuciussayuhm commented 9 months ago

Just tried /beta and all the gestures/clcks/drags/etc. The video doesn't play and DJ Jim doesn't unmute in Jitsi 😢

p-fruck commented 9 months ago

seems like some caching issues with GitHub pages? I also removed https://invidious.tiekoetter.com from the list of invidious instances but I still experience CORS issues on the /beta branch (even though the domain is not included in the deployed website). I'll deploy to the main page and see if this changes anything. Otherwise we will have to wait until the cache expires. Very strange

confuciussayuhm commented 9 months ago

Seems the cached version is gone now. I don't see any references to https://invidious.tiekoetter.com. I do, however, get this new error in https://app.jimmi.party/:

Bot-703e75e4.js:4 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD
p-fruck commented 9 months ago

is this an error or a warning? I think the warning can be ignored and the play command can be retried. Also, are you using the form on the main page to connect to the jitsi instance or are you just reloading the page at https://app.jimmi.party/#/bot/my.jitsi.instance/my-conference? You should use the form to connect to the conference as this should circumvent such errors (maybe we should also add this to the usage guide :smile:)

confuciussayuhm commented 9 months ago

You legend. That was it. Working like a boss now.

p-fruck commented 9 months ago

Thank you very much for your patience! I've added some usage instructions and common issues to the README to make Jimmi easier to understand for new users. Feel free to open further issues if any problems occur or contribute code/documentation yourself if have the required time and motivation ;)