مرحبًا بالجميع - خلال الأيام القليلة الماضية، تلقّت منتدياتنا عددًا كبيرًا من تسجيلات الروبوت التي يتم تحديدها بشكل صحيح لمراجعتنا. المشكلة تكمن في العدد الكبير منها كل بضع ساعات:
هل توجد طريقة لمراجعة سريعة وإجراء تعديل جماعي حتى لا نضطر إلى النقر على كل إدخال ثم النقر مرة أخرى لتحديد خيار الحظر والحذف؟ تصبح هذه العملية مرهقة جدًا بعد مرور بعض الوقت.
مرحباً جيف، الفريق - كمية البريد العشوائي التي نتلقاها مرتفعة جدًا، ولدينا حوالي 30-40 منشورًا تم وضع علامة عليها للمراجعة يوميًا. إنها الكثير من النقرات المتكررة. هل تم تقديم أي تقنيات جديدة لجعل هذا الأمر أقل مللًا؟
لقد قمنا بمراجعة آلاف المشاركات/المستخدمين الذين تم تمييزهم تلقائيًا (النظام و Akismet) على منتداي.
كانت دقة كل من النظام و Akismet قريبة جدًا من 100٪ (إيجابي خاطئ واحد على حد علمي مقابل 2500 علامة). هذا ليس هو الحال في كل منتدى، لذلك يجب أن تكون متأكدًا مما تفعله إذا كنت ترغب في أتمتة حظر المستخدمين الذين تم تمييزهم تلقائيًا.
في النهاية، قمت بإنشاء برنامج PHP باستخدام بيانات Discourse webhook:
لقد أضفت رمزًا مخصصًا لتشغيل الحظر التلقائي عن طريق إرسال طلب API إلى Discourse، بناءً على معايير اعتباطية:
إليك الرمز النهائي:
<?php
// التحقق فورًا من صحة الطلب.
if (array_key_exists('HTTP_X_DISCOURSE_EVENT_SIGNATURE', $_SERVER)) {
$discourse_payload_raw = file_get_contents('php://input');
$discourse_payload_sha256 = substr($_SERVER['HTTP_X_DISCOURSE_EVENT_SIGNATURE'], 7);
// للأمان، قم بتكوين الـ webhook مع سر في Discourse وضعه أدناه.
$discourse_payload_secret = 'xxxxxxxxxxxxxxxxxxxxx';
// التحقق من أن الطلب تم إرساله من webhook مصرح به.
if (hash_hmac('sha256', $discourse_payload_raw, $discourse_payload_secret) == $discourse_payload_sha256) {
echo 'received';
}
else {
die('authentication failed');
}
}
else {
die('access denied');
}
// إعداد الحمولة للاستخدام في برنامج PHP.
$discourse_json = json_decode($discourse_payload_raw);
$reviewable = $discourse_json->reviewable;
// إعداد عنوان URL لواجهة برمجة التطبيقات
$api_url = "https://unicyclist.com/review/$reviewable->id/perform/delete_user?version=0";
// التحقق من أن خصائص "type" و "score" صالحة
if (($reviewable->type == "ReviewableUser" || $reviewable->type == "ReviewableAkismetUser" || $reviewable->type == "ReviewableQueuedPost") && $reviewable->score > 0) {
// إعداد خيارات curl
$options = array(
CURLOPT_URL => $api_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "PUT", // تعيين طريقة الطلب إلى PUT
CURLOPT_HTTPHEADER => array(
"Api-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Api-Username: system"
)
);
// تهيئة جلسة curl
$curl = curl_init();
curl_setopt_array($curl, $options);
// إجراء استدعاء API
$response = curl_exec($curl);
curl_close($curl);
// فك تشفير الاستجابة
$response_data = json_decode($response);
print_r($response_data);
} else {
exit;
}
?>
إنه يعمل بشكل مثالي حتى الآن.
لاحظ أن رمزي قد يكون خطيرًا جدًا للاستخدام في سياق آخر ويجب التفكير في المحتوى بعناية.
على سبيل المثال، قد يتم تعيين علامة “ReviewableUser” على المستخدمين في المنتديات التي تحتاج إلى التحقق من صحة المستخدمين يدويًا (لا أعرف ما إذا كان هذا هو الحال، إنه مجرد مثال). قد تكون المنتديات الأخرى قد غيرت عتبات اكتشاف البريد العشوائي في إعداداتها، أو قد يكون الاكتشاف التلقائي أقل دقة ببساطة في منتداها.
لقد كنت أستخدم حل @Canapin على منصة Discourse الشخصية الخاصة بي، ولكن لدي أيضًا إعداد منفصل لشركة أخرى. أفضل عدم استخدام هذا البرنامج النصي على حلهم.
هل هناك تحديث من فريق Discourse حول الأساليب البديلة؟ ينطبق هذا على كل من التسجيلات التي تم الإبلاغ عنها وكذلك المشاركات التي تم الإبلاغ عنها كرسائل غير مرغوب فيها:
حتى الآن، لم نخطط لشيء لإضافة إجراءات جماعية إلى قائمة المراجعة، ولكن إذا كان بإمكانك إنشاء طلب ميزة لها، فيمكننا قياس شعبية الاقتراح بسهولة أكبر، مما قد يلفت انتباهه.