일 년 전 Discourse Gamification을 출시한 이래, 로드맵에서 가장 많이 요청된 기능 중 하나는 외부 게이미피케이션 시스템과 Discourse Gamification을 통합할 수 있도록 하는 것이었습니다. 예를 들어 다음과 같은 경우가 있습니다:
-
기업 내 기존 게이미피케이션 프로그램과 통합
-
Discourse 외부에서 발생하는 이벤트(예: 오프라인(IRL) 이벤트)나 온라인 다른 곳(예: 커뮤니티 고객, 제품 구매)에서 포인트를 부여할 수 있는 기능
-
사용자가 포인트를 굿즈, 제품 또는 혜택으로 교환할 수 있는 기능
오늘, 플러그인의 1주년을 맞아 커스텀 스코어링 이벤트를 처리하기 위한 전체 API를 통해 위 모든 기능을 가능하게 했습니다
.
이 새로운 시스템은 관리자가 다음을 수행할 수 있게 합니다:
-
사용자에게 커스텀 스코어링 이벤트를 부여
-
교환 또는 패널티 이벤트를 처리하기 위해 사용자에게 음수 스코어링 이벤트를 부여
-
이전에 생성된 커스텀 이벤트를 업데이트 및 목록으로 보기
API
API를 통해 부여된 포인트는 현재 날짜로 생성된 이벤트의 경우 사용자의 전체 점수에 반영되는 데 최대 1시간이 소요되며, 지난 10일 이내에 생성된 이벤트의 경우 최대 24시간이 소요됩니다. 10일 이전 날짜로 생성된 이벤트의 경우, 관리자 게이미피케이션 UI의 Recalculate Scores 버튼을 사용하거나 백필 rake 태스크를 실행할 수 있습니다:
rake gamification_scores:backfill_scores_from[YYYY-MM-DD].
현재 3개의 서로 다른 API 엔드포인트가 있습니다.
이벤트 목록
최대 100개의 이벤트를 반환합니다. id, user_id, 및/또는 date로 필터링할 수 있습니다.
curl https://<example_url>/admin/plugins/gamification/score_events.json \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>'
특정 사용자 또는 날짜의 이벤트도 목록으로 볼 수 있습니다:
curl https://<example_url>/admin/plugins/gamification/score_events.json?user_id=1&date=2023-05-01 \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>'
이벤트 생성
curl -X POST https://<example_url>/admin/plugins/gamification/score_events.json \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>' \
-H "Content-Type: application/json" \
-d '{
"user_id": 13,
"date": "2023-04-14",
"points": 15,
"description": "May 2023 Karaoke attendee"
}'
jo를 사용한 대체 문법:
jo -p user_id="13" date="2023-04-14" points="15" description="May 2023 Karaoke atendee" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
이벤트 업데이트
업데이트 엔드포인트에는 id와 points가 필요합니다. description은 선택적으로 업데이트할 수 있습니다. 생성 후에는 user_id와 date를 변경할 수 없습니다.
curl -L -X PUT https://<example_url>/admin/plugins/gamification/score_events.json \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>' \
-H "Content-Type: application/json" \
-d '{
"id": 6,
"points": 25,
"description": "May 2023 keynote attendee"
}'
jo를 사용한 대체 문법:
jo -p id="11" points="25" description="May 2023 Karaoke attendee" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
