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

منذ إطلاق Discourse Gamification قبل عام، كانت إحدى أكثر الميزات المطلوبة من خارطة طريقنا هي القدرة على دمج Discourse Gamification مع نظام تحفيز خارجي. الأمثلة كثيرة:

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

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

يسمح هذا النظام الجديد للمسؤولين بما يلي:

  • منح المستخدمين حدث تسجيل نقاط مخصص
  • منح المستخدمين أحداث تسجيل نقاط سلبية، لاستيعاب أحداث الاستبدال أو العقوبات
  • تحديث وقائمة الأحداث المخصصة التي تم إنشاؤها مسبقًا.

واجهة برمجة التطبيقات (API)

:warning: قد تستغرق النقاط الممنوحة عبر واجهة برمجة التطبيقات ما يصل إلى 10 دقائق للانعكاس في النتيجة الإجمالية للمستخدم للأحداث التي تم إنشاؤها بالتاريخ الحالي، وما يصل إلى 24 ساعة للأحداث التي تم إنشاؤها في الأيام العشرة الماضية. بالنسبة للأحداث التي تم إنشاؤها بتاريخ أقدم من الأيام العشرة الماضية، تحتاج إلى تشغيل مهمة rake backfill.

هناك 3 نقاط نهاية لواجهة برمجة التطبيقات مختلفة حاليًا.

قائمة الأحداث

curl http://example/admin/plugins/gamification/score_events.json -H "Api-Key: apikeyhere" -H "Api-Username: system"

يمكنك أيضًا سرد أحداث مستخدم معين أو أحداث بتاريخ معين:

curl http://example/admin/plugins/gamification/score_events.json?user_id=1&date=2023-05-01 -H "Api-Key: apikeyhere" -H "Api-Username: system"

إنشاء حدث

jo -p user_id="13" date="2023-04-14" points="15" description="May 2023 Karaoke atendee" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"

تحديث حدث

jo -p id="1" points="25" description="May 2023 Karaoke atendee" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
28 إعجابًا

هل ستكون هناك طريقة للقيام بذلك من خلال واجهة المستخدم؟

9 إعجابات

هذا شيء سأفكر فيه إذا أراد عميل من فئة المؤسسات رعاية ذلك.

10 إعجابات

هذا لا يصدق. نحن في منتصف البدء وتجريب برنامج سفراء/أبطال، وقد استخدمنا Airtable لمراقبة خطافات الويب من مصادرنا المختلفة (Discourse، GitHub، Ghost) وتجميع برنامج الأبطال لدينا هناك. أنا متحمس لتجربة هذا ومعرفة ما إذا كان يمكن استخدامه لإدارة/مراقبة برنامجنا ومساهماتنا.

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

9 إعجابات

آه، لا أعرف كيف أستخدم هذا :smiling_face_with_tear:
نحن نستخدم خطة عمل.

أتمنى لو كان بإمكاننا تشغيل هذا عبر واجهة المستخدم.

ولكن مع ذلك، شكراً لكم على بناء هذا الفريق! واصلوا العمل الجيد.

5 إعجابات

قد يساعد ذلك في منح نقاط لمرة واحدة داخل Discourse باستخدام Automation plugin؟

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

كيف تعمل عملية استرداد النقاط؟ أرى أن هناك حدث تحديث يمكن استخدامه لخصم النقاط من أحداث فردية، ولكن هذا يبدو طريقة غير فعالة لاسترداد النقاط.

بالإضافة إلى ذلك، عند محاولة سرد الأحداث في مثيل discourse الخاص بي، أحصل على 404.

GET https://developer.sailpoint.com/discuss/admin/plugins/gamification/score_events.json

404 غير موجود
“لم يتم العثور على عنوان URL أو المورد المطلوب.”

لقد قمت بتمكين المكون الإضافي ويمكنني تكوينه من خلال واجهة المستخدم. هل فاتني شيء لتمكين واجهة برمجة تطبيقات النظام الخارجي؟

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

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

على سبيل المثال، لنفترض أن لديك مستخدمًا يريد استرداد النقاط مقابل قميص، ويكلف هذا القميص 10 آلاف نقطة. سيكون التدفق في نظام الاسترداد الخاص بك:

  1. التحقق مما إذا كان لدى المستخدم نقاط كافية:
curl https://meta.discourse.org/u/falco.json -s | jq . | grep score
        "gamification_score": 89386,
  1. إصدار حدث “سحب النقاط”
jo -p user_id="13" date="2023-04-14" points="-10000" description="T-Shirt Redeem - order #123" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"

ستحتاج إلى تغليف هذا في نوع من آلية الحماية (semaphore)، حيث أن هذا هو المثال النموذجي لاستخدامها، ولكن هذا هو جوهر سير العمل المقترح.

هذه ميزة حديثة جدًا، لذا دعني أعرف إذا كان سير العمل المقترح لا يعمل بشكل صحيح.

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

3 إعجابات

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

:man_facepalming: كنت أستخدم بيانات اعتماد منتهية الصلاحية. شكرًا لك على التأكيد على أي حال.

إعجابَين (2)

@Falco

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

3 إعجابات

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

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

3 إعجابات

أواجه نفس المشكلة هنا:

{"errors":["لم يتم العثور على عنوان URL أو المورد المطلوب."],"error_type":"not_found"}

كان هذا الخطأ ناتجًا عن

إذًا، هل تريد التحقق من بيانات الاعتماد الخاصة بك :wink:

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

شكرًا، سأقوم أيضًا بالتحديث إلى أحدث إصدار كإجراء احترازي

التحديث إلى الأحدث نجح! شكرا لك

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

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

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

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

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

شكرا!

لا، الميزة تعتمد بنسبة 100% على واجهة برمجة التطبيقات. يمكنك استدعاء نقطة نهاية “List Events” للتحقق من الأحداث كما هو موضح في OP.

3 إعجابات