您好,
我花了几个小时寻找如何使用 REST API 向主题添加日历事件,但很遗憾,我没有找到答案。
我已经创建了一个类别日历,并且可以显示手动创建的主题事件,但无法在通过 REST API 添加主题时自动创建主题事件。
我找到了“discourse-post-events/events.json”,但在尝试此 API 时,我收到“未找到”。我猜这是因为需要事件 ID,而我不知道如何创建它们。
感谢您的帮助、建议和评论。
您好,
我花了几个小时寻找如何使用 REST API 向主题添加日历事件,但很遗憾,我没有找到答案。
我已经创建了一个类别日历,并且可以显示手动创建的主题事件,但无法在通过 REST API 添加主题时自动创建主题事件。
我找到了“discourse-post-events/events.json”,但在尝试此 API 时,我收到“未找到”。我猜这是因为需要事件 ID,而我不知道如何创建它们。
感谢您的帮助、建议和评论。
如何通过 API 创建主题或帖子,并在帖子中添加 [event][/event] 标签作为其 raw 参数的值?
诀窍似乎在于,event 标签的开始和结束之间必须有一个换行符 (\n)。
在下面的示例中,我使用了 \"Content-Type: multipart/form-data\",因为它比从命令行处理 JSON 更容易。此外,$api_key 被设置为实际 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]'
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”。
我不明白我哪里做错了。
您需要转义字符串中出现的双引号。例如:
"raw": "[event start=\"2024-05-16 19:00\"...\n```
另外,请确保在事件标签之间包含换行符 (`\n`)。
我获取了我的数据并尝试使用用户体验创建帖子。它告诉我事件名称必须至少有 5 个字符。
之后,我尝试了你的 curl 查询 @simon,它说了一些有趣的事情:我无法创建帖子,因为我没有创建事件的权限……
然后我给了他管理员权限。
现在一切都正常了。一切都在运行。
感谢你的帮助!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.