في وقت سابق من هذا العام، شاركنا معكم Resenha، وهو تجربة أضافت غرفًا صوتية ومرئية بأسلوب Discord مباشرة إلى Discourse. لا حاجة إلى تطبيقات خارجية، بل مجرد WebRTC بين الأقران في شريطك الجانبي.
نجحت التجربة. لقد استخدمناها لاجتماعاتنا الخاصة منذ ذلك الحين، واليوم تتخرج: أصبح اسم Resenha Voice، ويتم توزيعه كإضافة أساسية مدمجة مع كل تثبيت لـ Discourse. ![]()
ما ستحصل عليه
- غرف أولاً في الشريط الجانبي — انقر للانضمام أو المغادرة، وشاهد صور المشاركين الحية مع مؤشرات متحركة للمتحدثين، واستمر في تصفح المنتدى أثناء التحدث. لا تغيير في المسار، ولا نافذة منبثقة.
- مشاركة الفيديو والشاشة — تحصل كل غرفة على صفحة كاملة بشبكة بلاطات؛ يتم تبديل الكاميرا ومشاركة الشاشة فورًا، ويتكيف الجودة تلقائيًا مع عدد المشاهدين.
- تعتيم الخلفية — تقسيم الأشخاص باستخدام MediaPipe يعمل بالكامل في متصفحك، مع معاينة حية وقوة قابلة للتعديل.
- كبت الضوضاء — اختر بين ثلاثة محركات ذكاء اصطناعي (RNNoise، DTLN، DeepFilterNet3) تعمل كـ WebAssembly audio worklets، من الخفيفة إلى درجة الاستوديو.
- ترجمات حية — اختيارية، ترجمات جانب المشاهد مدعومة بتعرف NVIDIA Parakeet على الكلام وتعمل محليًا عبر WebGPU. متعددة اللغات، ولا يغادر أي صوت متصفحك أبدًا.
- مكالمات مباشرة — اتصل بشخص ما مباشرة من بطاقة المستخدم أو ملفه الشخصي.
- دردشة نصية لكل غرفة — مدعومة بدردشة Discourse الحقيقية: تحصل كل مكالمة على موضوع خاص بها في قناة الدردشة الخاصة بالغرفة.
- أذونات وإدارة الغرف — غرف عامة، ومقيدة بالمجموعات، وخاصة؛ إنشاء الغرف من قبل المستخدمين مقيد بالمجموعات؛ كتم الصوت، إلغاء السماعة، مستوى الصوت لكل مستخدم، والطرد.
- إشارات صوتية ملونة — نغمات الانضمام/المغادرة والمكالمات تتبع حزمة أصوات إشعارات الدردشة الخاصة بك، لذا يبدو صوت Voice مثل بقية موقعك.
كيف يعمل
افتراضيًا، كل شيء بين الأقران: خادم Discourse الخاص بك يتعامل فقط مع الإشارات (signaling)، وتتدفق الوسائط مباشرة بين المشاركين مع تشفير DTLS-SRTP. بنية تحتية إضافية صفرية، مثالي للغرف التي تضم حتى ~50 شخصًا في الصوت، أو حتى 10 في الفيديو.
جميع عمليات معالجة الصوت والفيديو (كبت الضوضاء، تعتيم الخلفية، الترجمات) تعمل محليًا على جهاز كل مشارك. لا يُرسل أي شيء إلى أطراف ثالثة.
هل تحتاج إلى مكالمات أكبر؟ وجّه الإضافة إلى خادم سحابي أو LiveKit مخصص ذاتيًا، ووجّه جميع الغرف (أو بعضها فقط) من خلاله. ينشر كل مشارك بعد ذلك كل مسار (track) مرة واحدة بالضبط، بغض النظر عن حجم الغرفة. يمكن أيضًا لغرف LiveKit الموجهة تسجيل المكالمات، مع التحكم في التسجيل مباشرة من واجهة الغرفة في Discourse.
كيفية التفعيل
Voice متوفر في جميع خطط الاستضافة لدينا. تكامل LiveKit للمكالمات الأكبر متوفر في خططنا Business و Enterprise؛ يمكن للمستخدمين الذين يستضيفون ذاتيًا
توجيهه إلى خادم LiveKit الخاص بهم.
يتم توزيع Voice مع Discourse، لذا لا يوجد شيء لتثبيته. قم بتفعيله عبر Admin > Settings > Plugins > voice enabled. تزرع الإضافة غرفة افتراضية باسم “Watercooler” حتى يكون هناك مكان للتجمع على الفور.
من هناك، تتحكم voice_allowed_groups في من يمكنه الانضمام إلى الغرف، وتتحكم voice_create_room_allowed_groups في من يمكنه إنشاؤها (المشرفون، والمراقبون، و TL2 افتراضيًا). الفيديو مفعّل افتراضيًا؛ الترجمات اختيارية عبر voice_subtitles_enabled (تتطلب WebGPU).
إذا كنت تشغل إضافة Resenha من مستودعي الشخصي، قم بإزالتها من app.yml عند أول فرصة، لأن إضافة Voice المدمجة تستبدلها.
الحالة
هذا ما زال في مراحله الأولى. لقد كنا نستخدمه يوميًا لعدة أشهر وهو يعمل بشكل جيد جدًا للمجموعات الصغيرة، لكن اختبره مع فريقك قبل فتحه لمجتمع بأكمله. لا يوجد تسجيل للمكالمات في المسار الافتراضي بين الأقران، وأدوات الإشراف التي تتجاوز أعلام المستخدمين، والطرد، و"إنهاء المكالمة" لا تزال على خارطة الطريق.
نرحب بالملاحظات
جربها وأخبرنا كيف سارت الأمور! الأخطاء، والأفكار، والأسئلة جميعها مرحب بها في هذا الموضوع. أيضًا طلبات المساهمة (PRs)، أصبحت الآن أسهل من أي وقت مضى: الكود موجود في النواة. ![]()








