17 دقائق قراءة· المنظومة التقنيّة

LIQAA: كيف بنينا منصّة اجتماعات مرئيّة جزائريّة، وما الذي تعلّمناه حين كسرناها

في الثامن من أوت 2026 اكتشفنا أنّ الكاميرا لا تعمل على LIQAA. لا على جهاز واحد، بل على المنصّة كلّها، ومنذ ثمانية أيّام. كلّ صفحة كانت تُجيب بنجاح، وكلّ مراقبة كانت خضراء، ومع ذلك كان المتصفّح يرفض تشغيل الكاميرا قبل أن يسأل المستخدم أصلًا. لم يشتكِ أحد. هذا المقال يبدأ من هناك لأنّ ما تعلّمناه من ذلك العطب يشرح الفلسفة التي بُنيت عليها بقيّة المنصّة: أنّ ما لا يُقاس لا يُصدَّق، وأنّ الرقم المكتوب في صفحة تسويق لا يساوي شيئًا إن لم يكن أحدٌ قد اختبره. سنشرح البنية التقنيّة كما هي فعلًا، بأرقام قسناها بأنفسنا، ونذكر حدودها حيث توجد.

LIQAA: كيف بنينا منصّة اجتماعات مرئيّة جزائريّة، وما الذي تعلّمناه حين كسرناها

خمس دقائق تضيع قبل أن يبدأ الاجتماع

اسأل أيّ مؤسّسة جزائريّة عن آخر اجتماع مرئيّ عقدته، وستسمع القصّة نفسها. واحد يُحمّل تطبيقًا، وواحد يُنشئ حسابًا وينتظر بريد التأكيد، وواحد يبحث عن الرمز في محادثة قديمة. ثمّ يبدأ الحديث، فيتوقّف العدّاد عند الدقيقة الأربعين.

الجودة نادرًا ما تكون المشكلة. الاحتكاك هو المشكلة.

كلّ خطوة بين الرابط والغرفة تُسقط جزءًا من الحاضرين، والاجتماع الذي بدأ ناقصًا لا يُعاد. لذلك كان أوّل قرار في تصميم LIQAA أن يكون المسار من النقر إلى الصوت والصورة خطوتين فقط: تفتح الرابط، تكتب اسمك، تدخل.

الضيف لا يُثبّت شيئًا ولا يُنشئ حسابًا. المتصفّح الذي تقرأ به هذا المقال يكفي. من يُنشئ الاجتماع قد يحتاج حسابًا إن أراد التسجيل أو الفوترة بالوقت، أمّا الداخل فلا.

ردهة الدخول كما يراها الضيف فعلًا: اسم، وزرّ، ورابط يُنسخ. لا تسجيل ولا تثبيت.
ردهة الدخول كما يراها الضيف فعلًا: اسم، وزرّ، ورابط يُنسخ. لا تسجيل ولا تثبيت.

العطب الذي دام ثمانية أيّام وعلّمنا كيف نراقب

نعود إلى الكاميرا. ما حدث أنّنا وحّدنا الترويسات الأمنيّة على كلّ مواقع المنظومة بملفّ إعداد واحد. الملفّ كُتب لمواقع محتوى، وفيه سطر يمنع الوصول إلى الكاميرا والميكروفون. طُبِّق على LIQAA أيضًا.

النتيجة أنّ المتصفّح كان يرفض `getUserMedia` قبل أن يعرض للمستخدم أيّ طلب إذن. لا رسالة خطأ ظاهرة، ولا شيء يبدو معطّلًا. الصفحة تُجيب 200، والمراقبة تسأل «هل تُجيب الصفحة؟» فتقول نعم.

منصّة فيديو لا تستطيع تشغيل كاميرا، وكلّ المؤشّرات خضراء.

أصلحنا السطر في دقائق. لكنّ الدرس الحقيقيّ لم يكن في الإصلاح. المراقب الذي يسأل عن رمز الحالة لا يقيس منتجًا، بل يقيس أنّ خادم الويب حيّ. فبنينا مراقبًا يفعل شيئًا آخر: كلّ عشر دقائق يفتح غرفة حقيقيّة، ويطلب توكِن دخول، ويُدخل مشاركًا فعليًّا، ويتحقّق من أنّ سياسة الكاميرا ما زالت تسمح بها، ثمّ يُغلق الغرفة. إن فشل شرط واحد وصلنا إنذار.

نذكر هذه القصّة في مقال تسويقيّ عن قصد. من يقول لك إنّ منتجه لم يُعطب قطّ إمّا حديث العهد، أو لا يقيس.

لماذا SFU وليس اتّصالًا مباشرًا بين الأجهزة

أبسط طريقة لبناء مكالمة فيديو أن يرسل كلّ مشارك تدفّقه مباشرةً إلى كلّ مشارك آخر. تعمل جيّدًا لشخصين. عند عشرة يصبح كلّ جهاز مطالبًا برفع تسعة تدفّقات في وقت واحد، فيختنق الرفع وتسخن البطاريّة قبل أن تكتمل جملة.

LIQAA تعتمد بنية SFU، أي وحدة إعادة توجيه انتقائيّة، قائمة على LiveKit في إصدار 1.10. كلّ مشارك يرفع تدفّقه مرّة واحدة إلى الخادم، والخادم يوزّعه. لا فكّ ترميز ولا إعادة ترميز عنده، إعادة توجيه فقط.

الأثر العمليّ أنّ الكلفة تنمو خطّيًّا مع عدد الحاضرين لا تربيعيًّا. ولهذا يمكن لغرفة أن تحمل مئة شخص على خادم واحد دون أن يُطلب من أحد ترقية جهازه.

بنية SFU: رفع واحد من كلّ مشارك إلى المركز، وتوزيع من المركز إلى الباقين.
بنية SFU: رفع واحد من كلّ مشارك إلى المركز، وتوزيع من المركز إلى الباقين.

Simulcast: لماذا لا تفرض أضعف شبكة نفسها على الغرفة

هذه التقنيّة هي الفرق بين اجتماع يعمل في الجزائر واجتماع يعمل في عرض توضيحيّ.

المشارك يرفع نسختين أو ثلاثًا من فيديوه بجودات مختلفة في الوقت نفسه. ثمّ يختار الخادم لكلّ مستقبِل النسخة التي تناسب شبكته هو، لا شبكة الغرفة.

بلا هذه التقنيّة يحدث ما يعرفه الجميع: شخص واحد على اتّصال ضعيف، فتنخفض الجودة على الجميع. مع Simulcast يبقى ذلك الشخص داخل المكالمة بنسخة خفيفة، بينما يرى الآخرون النسخة العالية. في اللحظة نفسها وفي الغرفة نفسها.

الترميزات المدعومة VP8 وH.264 وVP9 وAV1، تُختار حسب ما يدعمه كلّ جهاز. وفوقها يعمل GCC الذي يقيس التأخّر وفقدان الحزم ويعدّل معدّل البتّ قبل أن يظهر التقطّع لا بعده.

ثلاث طبقات جودة تخرج من مصدر واحد. كلّ مستقبِل يأخذ ما تحتمله شبكته.
ثلاث طبقات جودة تخرج من مصدر واحد. كلّ مستقبِل يأخذ ما تحتمله شبكته.

الشبكة الجزائريّة تحديدًا: CGNAT ومنافذ محجوبة

الوسائط في WebRTC تفضّل UDP لقلّة تأخّره. لكنّ شبكات كثيرة في المؤسّسات والفنادق تحجب UDP كلّيًّا، وشبكات الهاتف تضع المستخدم خلف CGNAT فلا يملك عنوانًا عامًّا خاصًّا به.

عندنا مدى منافذ UDP من 50000 إلى 60000 للوسائط، ومسار احتياطيّ على TCP عبر المنفذ 7881. إن حُجب UDP انتقل التفاوض إلى TCP بدل أن يسقط الاتّصال. وتستعمل خوادم STUN لاكتشاف العنوان العامّ خلف الـNAT، وهو ما يجعل مستخدم 4G خلف CGNAT قادرًا على إقامة المسار، لأنّ الاتّصال يبدأ من عنده إلى الخارج وهذا ما تسمح به تلك الشبكات.

أمّا الإشارة، أي تبادل معلومات الاتّصال قبل بدء الوسائط، فتمرّ على WebSocket مشفّر عبر المنفذ 443. المنفذ نفسه الذي تفتح به أيّ موقع، فلا تحتاج شبكة الشركة إلى فتح شيء إضافيّ.

وهنا الحدّ، ونقوله بوضوح: الشبكات التي لا تسمح إلّا بـTCP على 443 حصريًّا عبر وسيط إجباريّ تبقى الحالة الأصعب لأيّ منصّة فيديو في العالم. من يعدك بأنّ منتجه يعمل في كلّ شبكة على وجه الأرض لم يقس.

التشفير: أين يُشفَّر وماذا يعني ذلك لك

كلّ اتّصال مشفّر على مستوى النقل عبر DTLS-SRTP. هذا يفرضه WebRTC ولا يمكن تعطيله. من يجلس على الشبكة بينك وبين الخادم، سواء كان مزوّد الإنترنت أو شبكة المقهى أو من يشاركك الواي-فاي، يرى حزمًا معمّاة لا صوتًا ولا صورة.

وفوق ذلك تدعم المنصّة التشفير من طرف إلى طرف على مستوى الإطار عبر Insertable Streams مع AES-GCM. يُعمَّى الإطار داخل متصفّح المُرسِل قبل أن يغادره، ولا يُفكّ إلّا داخل متصفّح المستقبِل. الخادم في هذا الوضع يُعيد توجيه حزم لا يستطيع هو نفسه قراءتها.

لماذا نُفصّل؟ لأنّ كلمة «مشفّر» تُكتب في كلّ مكان ويُقصد بها الحالة الأولى وحدها. الفرق يظهر في سؤال واحد: هل يستطيع مشغّل المنصّة، لو أراد أو لو أُجبر، أن يستمع؟ في التشفير من طرف إلى طرف الجواب لا، لأنّ المفتاح لم يمرّ عليه.

حزم مغلقة يُعيد الخادم توجيهها دون أن يفتحها. المفتاح عند الطرفين فقط.
حزم مغلقة يُعيد الخادم توجيهها دون أن يفتحها. المفتاح عند الطرفين فقط.

السعة: ما قسناه، لا ما نتمنّاه

أجرينا اختبار حِمل بأداة LiveKit الرسميّة، بمشاركين ينشرون فيديو ويشتركون في تدفّقات بعضهم. مكالمة حقيقيّة لا اتّصالات فارغة.

على الخادم الحاليّ بـ12 نواة: 20 مشاركًا استهلكوا نحو 8% من المعالج، و50 نحو 12%، و100 نحو 23%، و200 نحو 25%. وعند 500 مشارك بلغت الذروة نحو 47% بصفر خطأ وصفر انقطاع.

ملاحظة تخصّ نزاهة الرقم: المحاكي يشغّل كلّ المشاركين على الجهاز نفسه، فيرمّز ويفكّ ترميز كلّ التدفّقات محلّيًّا. أي أنّ جزءًا كبيرًا من ذلك الاستهلاك عائد إلى المحاكي لا إلى الخادم، والسعة الحقيقيّة للخادم وحده أعلى ممّا يظهر.

الترجمة العمليّة: قاعة تكوين بمئة متدرّب ليست حالة استثنائيّة تحتاج ترتيبًا مسبقًا.

التسجيل يجري على الخادم، لا على جهاز أحد

كثير من الحلول تسمّي «تسجيلًا» ما هو تسجيل شاشة من متصفّح أحد الحاضرين: يُطلب منه مشاركة شاشته، فيُنزَّل ملفّ في مجلّد تنزيلاته. الملفّ يعتمد على جهازه وشبكته وبقائه في الغرفة، ولا يصل الحساب منه شيء.

عندنا التسجيل يجري على الخادم عبر خدمة Egress من LiveKit. يُركَّب تخطيط الغرفة ويُرمَّز إلى ملفّ MP4 بترميز H.264، مستقلًّا عن جهاز أيّ مشارك. يستطيع المضيف أن يغادر أو تنقطع شبكته والتسجيل يكمل.

وتفصيل نراه أهمّ من الميزة نفسها: المؤشّر الذي يُعلم الحاضرين أنّ التسجيل يجري لا يُقبل إلّا من المضيف. في تصميم أقلّ انتباهًا يستطيع أيّ مشارك أن يُظهر تحذير تسجيل كاذبًا، أو أن يُخفي تسجيلًا حقيقيًّا. هذه مسألة موافقة، وحُسمت على الخادم لا في الواجهة.

غرفة الاستشارة: اجتماع يُحتسب بالدقيقة

هذه الميزة تحوّل الاجتماع من كلفة إلى إيراد، ولا نعرف منصّة أخرى تقدّمها في السوق الجزائريّة.

الطبيب أو المحامي أو المدرّس يحدّد سعر الدقيقة بالدينار، فيأخذ رابطين: واحدًا له وواحدًا يرسله لعميله. العدّاد لا يبدأ بضغطة زرّ، بل لحظة يصبح شخصان متّصلين فعلًا في الغرفة. شخص ينتظر وحده ليس استشارة.

ويتوقّف عند انتهاء الغرفة. المستشار لا يضغط شيئًا، وبالتالي لا يستطيع أن ينسى الإيقاف فيُحمّل عميله ما لم يستهلكه. جرّبنا هذا بالضبط: غرفة عند 500 دج للدقيقة، شخص وحده فلم يبدأ العدّاد، ثمّ وصل الثاني فبدأ، ثمّ انتهت الغرفة بعد أربع وتسعين ثانية فأُغلق الحساب على دقيقتين ومبلغ 1,000 دج.

الدقائق تُقرَّب لأعلى، لأنّ دقيقة وعشر ثوانٍ هي دقيقتان من يوم عمل إنسان.

من يملك الغرفة

في تطبيقات كثيرة تكون «أوامر المضيف» رسائل يبعثها متصفّحه إلى بقيّة المتصفّحات فتُطيعها. المشكلة أنّ أيّ مشارك يستطيع أن يبعث الرسالة نفسها، فيطرد غيره أو يكتمه، لأنّ لا أحد يتحقّق ممّن أرسلها.

عندنا الطرد والكتم يجريان على الخادم عبر واجهة LiveKit، ولا يُنفَّذان إلّا لمن يملك مفتاح المضيف الذي يُصدَر لأوّل من يفتح الغرفة. المطرود لا يُطلب منه أن يغادر، بل يُفصل.

وهويّة كلّ مشارك يُسنِدها الخادم لا العميل. الاسم المعروض هو ما كتبه المستخدم، أمّا الهويّة الداخليّة فتحمل لاحقة عشوائيّة. هذا يمنع مشكلتين: شخصان يكتبان «محمّد» فيطرد أحدهما الآخر دون أن يدري أيّ منهما ما حدث، ومنتحل يدّعي هويّة المضيف ليرث صلاحيّاته.

كلمة سرّ الاجتماع وغرفة الانتظار يفرضهما الخادم كذلك. من لا يعرف كلمة السرّ لا يحصل على رمز دخول أصلًا، ومن يدخل غرفة انتظار يبقى فيها حتّى يقبله المضيف.

وكيل ذكاء اصطناعيّ يفتح لك غرفة

بروتوكول MCP هو المعيار الذي صار يربط نماذج الذكاء الاصطناعيّ بالأدوات الحقيقيّة. LIQAA تُشغّل خادم MCP خاصًّا بها، مسجَّلًا في السجلّ الرسميّ للبروتوكول باسم io.liqaa/meetings.

عمليًّا: تقول لمساعدك الذكيّ «افتح لي غرفة اجتماع»، فيُنشئها ويعطيك الرابط. بلا متصفّح وبلا حساب. الأدوات المتاحة تشمل إنشاء غرفة فوريّة، وقراءة الباقات وحدودها، وقراءة سعة المنصّة، وإحصاءات عامّة مجمّعة.

لماذا يهمّ هذا؟ لأنّ الاجتماع حين يصير قابلًا للفتح من داخل سير عمل آليّ، يصبح ممكنًا أن ينتهي حجز موعد بغرفة جاهزة، أو أن تنتهي تذكرة دعم بمكالمة، بلا خطوة بشريّة وسيطة.

أن تكون منصّة جزائريّة حاضرة في هذا السجلّ اليوم ليس تفصيلًا. قواعد هذا السباق تُكتب الآن.

طلب نصّيّ يتحوّل إلى غرفة عاملة. هذا ما يفعله خادم MCP.
طلب نصّيّ يتحوّل إلى غرفة عاملة. هذا ما يفعله خادم MCP.

الباقات

الباقة المجّانيّة ليست عيّنة. مئة مشارك في الاجتماع الواحد، وثلاث ساعات لكلّ اجتماع، واجتماعات بلا عدد، وبلا بطاقة.

للمقارنة، الحدّ المجّانيّ الشائع عالميًّا أربعون دقيقة. وهو الحدّ الذي يقطع الحصّة الدراسيّة في منتصفها ويجبر الجميع على العودة برابط جديد.

الاحترافيّة بـ2,900 دج شهريًّا ترفع الغرفة إلى 300 مشارك وتزيل الحدّ الزمنيّ. والمؤسّسيّة بـ9,900 دج شهريًّا تصل إلى 500 مشارك. الدفع بالدينار عبر البطاقة الذهبيّة أو CIB.

الأسعار تتغيّر، وصفحة الأسعار على liqaa.io هي المرجع دائمًا.

صفحة الأسعار كما هي على liqaa.io.
صفحة الأسعار كما هي على liqaa.io.

لمن بنيناها

مراكز التكوين والتعليم عن بُعد. حصّة لمئة متدرّب برابط واحد، وثلاث ساعات تكفي حصّة كاملة بلا قطع. ومن أراد أن يُتوَّج التكوين بشهادة قابلة للتحقّق العلنيّ فذلك ما تقدّمه AlgeriaCertify في المنظومة نفسها.

الأطبّاء والصحّة عن بُعد. مريض من ولاية أخرى يدخل غرفة مشفّرة برابط، والاستشارة تُحتسب بالدقيقة. لا تطبيق يُثبّته ولا حساب يُنشئه.

المهن الحرّة. محامٍ، مهندس، محاسب، مستشار. كلّ من يبيع وقته يستطيع أن يحوّل الاجتماع إلى خدمة بسعر معلن.

المؤسّسات والفرق الموزّعة. اجتماعات داخليّة بلا رخصة لكلّ موظّف، وتسجيل خادميّ لمن غاب، وتحكّم حقيقيّ في من يدخل ومن يتكلّم.

كيف تبدأ

افتح liqaa.io واضغط «ابدأ مكالمة». تُفتَح غرفة برابط فريد. انسخه وأرسله في واتساب أو بريد. من يفتحه يكتب اسمه ويدخل.

إن أردت اجتماعًا مجدولًا أو تسجيلًا أو غرفة استشارة تُحتسب بالدقيقة، أنشئ حسابًا مجّانيًّا. الضيوف يبقون بلا حساب في كلّ الحالات.

وإن كنت مطوّرًا فالمنصّة تعرض واجهة برمجيّة وخادم MCP، ويمكن تضمين غرفة داخل تطبيقك. ابدأ من liqaa.io/mcp ومن قسم المطوّرين في tkawen.com.

الصفحة الرئيسة على liqaa.io.
الصفحة الرئيسة على liqaa.io.
LIQAA — اجتماعات مرئيّة

افتح غرفتك الآن، بدون تثبيت وبدون حساب

نقرة واحدة تفتح غرفة مشفّرة برابط تشاركه كما تشارك أيّ رابط. حتّى 100 مشارك و3 ساعات لكلّ اجتماع، مجّانًا وبلا بطاقة.

ابدأ اجتماعًا الآن

أسئلة شائعة

هل أحتاج إلى تثبيت تطبيق؟

لا. الغرفة تعمل داخل المتصفّح على الحاسوب والهاتف. من يدخل بالرابط لا يُثبّت شيئًا ولا يُنشئ حسابًا.

كم شخصًا يمكنه الدخول؟

حتّى 100 في الباقة المجّانيّة، و300 في الاحترافيّة، و500 في المؤسّسيّة. اختبرنا البنية عمليًّا عند 500 مشاركًا متزامنًا بصفر خطأ.

هل هناك حدّ زمنيّ؟

3 ساعات لكلّ اجتماع في الباقة المجّانيّة، مع اجتماعات بلا عدد. الباقتان المدفوعتان بلا حدّ.

هل الاجتماعات مشفّرة؟

كلّ اتّصال مشفّر أثناء النقل عبر DTLS-SRTP، وتدعم المنصّة التشفير من طرف إلى طرف على مستوى الإطار عبر Insertable Streams مع AES-GCM، حيث يُعيد الخادم توجيه حزم لا يقرؤها.

هل تعمل على 4G ضعيف؟

في الحالة الغالبة نعم. تقنيّة Simulcast تجعل كلّ مشارك يستقبل الجودة التي تحتملها شبكته هو لا أضعف شبكة في الغرفة، ويوجد مسار احتياطيّ على TCP إن حُجبت منافذ UDP. تبقى الشبكات التي لا تسمح إلّا بوسيط إجباريّ على المنفذ 443 هي الحالة الأصعب لأيّ منصّة فيديو.

هل يمكن تسجيل الاجتماع؟

نعم، والتسجيل يجري على الخادم لا على جهاز أحد المشاركين، فيكمل حتّى لو غادر المضيف. ومؤشّر التسجيل لا يُقبل إلّا من المضيف، فلا يستطيع مشارك أن يُظهر تحذيرًا كاذبًا أو يُخفي تسجيلًا حقيقيًّا.

ما هي غرفة الاستشارة المفوترة؟

غرفة يحدّد فيها المستشار سعر الدقيقة بالدينار. يبدأ الاحتساب لحظة يصبح شخصان متّصلين فعلًا، ويتوقّف بانتهاء الغرفة، ويظهر في النهاية عدد الدقائق والمبلغ وحالة الدفع.

هل LIQAA منصّة جزائريّة؟

الفريق والتطوير والقرار جزائريّ، من TKAWEN Group. البنية التحتيّة للوسائط تعمل حاليًّا على خادم مخصّص في أوروبا لقربه الشبكيّ من الجزائر، ونقول ذلك صراحةً بدل ادّعاء لا يصمد أمام أوّل سؤال تقنيّ.

كيف أدفع من الجزائر؟

بالدينار عبر البطاقة الذهبيّة أو CIB، من صفحة الأسعار على liqaa.io.

هل يمكن ربطها ببرنامجي أو بمساعد ذكاء اصطناعيّ؟

نعم. للمنصّة خادم MCP مسجَّل رسميًّا باسم io.liqaa/meetings، فيستطيع مساعد ذكيّ أن يفتح غرفة ويعيد الرابط من محادثة واحدة. وتوجد واجهة HTTP لمن يستعمل نمط استدعاء الدوالّ. التفاصيل على liqaa.io/mcp.

ما الفرق بينها وبين المنصّات العالميّة؟

ثلاثة فروق عمليّة: 3 ساعات في المجّانيّ بدل 40 دقيقة، ولا تثبيت ولا حساب للضيف، وغرفة استشارة تُحتسب بالدقيقة وتُفوتَر بالدينار وهي ميزة لا تقدّمها المنصّات العالميّة أصلًا.

اقرأ أيضًا