كيفية دمج نظام التحفيز في Discourse مع نظام خارجي (استرداد ومنح النقاط)

لدي فكرة مجنونة، وهي أنني أستخدم في WooCommerce محفظة افتراضية (تعتمد على النقاط) والتي أود مزامنتها مع نقاط الألعاب في Discourse… ولكنني أشعر أن واجهة برمجة التطبيقات وحدها ثقيلة جدًا (سواء بالاستشارة كل x cron أو عندما يقوم المستخدم بإجراء في WC)… هل يمكنك إنشاء خطاف ويب لتحديث المحفظة الافتراضية في WooCommerce بالنقاط التي تم الحصول عليها في Discourse؟… أرفق مخططًا توضيحيًا للدليل

أعلم أن الأمر قد يكون أكثر تعقيدًا مما يبدو، خاصة وأن واجهة برمجة تطبيقات Discourse جديدة نسبيًا (ولا يوجد خطاف ويب أيضًا)، ولكني أقدم حالة استخدام فقط، تحقق من صحة الفكرة

إعادة حساب التلعيب (Gamification) تتم كل 5 دقائق، لذا أعتقد أن استخدام مزامنة بأسلوب crontab مناسب جدًا.

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

أوه، لم أفكر في هذا النهج… أي يمكنني استخدام n8n (استضافة خاصة لتقليل التكاليف)؛ سأقوم بإنشاء مشغل cron كل 5 أو ربما 10 دقائق للاستعلام عن واجهة برمجة تطبيقات Discourse للنقاط الجديدة (كيف يمكنني الاستعلام عن جميع المستخدمين؟ أو هل ستفعل ذلك للأحداث؟)… على الرغم من أنه بالطبع ستكون هناك نافذة زمنية صغيرة ثابتة حيث لن ترى النقاط متزامنة عبر كلا النظامين…

كنت أفكر في الأمر، وأعتقد أنه إذا كان من الممكن إنشاء خطاف ويب (webhook) لمكون الإضافات الخاص بالألعاب (gamification plugin) يرسل المعلومات عبر الأحداث (دون الحاجة إلى الاستعلام عبر واجهة برمجة التطبيقات API)، فإن هذا سيتجنب الحاجة إلى الاستعلام، على سبيل المثال، إذا كان هناك 200 مستخدم نشط، 200 مرة عبر واجهة برمجة تطبيقات كل 5 دقائق (وأيضًا بشكل افتراضي يسمح Discourse بخطافات الويب… الأمر مهم لأن Discourse هو المصدر الرئيسي للنقاط (ويحدث بشكل مستمر أكثر) وهذا سيكون تحديثًا يسمح بالمزامنة في الخلفية. على الفور وفقًا للتغييرات في Discourse…

@Falco
هل هناك خطة لإضافة واجهة برمجة تطبيقات (API) لحذف الأحداث؟ شكراً.

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

أرغب في إضافته، لكنه غير مخطط له بعد. في الوقت الحالي، يمكنك تحديث قيمته إلى 0.

إعجابَين (2)

شكرا @Falco
تخمين لحدث ما، يمكن أن يحصل المعرف على نقطة سلبية، صحيح؟
قل، إذا خسرت في حدث تنافسي

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

نعم، يمكنك منح نقاط سلبية أيضًا. هذا مفيد للقيام بأحداث مثل استبدال النقاط بالهدايا، أو تطبيق العقوبات، وما إلى ذلك.

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

متأخر عن الركب هنا - هل هناك طريقة يمكن بها تخصيص معاملات نقاط معينة بحيث لا تُحتسب كـ “إنفاق” بالنسبة لترتيب لوحة الصدارة؟ أود أن تُحتسب النقاط السلبية الحقيقية الأخرى بالنسبة للوحة الصدارة (الأصوات/الأعلام ضد، أحداث واجهة برمجة التطبيقات كما هو مقترح أعلاه لـ “خسارة” حدث سلم، إلخ).
على سبيل المثال.

  • تجميع 10 آلاف نقطة من خلال الأنشطة، وتصدر القائمة. يا للروعة!
  • إنفاق 10 آلاف نقطة على سلع فاخرة، والوصول إلى رصيد “قابل للإنفاق” قدره 0 نقطة حيث سيجمع الاستعلام 10 آلاف - 10 آلاف.
    • ولكن يجب أن تظل في أعلى لوحة الصدارة.
  • خسارة 2 ألف نقطة في لعبة سلم، وعرضها على لوحة الصدارة عند 8 آلاف. خسارة الصدارة… رصيد قابل للإنفاق سالب 2 ألف.
إعجاب واحد (1)

مرحباً @Falco
بعد تعديل نقطة حدث ما، هل سيعاد حساب النقطة الإجمالية لمعرف ما؟
يبدو أنه لا. هل هذا متوقع؟

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

إعجابَين (2)

تم تقسيم 7 مشاركات إلى موضوع جديد: إضافة bulk_create إلى واجهة برمجة تطبيقات الأحداث الخارجية للتحفيز

هل لدينا القدرة على تقييد نطاق مفتاح واجهة برمجة التطبيقات (API Key) ليشمل فقط المكون الإضافي Gamification؟

لا أرى خيارًا في عرض إدارة مفاتيح واجهة برمجة التطبيقات (API Key Admin) لدينا لتقييد المفتاح بـ ...admin/plugins/gamification/score_events

وتشكك قيادتنا في حاجتنا إلى مفتاح واجهة برمجة تطبيقات (API Key) عالمي حقًا لهذا الغرض.

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

أعتقد أنك على حق. يبدو أنه تتم إضافة المزيد من النطاقات عند طلبها. يمكنك القيام بذلك باستخدام إضافة مخصصة إذا كنت تستضيف بنفسك. يمكنك تقديم طلب سحب (PR) و/أو النشر كـ #طلب ميزة. إذا كنت عميلاً للمؤسسة، يمكنك أن تطلب قيادتك. :wink:

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

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

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

هل حدث هذا من قبل؟

CC: @Falco

بصفتي مبتدئًا في البرمجة، لقد حاولت جاهدًا فهم محتوى المنشور ولكنه لا يزال صعبًا للغاية بالنسبة لي… أردت أن أسأل عما إذا كانت هذه الميزة مشابهة لـ “الدفع للمشاهدة”؟ إنها ميزة شائعة جدًا في المنتديات التقليدية حيث يكسب المستخدمون نقاطًا من خلال الأحداث (مثل تسجيل الدخول اليومي، النشر، الرد، إلخ)، ثم تتطلب بعض المنشورات في المنتدى من المستخدمين دفع نقاط لعرض المحتوى الكامل. في المنتديات التقليدية (مثل Discuz)، تكون عمليات كسب النقاط وخصم النقاط مؤتمتة. مما أستطيع رؤيته الآن، يمكن للتحفيز بالألعاب (gamification) التعامل مع جزء “كسب النقاط”، ولكن هل تتطلب عملية “خصم النقاط” استدعاءات واجهة برمجة تطبيقات (API) يدوية من قبل المسؤولين؟ سيكون هذا صعبًا للغاية بالنسبة لمنتدى شخصي. مما أفهمه، فإن تشغيل واجهات برمجة التطبيقات بتهور دون معرفة برمجية كبيرة قد يكون خطيرًا وقد يتسبب حتى في انهيار المجتمع بأكمله… :sob:

هل من الممكن تطبيق ميزة “الدفع للمشاهدة” هذه كإضافة (plugin) قائمة بذاتها؟ أو إذا قمت بتوظيف شخص لتخصيصها، فكم ستبلغ التكلفة تقريبًا؟