API를 통해 새 채팅 메시지 확인하기

안녕하세요,

저는 Discourse를 다른 앱에 통합하는 중이며, API를 통해 사용자에게 대기 중인 새 채팅 활동이 있는지 표시하는 방법을 찾고 있습니다. 새 메시지가 있으면 빨간색 배지만 표시하면 됩니다.

더 구체적으로 말하면, 고객이 설정한 “chat_header_indicator_preference” 설정을 활용하고 싶습니다. 현재 이 설정은 "all_new"로 되어 있으며, 이는 제가 속한 채널의 새 메시지와 읽지 않은 멘션/DM을 모두 표시해야 한다고 생각합니다.

/session/current.json을 통해 이 용도로 사용할 수 있는 정보를 볼 수 있기를 희망했지만, 유용한 내용을 찾지 못했습니다.

사용자의 chat_header_indicator_preference에 기반하여 새 메시지가 있는지 확인할 수 있는 API 엔드포인트가 있을까요?

/chat/api/me/channels과 추적 키에 필요한 모든 정보가 포함되어 있습니다. 언젠가 더 전문적인 엔드포인트를 만들 수도 있습니다.

@j.jaffeux 감사합니다. /chat/api/me/channels 엔드포인트를 확인해 보니, tracking 항목을 통해 모든 채널을 순회하며 unread_count가 0보다 큰 채널이 있는지 확인할 수 있어서 도움이 됩니다.

하지만 이것은 사용자의 chat_header_indicator_preference와는 무관해 보이며, 사용자에게 DM이나 멘션이 있는지 여부도 알려주지 않습니다.

이론적으로는 먼저 사용자가 chat_header_indicator_preference를 "all_new"로 설정했는지 확인하고, 그렇다면 채널의 unread_count가 0보다 큰 값이 있는지 확인한 후, 모든 값이 0이라면 읽지 않은 DM/멘션을 확인하는 방식으로 chat_header_indicator_preference의 로직을 재현해 볼 수 있습니다.

하지만 더 나은 방법이 있을 것 같아 기대하고 있습니다… (그리고 읽지 않은 DM/멘션에 해당하는 두 번째 정보를 어떻게 가져와야 하는지도 잘 모르겠습니다.)

도움이나 조언을 주시면 매우 감사하겠습니다.

죄송합니다만, 어떤 것을 달성하려는 건지 잘 이해가 가지 않습니다.

채팅에서 새로운 활동이 있으면 앱에 배지를 표시하려고 합니다.

설정 → 채팅 섹션에는 "chat_header_indicator_preference"라는 설정이 있으며, 다음과 같은 옵션이 있습니다:

사용자는 이 설정에 따라 새로운 활동이 있을 때만 빨간색 배지를 볼 것으로 기대합니다. "All New Messages"가 설정되어 있다면, 사용자가 속한 채널 중 어디든 새로운 활동이 있거나 멘션이나 DM이 있는 경우 배지가 표시되어야 한다고 생각합니다.

전체 채널을 순회하여 읽지 않은 메시지가 있는지 확인하는 방법을 알려주셨지만, 1) 이는 해당 설정과 무관하며 2) 직접 메시지(DM)나 멘션이 있는지 이해하는 데 도움이 되지 않습니다.

이상적으로는 고객의 chat_header_indicator_preference를 기반으로 배지를 표시하는 데 도움이 되는 엔드포인트를 찾는 것이 목표였습니다.

그것이 불가능하다면, 먼저 chat/api/me/channels의 "tracking section"에서 읽지 않은 항목이 있는지 확인한 후, DM/멘션이 있는지 확인하기 위해 두 번째 위치를 확인해야 할 것 같습니다.

그 두 번째 위치가 어디인지 모르지만, 여기서 다른 누군가가 올바른 방향으로 안내해 주기를 바랐습니다.

이해가 되시나요?

추적은 직접 채널과 공개 채널을 모두 제공합니다.

감사합니다… 그건 저한테는 좀 애매했어요.

트래킹에서 DM 채널인지 공개 채널인지 구별하는 방법이 있을까요?

사용자가 chat_header_indicator_preference를 "Direct Messages and Mentions"으로 설정해 두었다면, 일반 채널의 새 메시지에 대해 배지를 표시하고 싶지 않습니다.

네, direct_message_channels와 public_channels가 있으므로 트래킹에서 id를 사용하여 조회할 수 있습니다.