Aggiungi evento al calendario usando REST API

Ciao,

Ho cercato per ore come usare la REST API per aggiungere un evento del calendario a un argomento e purtroppo non ho trovato una risposta.

Ho creato un calendario di categorie e ho potuto visualizzare il mio evento dell’argomento creato manualmente, ma non sono riuscito a gestire l’automazione della creazione dell’evento dell’argomento quando aggiungo un argomento tramite REST API.

Ho trovato “discourse-post-events/events.json” ma quando ho provato questa API, ho ottenuto “Not Found”. Suppongo sia perché c’è bisogno di ID evento e non so come crearli.

Grazie per il tuo aiuto, consigli e commenti.

1 Mi Piace

Che ne dici di creare un argomento o un post per l’evento tramite l’API e aggiungere i tag [event][/event] al post come valore del suo parametro raw?

Il trucco sembra essere che ci deve essere un carattere di nuova riga (\n) tra i tag event di apertura e chiusura.

Sto usando \"Content-Type: multipart/form-data\" nell’esempio seguente perché è più facile che gestire JSON dalla riga di comando. Inoltre, $api_key è impostato sul valore di una vera chiave API:

curl -X POST \"http://localhost:4200/posts.json\" \
-H \"Api-Key: $api_key\" \
-H \"Api-Username: scossar\" \
-H \"Content-Type: multipart/form-data\" \
-F title=\"Can I create an event via the API?\" \
-F category=6 \
-F raw='[event start=\"2024-05-10 20:00\" status=\"public\" timezone=\"America/Vancouver\" end=\"2024-05-10 21:30\" allowedGroups=\"trust_level_0\"]\n[/event]'
1 Mi Piace
    const url = DISCOURSE_BASE_URL + '/posts.json';
    const message = {
        method: 'POST',
        headers: {
            'Api-Key': DISCOURSE_API_KEY,
            'Api-Username': DISCOURSE_API_USERNAME,
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            "title": title, 
            "raw": content,
            "category": categoryId
        })
    };
    const response1 = await fetch(url, message);

Ottengo "Unprocessable Entity" quando raw è come segue:

[event start="2024-05-16 19:00" status="public" name="585" timezone="Europe/Paris" allowedGroups="trust_level_0" end="2024-05-16 21:00"]
[/event]

Quando rimuovo la dichiarazione dell’evento e inserisco una descrizione alternativa, il mio forum viene aggiornato, ma non appena inserisco la dichiarazione dell’evento, ottengo "Unprocessable Entity".

Non capisco cosa sto sbagliando.

Dovrai eseguire l’escape delle virgolette doppie che si verificano all’interno della stringa. Ad esempio:

"raw": "[event start=\"2024-05-16 19:00\"...\n```

Inoltre, assicurati di includere il carattere di nuova riga (`\n`) tra i tag dell'evento.

Ho preso i miei dati e ho provato a creare il post usando l’UX. Mi ha detto che il nome dell’evento deve essere di almeno 5 caratteri.

Dopo di che ho provato la tua query curl @simon e ha detto qualcosa di interessante: non posso creare post perché non ho i diritti per creare eventi…

Quindi gli ho dato i diritti di amministratore.

E ora va tutto bene. Tutto funziona.

Grazie per il tuo aiuto!

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.