안녕하세요,
REST API를 사용하여 주제에 캘린더 이벤트를 추가하는 방법에 대해 몇 시간 동안 검색해 보았지만, 불행히도 답변을 찾을 수 없었습니다.
카테고리 캘린더를 생성했고 수동으로 만든 주제 이벤트를 표시할 수는 있었지만, REST API를 통해 주제를 추가할 때 주제 이벤트 생성을 자동화하는 방법을 찾지 못했습니다.
"discourse-post-events/events.json"을 찾았지만 이 API를 시도해 보니 “Not Found” 오류가 발생했습니다. 이벤트 ID가 필요한데 어떻게 생성하는지 모르기 때문이라고 추측합니다.
도와주셔서 감사합니다. 조언과 의견을 부탁드립니다.
simon
2
API를 통해 이벤트용 주제나 게시물을 생성하고, 게시물의 raw 파라미터 값으로 [event][/event] 태그를 추가하는 것은 어떨까요?
핵심은 시작 event 태그와 닫기 태그 사이에 줄바꿈 문자(\n)가 있어야 한다는 점입니다.
아래 예시에서는 명령줄에서 JSON을 다루는 것보다 더 쉬우므로 "Content-Type: multipart/form-data"를 사용했습니다. 또한 $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);
raw가 다음과 같을 때 “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)를 포함하는지 확인하세요.
데이터를 가져와서 UX를 통해 게시물을 생성해 보았습니다. 이벤트 이름은 최소 5자여야 한다는 메시지가 떴습니다.
그 다음 @simon 님의 curl 쿼리를 시도해 보니 흥미로운 결과가 나왔습니다. 이벤트를 생성할 권한이 없어 게시물을 생성할 수 없다는 것이었습니다.
그래서 관리자 권한을 부여해 주었습니다.
이제 정상적으로 작동합니다. 모든 것이 잘 되고 있습니다.
도와주셔서 감사합니다!