مؤتمر فيديو Jitsi

:discourse2: ملخص مؤتمرات الفيديو Jitsi يتيح دمج مكالمات الفيديو من Jitsi في منشورات Discourse.
:hammer_and_wrench: رابط المستودع https://github.com/discourse/discourse-jitsi
:open_book: جديد على سمات Discourse؟ دليل المبتدئين لاستخدام سمات Discourse

تثبيت مكون السمة هذا

الميزات

  • يمكن للمسؤولين استخدام خادم Jitsi الخاص بهم
  • يضيف أيقونة شريط أدوات المؤلف (يمكن حصرها على الموظفين فقط في إعدادات المكون)
  • يعرض زرًا بأيقونة وتسمية قابلة للتكوين في المنشورات


الإعدادات

الاسم الوصف
إظهار في قائمة الخيارات المنسدلة عند إلغاء التحديد، تظهر الأيقونة في شريط أدوات المؤلف.
متاح للموظفين فقط
نطاق meet jitsi النطاق فقط (بدون بروتوكول، بدون شرطة مائلة في النهاية).
مصدر سكريبت jitsi عنوان URL لملف جافا سكريبت لواجهة برمجة التطبيقات الخارجية. إذا قمت بتغيير هذا، فستحتاج أيضًا إلى إضافة عنوان URL إلى إعداد موقع ‘مصدر سكريبت أمان المحتوى’.
أيقونة الزر أدخل اسم أيقونة FontAwesome 5 المراد عرضها في زر Jitsi.
زر الدردشة التكامل مع دردشة Discourse
إخفاء أزرار iframe إخفاء خيار إعدادات iframe عن المستخدمين، سيتم استخدام الإعدادات الافتراضية أدناه
iframe افتراضي للجوال تمكين وضع iframe افتراضيًا للجوال
iframe افتراضي للسطح المكتبي تمكين وضع iframe افتراضيًا لأجهزة سطح المكتب
موقع زر الدردشة موقع الزر داخل نافذة الدردشة
أيقونات SVG إذا كنت تستخدم أيقونة مخصصة، فأضفها إلى هذا الحقل أيضًا (بالإضافة إلى ‘button_icon’ أعلاه
الترجمة الافتراضي
composer_title Discourse Jitsi
room_label معرف غرفة Jitsi
button_text_label تسمية الزر
launch_jitsi بدء مؤتمرات الفيديو
modal.room_field_description أدخل معرفًا لغرفتك (أو اتركه فارغًا لاستخدام معرف يتم إنشاؤه عشوائيًا).
modal.insert إدراج
modal.cancel إلغاء
modal.title إضافة تكامل Jitsi
modal.mobile_iframe العرض داخل iframe على أجهزة الجوال
modal.desktop_iframe العرض داخل iframe على أجهزة سطح المكتب

:discourse2: مُستضاف بواسطةنا؟ تتوفر مكونات السمات للاستخدام في خططنا القياسية، والأعمال، والمؤسسات.

43 إعجابًا

Hi, thank you for this post and plugin. I’ve removed some of my posts from the other thread to limit confusion. I’ve installed and been testing the component.

I do not see a Discourse Preview when drafting a video conference into a new post.
Do you see a preview?

إعجابَين (2)

Awesome! @downey could we try this using your jitsi server? I dont have one now but might like to set one up.

I was just struggling with a family call using gotomeeting and would be interested in trying something mew that is simply embedded in a discourse topic. All the better if its with jitsi!

إعجاب واحد (1)

Is there a concern over using the server jitsi is providing for free?

إعجاب واحد (1)

Is there a concern over using the server jitsi is providing for free?

We’ve been testing it and it works fine for ~10 people. Performance becomes unusable at 20+ so you’d want to run your own instance for larger groups calls + Slack and Etherpad integration.

4 إعجابات

That reminds me, the reason our Jitsi testing has stopped is because Jitsi prompts mobile users to install an app, at least on iOS. We’re looking at BigBlueButton again which works through the browser on mobile and desktop.

Wondering if @pmusaraj would be interested in checking out their API to see how much if any of the work done on this component could work over there too…

6 إعجابات

Does it help that your users can also phone in? fwiw the iOS app is excellent, plus it is fully open source and just easy to use afaik. I’ve noticed the app is basic a replica of the Zoom app for iOS and Android, which almost everyone I know uses.

إعجابَين (2)

I mean, if I have the choice of conferencing that works natively, versus one that requires an app, I will probably pass on installing the additional app.

3 إعجابات

It’s kinda (not totally) like asking everyone who wants to have any given conversation using Discourse as a platform to use meta. :slight_smile:

Yeah this is true, and I haven’t thought through ramifications of using a mobile interface embedded in Discourse like this.

Have been hearing good things about BBB as well, especially for more “webinar style” events. An integration for it would be good too :slight_smile:

AFAIK, it’s the other way around, Zoom copied a lot of the UI/UX for Jitsi and other web conferencing tools over the years.

6 إعجابات

FWIW, I’m getting an error when configuring the theme component to use my own installed Jitsi instance. The normal room URL syntax works fine, but some reason getting a 404 when attempting to use the button. Unfortunately I won’t have time this week to troubleshoot…

3 إعجابات

@pmusaraj, thanks for the component!

Anyway to add a randomized word generator for room creation? Or maybe a timestamp/epoch? I hit a mental wall each time I create a room in Discourse. :slight_smile:

3 إعجابات

“Good artists copy, great artists steal” – at the start of the day, the current product is what the user sees, not the history.

How much does the performance of Jitsi improve with your own instance? I thought that it is peer-peer once the call has been made.

We need a solution that can cope with large groups, and as it is (using meet.jit.si) I’m finding it too poor for one:one calls often.

Jitsi is only peer to peer in 1:1 settings. Any larger groups route through the server.

Even dedicated self hosted instances we’ve experimented with tap out fairly quickly.

إعجاب واحد (1)

Maybe they should offer a sold hosting option for money in addition to the self-hosting option… could help them identify problems in the software at scale :thinking:

3 إعجابات

I think the main problem is that for deployments of any scale jitsi-videobridge really needs a dedicated host, with the jitsi-meet component installed separately. The former is the streaming server, while meet only provides the front end.

Unfortunately the install route most people go for is the semi-automated single-host deployment. Their quick install all lives within docker and is very straightforward.

The detailed manual install which lets you deploy the components separately is going to put off any newcomers quite quickly.

9 إعجابات

لم أستطع جعل هذا يعمل، حتى مع خادم meet.jit.si الافتراضي. مهما أدخلت كمعرف للاجتماع، أحصل فقط على مربع رمادي بدلاً من اجتماع الفيديو.

إعجاب واحد (1)

هل يوجد أي شيء في وحدة التحكم؟

مرحبًا توبياس، إنه يعمل هنا (مع متصفحي Chrome وFirefox)، الإصدار 2.5.0 بيتا 2، مع عدد قليل من الإضافات، وخادم Jitsi جديد تم إنشاؤه قبل حوالي 48 ساعة … :face_with_raised_eyebrow:

أنا أحاول حاليًا تنفيذ JWT، لكن قد أكون غارقًا في التفاصيل :exploding_head:، وكنت أيضًا أتساءل عما إذا كان من الأفضل استيراد ملف external_api.js من settings.meet_jitsi_domain بدلاً من https://meet.jit.si؟

هنا: https://github.com/pmusaraj/discourse-jitsi/blob/master/javascripts/discourse/initializers/insert-jitsi.js.es6

إعجابَين (2)

Hmm… lots of errors in the console. This happens on my personal instance and on a new hosted trial site just created. I’m using the default meet.jit.si server, have made no changes to the theme component settings.

I don’t have my own jitsi server (yet) and thought it would work out of the box…

click to see
Logger.js:154 2020-04-11T19:21:21.250Z [modules/util/JitsiLocalStorage.js] <new <anonymous>>:  DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
    at new <anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:29:197547)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:29:197486)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:29:197742)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:54:98101)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:24:101984)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:29:222225)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:24:213733)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:29:196138)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:24:154819)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:63:41390)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:54:53082)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:54:55490)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:54:165081)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:54:166745)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:126:292708)
    at Object.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:126:323867)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at Module.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:222:80217)
    at n (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:110)
    at https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:908
    at https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:1:919
o @ Logger.js:154
(anonymous) @ JitsiLocalStorage.js:42
(anonymous) @ JitsiLocalStorage.js:77
(anonymous) @ app.bundle.min.js?v=3962.622:29
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:54
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:24
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:29
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:24
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:29
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:24
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:63
n @ bootstrap:19
(anonymous) @ AuthHandler.js:1
(anonymous) @ app.bundle.min.js?v=3962.622:54
n @ bootstrap:19
(anonymous) @ connection.js:1
(anonymous) @ app.bundle.min.js?v=3962.622:54
n @ bootstrap:19
(anonymous) @ conference.js:1
(anonymous) @ app.bundle.min.js?v=3962.622:126
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:222
n @ bootstrap:19
(anonymous) @ bootstrap:83
(anonymous) @ app.bundle.min.js?v=3962.622:1
Show 2 more frames
Logger.js:154 2020-04-11T19:21:21.252Z [features/local-recording] <Object._loadMetadata>:  Failed to parse localStorage item.
o @ Logger.js:154
_loadMetadata @ SessionManager.js:170
(anonymous) @ SessionManager.js:152
(anonymous) @ SessionManager.js:435
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:24
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:29
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:24
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:29
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:24
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:63
n @ bootstrap:19
(anonymous) @ AuthHandler.js:1
(anonymous) @ app.bundle.min.js?v=3962.622:54
n @ bootstrap:19
(anonymous) @ connection.js:1
(anonymous) @ app.bundle.min.js?v=3962.622:54
n @ bootstrap:19
(anonymous) @ conference.js:1
(anonymous) @ app.bundle.min.js?v=3962.622:126
n @ bootstrap:19
(anonymous) @ app.bundle.min.js?v=3962.622:222
n @ bootstrap:19
(anonymous) @ bootstrap:83
(anonymous) @ app.bundle.min.js?v=3962.622:1
Logger.js:154 2020-04-11T19:21:21.309Z [index.web] <HTMLDocument.<anonymous>>:  (TIME) document ready:	 432.6749999891035
react-dom.production.min.js:187 DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
    at Oe._initStorage (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:16:45149)
    at Oe.componentDidMount (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:16:44779)
    at Oe.componentDidMount (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:24:223947)
    at Gs (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:94889)
    at t.unstable_runWithPriority (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:192:3884)
    at fi (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:41540)
    at Ws (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:90890)
    at Ps (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:78509)
    at fc (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:105337)
    at hc (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:105412)
    at https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:106607
    at Bs (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:80044)
    at _c (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:106592)
    at Object.render (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:109864)
    at HTMLDocument.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:222:80940)
La @ react-dom.production.min.js:187
Ga.n.callback @ react-dom.production.min.js:200
Hi @ react-dom.production.min.js:125
Bi @ react-dom.production.min.js:125
Gs @ react-dom.production.min.js:239
t.unstable_runWithPriority @ scheduler.production.min.js:20
fi @ react-dom.production.min.js:113
Ws @ react-dom.production.min.js:230
Ls @ react-dom.production.min.js:206
(anonymous) @ react-dom.production.min.js:114
t.unstable_runWithPriority @ scheduler.production.min.js:20
fi @ react-dom.production.min.js:113
gi @ react-dom.production.min.js:114
mi @ react-dom.production.min.js:113
Bs @ react-dom.production.min.js:208
_c @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
(anonymous) @ index.web.js:25
react-dom.production.min.js:114 Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
    at Oe._initStorage (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:16:45149)
    at Oe.componentDidMount (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:16:44779)
    at Oe.componentDidMount (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:24:223947)
    at Gs (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:94889)
    at t.unstable_runWithPriority (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:192:3884)
    at fi (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:41540)
    at Ws (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:90890)
    at Ps (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:78509)
    at fc (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:105337)
    at hc (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:105412)
    at https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:106607
    at Bs (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:80044)
    at _c (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:106592)
    at Object.render (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:184:109864)
    at HTMLDocument.<anonymous> (https://web-cdn.jitsi.net/meetjitsi_4004.656/libs/app.bundle.min.js?v=3962.622:222:80940)
gi @ react-dom.production.min.js:114
mi @ react-dom.production.min.js:113
Bs @ react-dom.production.min.js:208
_c @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
(anonymous) @ index.web.js:25
react-dom.production.min.js:187 TypeError: Cannot read property 'dispatch' of undefined
    at Oe.componentWillUnmount (BaseApp.js:100)
    at react-dom.production.min.js:187
    at Ra (react-dom.production.min.js:189)
    at Ua (react-dom.production.min.js:195)
    at Gs (react-dom.production.min.js:235)
    at t.unstable_runWithPriority (scheduler.production.min.js:20)
    at fi (react-dom.production.min.js:113)
    at Ws (react-dom.production.min.js:230)
    at Ls (react-dom.production.min.js:206)
    at react-dom.production.min.js:114
    at t.unstable_runWithPriority (scheduler.production.min.js:20)
    at fi (react-dom.production.min.js:113)
    at gi (react-dom.production.min.js:114)
    at mi (react-dom.production.min.js:113)
    at Bs (react-dom.production.min.js:208)
    at _c (react-dom.production.min.js:272)
    at Object.render (react-dom.production.min.js:273)
    at HTMLDocument.<anonymous> (index.web.js:25)
La @ react-dom.production.min.js:187
Ga.n.callback @ react-dom.production.min.js:200
Hi @ react-dom.production.min.js:125
Bi @ react-dom.production.min.js:125
Gs @ react-dom.production.min.js:239
t.unstable_runWithPriority @ scheduler.production.min.js:20
fi @ react-dom.production.min.js:113
Ws @ react-dom.production.min.js:230
Ls @ react-dom.production.min.js:206
(anonymous) @ react-dom.production.min.js:114
t.unstable_runWithPriority @ scheduler.production.min.js:20
fi @ react-dom.production.min.js:113
gi @ react-dom.production.min.js:114
mi @ react-dom.production.min.js:113
I @ scheduler.production.min.js:16
H @ scheduler.production.min.js:18
C @ scheduler.production.min.js:13
BaseApp.js:100 Uncaught TypeError: Cannot read property 'dispatch' of undefined
    at Oe.componentWillUnmount (BaseApp.js:100)
    at react-dom.production.min.js:187
    at Ra (react-dom.production.min.js:189)
    at Ua (react-dom.production.min.js:195)
    at Gs (react-dom.production.min.js:235)
    at t.unstable_runWithPriority (scheduler.production.min.js:20)
    at fi (react-dom.production.min.js:113)
    at Ws (react-dom.production.min.js:230)
    at Ls (react-dom.production.min.js:206)
    at react-dom.production.min.js:114
    at t.unstable_runWithPriority (scheduler.production.min.js:20)
    at fi (react-dom.production.min.js:113)
    at gi (react-dom.production.min.js:114)
    at mi (react-dom.production.min.js:113)
    at Bs (react-dom.production.min.js:208)
    at _c (react-dom.production.min.js:272)
    at Object.render (react-dom.production.min.js:273)
    at HTMLDocument.<anonymous> (index.web.js:25)
إعجاب واحد (1)