zikapanam
(Zikapanam)
1
こんにちは。
REST API を使用してトピックにカレンダーイベントを追加する方法を何時間も探しましたが、残念ながら答えを見つけることができませんでした。
カテゴリ「calendar」を作成し、手動で作成したトピックイベントを表示することはできましたが、REST API を使用してトピックを追加したときにトピックイベントの作成を自動化する方法を処理できませんでした。
「discourse-post-events/events.json」を見つけましたが、この API を試したところ、「Not Found」というエラーが発生しました。イベント ID が必要で、それらをどのように作成すればよいかわからないためだと思います。
ご協力、アドバイス、コメントをよろしくお願いいたします。
「いいね!」 1
simon
2
API を使用してイベントのトピックまたは投稿を作成し、投稿の raw パラメータの値として [event][/event] タグを追加するのはどうでしょうか。
トリックは、event タグの開始タグと終了タグの間に改行文字 (\n) が必要であるということです。
以下の例では、コマンドラインから JSON を扱うよりも簡単なため、"Content-Type: multipart/form-data" を使用しています。また、$api_key は実際のエラーキーの値に設定されています。
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
zikapanam
(Zikapanam)
3
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);
以下のような場合に「Unprocessable Entity」というエラーが発生します。
[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]
イベント宣言を削除して代替の説明を入れると、フォーラムは更新されますが、イベント宣言を入れるとすぐに「Unprocessable Entity」というエラーが発生します。
何が間違っているのか理解できません。
simon
4
文字列内に現れる二重引用符はエスケープする必要があります。たとえば、次のようになります。
"raw": "[event start=\"2024-05-16 19:00\"...\n```
また、イベントタグ間に改行文字 (`\n`) を含めるようにしてください。
zikapanam
(Zikapanam)
5
UX を使ってデータから投稿を作成しようとしましたが、イベント名は最低 5 文字必要だと表示されました。
その後、@simon の curl クエリを試したところ、興味深いことがわかりました。イベントを作成する権限がないため、投稿を作成できないのです。
そこで、彼に管理者権限を与えました。
これで問題なく動作するようになりました。
ご協力ありがとうございました!
「いいね!」 1
system
(system)
クローズされました:
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.