هل هناك طريقة للتخصيص عبر واجهة برمجة التطبيقات (API)؟ لا أراها في المستندات، لكنني سأكون سعيدًا بالمفاجأة ![]()
تعديل: يبدو أنني سأحاول هندسة عكسية لها!
هل هناك طريقة للتخصيص عبر واجهة برمجة التطبيقات (API)؟ لا أراها في المستندات، لكنني سأكون سعيدًا بالمفاجأة ![]()
تعديل: يبدو أنني سأحاول هندسة عكسية لها!
أولاً وقبل كل شيء، هدفنا هو الحصول على واجهة برمجة تطبيقات مستقرة، وهي محاولة تستغرق عدة سنوات للوصول إليها، ولكنها بالتأكيد مكان نرغب في الوصول إليه.
في هذه الأثناء، يمكن استخدام خدعة معقولة لعام 2025 وهي الاعتماد على وكلاء الذكاء الاصطناعي لحل هذه الأمور:
يُظهر هذا كيف يمكنك الاعتماد على مساعدنا على GitHub للإجابة على هذا السؤال!
هل توصلت إلى حل لهذا؟ إذا كان الأمر كذلك، هل يمكنك مشاركة ما تعلمته هنا؟
أهلاً!
ليس بعد! تم تأجيل هذا المشروع لشيء أكثر إلحاحًا، ولكني سأعود إليه الأسبوع المقبل ![]()
@tobiaseigen هذا يعمل معي باستخدام node js
var https = require(‘https’);
// Configuration
var CONFIG = {
apiUrl: ‘YOURDISCOURSEDOMAIN’,
apiKey: ‘YOURAPIKEY’,
apiUsername: ‘YOURAPIUSER’,
assignToUsername: ‘USERNAMETOASSIGNTO’ // اسم المستخدم لتعيين المواضيع إليه
};
// معرفات المواضيع المراد تعيينها
var topicIds = [634]; // قم بالتغيير باستخدام معرف الموضوع
function assignTopic(topicId, callback) {
var postData = JSON.stringify({
target_id: topicId,
target_type: ‘Topic’,
username: CONFIG.assignToUsername
});
var options = {
hostname: CONFIG.apiUrl,
port: 443,
path: ‘/assign/assign.json’,
method: ‘PUT’,
rejectUnauthorized: false,
headers: {
‘Api-Key’: CONFIG.apiKey,
‘Api-Username’: CONFIG.apiUsername,
‘Content-Type’: ‘application/json’,
‘Content-Length’: postData.length
}
};
var req = https.request(options, function(res) {
var data = ‘’;
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
console.log('Status:', res.statusCode);
console.log('Raw response:', data);
try {
var response = JSON.parse(data);
if (res.statusCode === 200) {
console.log('Topic ' + topicId + ' successfully assigned');
} else {
console.log('Topic ' + topicId + ' error:', response.errors || response.error_type || response);
}
} catch (e) {
console.log('Parse error:', e.message);
}
if (callback) callback();
});
});
req.on(‘error’, function(e) {
console.error('Request error for topic ’ + topicId + ‘:’, e);
if (callback) callback();
});
req.write(postData);
req.end();
}
// التشغيل بالتتابع
var index = 0;
function next() {
if (index < topicIds.length) {
assignTopic(topicIds[index], function() {
index++;
setTimeout(next, 500);
});
}
}
console.log(‘Assigning topics:’, topicIds.join(‘, ‘));
console.log(‘Assign to:’, CONFIG.assignToUsername);
console.log(’’);
next();
يعرض Discourse Assign نقاط النهاية لواجهة برمجة التطبيقات (API) التالية:
/assign/assign.json)المعلمات المطلوبة:
target_id - مُعرِّف الموضوع أو المشاركةtarget_type - إما \"Topic\" أو \"Post\"بالإضافة إلى واحدة مما يلي:
username - اسم المستخدم الذي سيتم التعيين إليهgroup_name - اسم المجموعة التي سيتم التعيين إليهاالمعلمات الاختيارية:
note - ملاحظة التعيينstatus - حالة التعيينshould_notify - إرسال الإشعارات (الافتراضي: true)/assign/unassign.json)المعلمات المطلوبة:
target_id - مُعرِّف الموضوع أو المشاركةtarget_type - إما \"Topic\" أو \"Post\"# تعيين الموضوع 123 للمستخدم "john"
curl -X PUT "https://your-discourse.com/assign/assign.json" \
-H "Api-Key: YOUR_API_KEY" \
-H "Api-Username: YOUR_USERNAME" \
-H "Content-Type: application/json" \
-d '{"target_id": 123, "target_type": "Topic", "username": "john"}'
# التعيين لمجموعة بدلاً من ذلك
curl -X PUT "https://your-discourse.com/assign/assign.json" \
-H "Api-Key: YOUR_API_KEY" \
-H "Api-Username: YOUR_USERNAME" \
-H "Content-Type: application/json" \
-d '{"target_id": 123, "target_type": "Topic", "group_name": "support-team"}'
ملاحظات
target_type: "Post" مع مُعرِّف المشاركة@opcourdis مثال Node.js أعلاه يبدو صحيحًا! ![]()
شكرًا للمشاركة، من الجيد أن نرى أنه يمكننا تضمين جميع تلك المعلمات