Y a-t-il un moyen d’attribuer via l’API ? Je ne le vois pas dans la documentation, mais j’aimerais être surpris ![]()
Edit : il semble que je vais essayer de faire de l’ingénierie inverse !
Y a-t-il un moyen d’attribuer via l’API ? Je ne le vois pas dans la documentation, mais j’aimerais être surpris ![]()
Edit : il semble que je vais essayer de faire de l’ingénierie inverse !
Tout d’abord, notre objectif est d’avoir une API stable, il s’agit d’un effort de plusieurs années pour y parvenir, mais c’est certainement un endroit où nous voulons arriver.
En attendant, une astuce raisonnable pour 2025 consiste à s’appuyer sur des agents IA pour résoudre ces problèmes :
Cela montre comment vous pouvez compter sur notre assistant GitHub pour répondre à la question !
Avez-vous trouvé une solution ? Si oui, pouvez-vous partager ce que vous avez appris ici ?
Salut !
Pas encore ! Ce projet a été repoussé pour quelque chose de plus urgent, mais je m’y remettrai la semaine prochaine ![]()
@tobiaseigen cela fonctionne pour moi en utilisant node js
var https = require(‘https’);
// Configuration
var CONFIG = {
apiUrl: ‘YOURDISCOURSEDOMAIN’,
apiKey: ‘YOURAPIKEY’,
apiUsername: ‘YOURAPIUSER’,
assignToUsername: ‘USERNAMETOASSIGNTO’ // Nom d'utilisateur auquel attribuer les sujets
};
// IDs de sujets à attribuer
var topicIds = [634]; // changer avec l'id du sujet
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('Statut:', res.statusCode);
console.log('Réponse brute:', data);
try {
var response = JSON.parse(data);
if (res.statusCode === 200) {
console.log('Sujet ' + topicId + ' attribué avec succès');
} else {
console.log('Erreur pour le sujet ' + topicId + ':', response.errors || response.error_type || response);
}
} catch (e) {
console.log('Erreur d\'analyse:', e.message);
}
if (callback) callback();
});
});
req.on(‘error’, function(e) {
console.error('Erreur de requête pour le sujet ' + topicId + ':', e);
if (callback) callback();
});
req.write(postData);
req.end();
}
// Exécuter séquentiellement
var index = 0;
function next() {
if (index < topicIds.length) {
assignTopic(topicIds[index], function() {
index++;
setTimeout(next, 500);
});
}
}
console.log('Attribution des sujets:', topicIds.join(‘, ‘));
console.log('Attribuer à:', CONFIG.assignToUsername);
console.log(’’);
next();
Les points de terminaison API suivants sont exposés par Discourse Assign :
/assign/assign.json)Paramètres requis :
target_id - L’ID du sujet ou du messagetarget_type - Soit \"Topic\" soit \"Post\"Plus un des suivants :
username - Nom d’utilisateur auquel assignergroup_name - Nom du groupe auquel assignerParamètres optionnels :
note - Note d’assignationstatus - Statut de l’assignationshould_notify - Envoyer des notifications (par défaut : true)/assign/unassign.json)Paramètres requis :
target_id - L’ID du sujet ou du messagetarget_type - Soit \"Topic\" soit \"Post\"# Assigner le sujet 123 à l'utilisateur "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"}'
# Assigner à un groupe à la place
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"}'
Notes
target_type: "Post" avec l’ID du message@opcourdis l’exemple Node.js ci-dessus semble correct ! ![]()
Merci d’avoir partagé, c’est agréable de voir que nous pouvons inclure tous ces paramètres