أنا أقوم بنقل منتدى الدعم الخاص بي إلى Discourse من نظام مساعدة (YouTrack).
أود استخدام واجهة برمجة التطبيقات (API) للقيام بما يلي:
استرجاع المستخدمين (الاسم، اسم المستخدم، البريد الإلكتروني) من YouTrack وإنشاء مستخدمين مماثلين في Discourse. دون تعيين كلمات مرور لهم!
إرسال دعوة لجميع هؤلاء المستخدمين للتسجيل في Discourse، باستخدام أسماء المستخدمين والبريد الإلكتروني نفسها (لإنشاء كلمات مرور جديدة).
استرجاع بعض المواضيع والمرفقات والتعليقات من YouTrack وإنشاء ما يعادلها في Discourse.
ولتحقيق ذلك، سأحتاج إلى وجود نفس المستخدمين في Discourse حتى يمكن تعيينهم كمؤلفين للمواضيع والتعليقات. يجب القيام بذلك بغض النظر عما إذا كان هؤلاء المستخدمون قد سجلوا في Discourse بعد استلام الدعوة أم لا.
المشاكل:
a) تشير وثائق واجهة برمجة التطبيقات إلى أن حقل “كلمة المرور” مطلوب عند إنشاء مستخدم. كيف يمكنني تجاوز ذلك؟
b) ما الذي يجب أن يكون عليه حالة هذا المستخدم (الذي تم إنشاؤه عبر واجهة برمجة التطبيقات، ولديه بالفعل بعض المواضيع باسمه، لكنه لم يؤكد حسابه بعد، ولم يتم تعيين كلمة مرور له)؟
أنصح بإنشاء المستخدمين والفئات والمواضيع والمنشورات باستخدام سكريبت استيراد بدلاً من استخدام واجهة برمجة التطبيقات.
أنا لست متأكداً تماماً من أفضل طريقة لإرسال بريد إلكتروني إلى كل مستخدم على حدة، ولكن إحدى الطرق الممكنة هي ترك السكريبت نشطاً للمستخدمين والسماح لهم بتلقي ملخص عبر البريد الإلكتروني، مع التأكد من أن رسالة الملخص تتضمن تعليمات للوصول إلى المنتدى الجديد.
لقد حاولت استخدام هذا السكربت الخاص بك، والذي يبدو أنه ينجح في المهمة، لكنني ما زلت أحصل على رسالة خطأ:
./create-user 'Test User Four' me@[domain] test4 41 default
Creating user: test4 user test4 created. . . Adding to group 41. . . {"errors":["You supplied invalid parameters to the request: usernames"],"error_type":"invalid_parameters"}
لا أستطيع معرفة ما الذي فعلته خطأ. أيضًا، هل من الممكن عدم تعيين المجموعة وكلمة المرور هنا؟
حسناً، يبدو أن السكربت يحتاج بالتأكيد إلى تحديث لإرسال اسم المستخدم والمفتاح الخاص بـ API في رأس الطلب (header) بدلاً من تضمينهما في الرابط. ورغم أنني متأكد من أنه كان يعمل قبل عامين، إلا أنه يبدو أنه كُتب من قبل شخص كان أملك من الخبرة بسنتين أقل مما أملكه الآن.
لا يتضمن أي فحص للأخطاء للتأكد من نجاح إنشاء المستخدم، وهذا شيء سأقوم بتعديله لو كنت سأعمل عليه.
يبدو أنه إذا لم تكن هناك أي مجموعات، فإنه سيتجاوز محاولة إضافة المستخدم إلى المجموعة.
كلا السببين صحيحان. أردنا تقديم الدعم لعملائنا عبر منتدى مفتوح، حتى يتمكن العالم أجمع من رؤية مدى روعتنا :-). ولم يكن YouTrack أداة مناسبة لذلك لعدة أسباب، ومن بينها أنه يفرض رسومًا حسب عدد المستخدمين.
إعدادنا الحالي هو كالتالي:
Discourse للدعم، وطلبات الميزات، والمناقشات. كما تصل نماذج “اتصل بنا” على مواقعنا الإلكترونية إلى هناك أيضًا (يتم إنشاء مواضيع جديدة ومستخدمين “مُجهَّزين” تلقائيًا عبر واجهة برمجة التطبيقات)
YouTrack للتطوير - المهام، والأخطاء، والمشكلات الأخرى
Confluence للوثائق العامة. كما تُنشر بعض المقالات التي تصف حالات استخدام محددة على Discourse (يدويًا)
كما جربنا استخدام Discourse كمدونة لشركة، لكننا فضلنا لاحقًا Hashnode.
نحن على وشك نقل التوثيق من Confluence. فله وظيفة بحث ضعيفة ورسوم دفع مرتفعة. يتمتع Youtrack بميزة قاعدة معرفة مع دعم للـ Markdown. كما أنه يتميز باستيراد سهل، ووظيفة البحث مقبولة. يُعد Youtrack نظام تتبع الأخطاء الخاص بنا، وسنحتفظ به.
إذا كنت قادرًا على تأكيد أن قاعدة المعرفة في YT بطيئة في بيئة الإنتاج، فيمكننا النظر في عدم استخدامها.
يُستخدم Discourse كنظام دعم من المستوى الثالث. الوظيفة الرئيسية هي حفظ حلول العملاء ومشاركة أفضل الممارسات. للأسف، استخدام Discourse للعملاء صعب. لأن فريق دعم العملاء يستخدم Service Desk. كما أنه من الصعب جدًا إنشاء مئات الفئات الخاصة لكل عميل.