إنشاء مستخدمين مرحليين عبر API؟

أنا أفكر في فكرة بناء خدمة جسر للـ webhook و API لربط فئات معينة على منتدين مختلفين من منتديات Discourse. الفكرة التقريبية ستكون:

  1. Webhook على كل خادم لأحداث الموضوع والمنشور [1]
  2. مستمع يأخذ هذه الأحداث ويكررها على الخادم المقابل عبر الـ API
    • آه، شيء لمنع الحلقات، بالطبع [2]
    • تحقق مما إذا كان مستخدم بنفس عنوان البريد الإلكتروني موجودًا على الخادم المقابل [3]
    • إذا لم يكن هناك مستخدم كهذا، فقم بإنشاء مستخدم مرحلي
    • غيّر إعدادات إشعارات المستخدم المرحلي حتى لا يتلقى إشعارات البريد الإلكتروني [4]
    • قم بإنشاء أو تحديث المنشور تحت المستخدم الحقيقي أو المرحلي المناسب
  3. ربما روتين موقوت للمرور عبر المواضيع والتأكد من عدم تفويت أي شيء، وربما إعادة الترتيب حتى يتفق كلا الجانبين.

من فهم حالات المستخدمين والأدوار والأذونات، أعتقد أن المستخدمين المرحليين سيفعلون ما نريده - إذا قام شخص ما بإنشاء حساب بهذا البريد الإلكتروني لاحقًا، فيمكنه “المطالبة به” والتفاعل مع جميع منشوراته كما لو كان موجودًا منذ البداية.

ولكن، هل هناك طريقة لإنشاء مستخدم مرحلي من الـ API؟ لا أرى ذلك في Discourse API Docs.


  1. وربما أيضًا أحداث الإعجاب والحل، ولكن ليس في النسخة الأولى ↩︎

  2. لقد فكرت بالتأكيد في هذا قبل كتابة هذه القائمة ↩︎

  3. باستخدام عناوين البريد الإلكتروني كمفتاح لأن أنظمة الحساب قد لا تحتوي على نفس أسماء المستخدمين ↩︎

  4. رأيت منشورًا حول هذا الأمر ممكنًا في مكان ما هنا… ↩︎

لست متأكدًا مما إذا كان هذا هو ما تريده؟

3 إعجابات

حسنًا، نوعًا ما. كما يقول صاحب الموضوع الأصلي في ذلك الموضوع، ردًا على ذلك…

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

يحدث أن لدينا SSO-overrides-username قيد التشغيل لـ جانب واحد من الجسر المقترح، لذلك أعتقد أن مجرد إنشاء شيء مثل ‘othersite-user’ يمكن أن يكون حلاً بديلاً… ولكن هذا لن يعمل بالضرورة بدون إعداد SSO هذا.

إذا لم ينجح تمرير staged: true إلى استدعاء إنشاء مستخدم إداري، فأنا أشك في أننا سنكون منفتحين على طلب سحب (PR) لتمكين ذلك.

(إنها ميزة متخصصة إلى حد ما خارج حالة الاستخدام الخاصة بك أعتقد؟)

ربما يمكنك استخدام المسار handle_mail لنشر بريد إلكتروني وهمي كمستخدم؟ (أوه، كما يقترح @blake (https://meta.discourse.org/t/creating-a-staged-user-with-an-api-call/84667/4?u=supermathie))

سيؤدي ذلك إلى إنشاء المستخدم المرحلي إذا لزم الأمر والموضوع في نفس الوقت.

إعجابَين (2)

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

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

تؤدي إضافة staged: true إلى إنشاء مستخدم مرحلي. أفترض أن المستخدم الذي تم إنشاؤه بهذه الطريقة سيكون قادرًا على النشر عبر البريد الإلكتروني. موقع التطوير المحلي الخاص بي غير مهيأ لإرسال رسائل البريد الإلكتروني إلى Discourse، لذلك لا يمكنني اختبار ذلك في الوقت الحالي.

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

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

سيكون من المفيد جدًا أن أتمكن من إنشاء رسالة تنشئ مستخدمًا مرحليًا دون الحاجة إلى اللجوء إلى نظام آخر لمعالجة النموذج وإرسال بريد إلكتروني.

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

هذا هو أحد الأشياء الوحيدة المتبقية لدي لمعرفتها للتخلص من ووردبريس.

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

إعجابَين (2)

أعتقد أنه يمكنك استخدام معالج (:mage: ملحق المعالج المخصص) لتحقيق ذلك دون الكثير من المتاعب. يمكنك الآن إنشاء معالجات مجهولة. يسعدني أن أقدم لك يد المساعدة إذا احتجت إليها!

3 إعجابات

نعم، هذا يعمل: Creating a staged user with an API call - #8 by blake.

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

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

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