Discourse 사용자 메모 API

Discourse API를 사용하여 특정 사용자의 모든 사용자 노트(user notes)를 가져오려고 합니다. 이 노트는 discourse-user-notes 플러그인을 통해 적용됩니다.

Get a user by id를 사용하면 user_note_count 필드를 확인할 수 있습니다. 하지만 사용자 노트의 실제 내용을 찾을 수가 없네요.

직원들이 사용자와 나눈 이메일 본문이나 화상 회의의 주요 포인트와 같은 정보를 사용자에게 연결하고 싶습니다. 노트를 위한 필드를 가진 중복 데이터베이스를 만드는 대신 Discourse PostgreSQL 데이터를 활용하길 바랍니다.

이미 구축되어 있으므로 기존 discourse-user-notes를 활용하길 원합니다.

직원용 별도 데스크톱 애플리케이션을 보유하고 있으며, 이 애플리케이션은 http 요청을 사용하여 Discourse와 통신하는 Discourse API를 사용하며 Dart/Flutter로 작성되었습니다.

Ruby에 대한 경험은 없습니다.

아래 파일에서 HTTP API로 노출될 수 있는 정보를 가져올 수 있는 방법이 있을까요?

데이터 익스플로러 플러그인을 사용하고 Discourse API로 데이터 익스플로러 쿼리 실행하는 것을 권장합니다. 이를 통해 데이터 익스플로러 데이터를 가져오기 위한 자체 API 엔드포인트를 생성할 수 있습니다.

해당 노트를 읽을 수 있는 권한이 있는 사용자로 요청하고 계신가요?

도움 주셔서 감사합니다. 사용자 노트의 내용을 확인하기 위해 실행해야 하는 쿼리는 무엇인가요?

플러그인의 소스 코드에서 노트가 저장된 필드를 확인할 수 있는 방법이 있을까요? 사용자의 custom_field를 어떻게든 표시할 수 있을까요?

discourse-user-notes/plugin.rb at main · discourse/discourse-user-notes · GitHub

Ruby를 읽는 법을 모르지만, 어딘가에 user_notes라는 필드가 있고 user.id로 검색할 수 있으며, 그 안에 raw 필드가 있는 notes 객체가 있을 수도 있겠다는 생각입니다.

추측일 뿐입니다. Discourse 대신 사용자를 추출하여 노트를 별도의 데이터베이스에 저장하는 방법을 고려하고 있습니다. 하지만 노트를 특정 사용자와 게시물에 연결하는 것이 더 쉬울 것이므로, 가능하다면 Discourse의 데이터를 사용하고자 합니다.

      notes = notes_for(user.id)
      record = {
        id: SecureRandom.hex(16),
        user_id: user.id,
        raw: raw,
        created_by: created_by,
        created_at: Time.now
      }.merge(opts)

      notes << record
      ::PluginStore.set("user_notes", key_for(user.id), notes)

      user.custom_fields[COUNT_FIELD] = notes.size
      user.save_custom_fields

관리자 권한으로 사용자 목록을 가져와서 어떤 사용자에게 노트가 적용되어 있는지 확인하고 있습니다. 노트가 있는 사용자 목록을 식별한 후, 직원이 사용자의 배경 정보를 바탕으로 질문에 더 쉽게 응답할 수 있도록 노트를 테이블로 표시하려고 합니다.


/user_notes.json?user_id=2를 사용하려고 하고 있습니다.

@Falco 님 덕분에 user_notes를 가져올 수 있게 되었습니다.

curl https://community.domain.com/admin/reports/user_notes.json \
  -H 'Api-Key: abcdefghijklmnop' \
  -H 'Api-Username: system'