채널 목록 조회

1. 전체 Public 채널 목록 조회

참여중이 아니더라도 전체 public 채널 목록을 조회할 수 있습니다.

Pagination 처리가 되어 있어 다음 페이지 조회를 위해서는 이전 조회 시에 리턴받은 channel 객체 중 마지막 객체의 id를 전달하면 그 다음 페이지를 조회할 수 있습니다.

const numOfRows = 20;

const resp = await client.getPublicChannels({
    limit: numOfRows,
    category: 'important_channels', // optional
    subcategory: 'important_subcategory', // optional
});

// fetch more channels
if (resp.hasNext) {
    const lastChannelId = resp.channels[resp.channels.length - 1].id;
    const moreChannelsResp = await client.getPublicChannels({
                                        lastChannelId,
                                        limit: numOfRows,
                                    });
}

// same query but using callback
client.getPublicChannels({}, function(err, resp) {
   if (resp.hasNext) {
        const lastChannelId = resp.channels[resp.channels.length - 1].id;
    } 
});

Response

{
  "channels": [
    {
      "id": "channel123",
      "name": "MyFirstChannel",
      "ownerId": "user123",
      "pushNotificationDisabled": false,
      "imageUrl": "image url",
      "data": {
        "someMetaKey1": "someMetaValue1",
        "someMetaKey2": "someMetaValue2"
      },
      "type": "public",
      "isFrozen": false,
      "memberCount": 1,
      "maxMemberCount": 10,
      "hideMessagesBeforeJoin": true,
      "category": "",
      "subcategory": "",
      "privateTag": "",
      "privateData": "",
      "mutedUsers": [],
      "members": [
        {
          "id": "user123",
          "username": "john",
          "profileImageUrl": "http://cnd.test.com/123.jpg",
          "data": {},
          "memberInfo": {},
          "lastReadAt": 1583924400,
          "lastSentAt": 1583924400,
          "updatedAt": 1583924400,
          "createdAt": 1583921400
        }
      ],
      "bannedUsers": [
        {
          "id": "user123",
          "username": "john",
          "profileImageUrl": "http://cnd.test.com/123.jpg",
          "data": {},
          "memberInfo": {},
          "lastReadAt": 1583924400,
          "lastSentAt": 1583924400,
          "updatedAt": 1583924400,
          "createdAt": 1583921400
        }
      ],
      "bots": [],
      "pushNotificationDisabled": false,
      "pushNotificationSoundAOS": "",
      "pushNotificationSoundIOS": "",
      "updatedAt": 1583924400,
      "createdAt": 1583921400,
      "unreadCount": 1,
      "lastReadAt": 1583914400,
      "lastMessage": {
        "id": "sdf2l5s9j",
        "channelId": "channel123",
        "userId": "user456",
        "username": "myUsername",
        "profileImageUrl": "http://cdn.test.com/123.jpg",
        "type": "message",
        "text": "Hello world",
        "data": {
          "customField": "customData"
        },
        "parentMessage": {},
        "parentMessageId": "",
        "reactions": {"happy": ["user1"]},
        "createdAt": 1583921400
      }
    }
  ],
  "hasNext": false
}

2. 현재 참여 중인 채널 목록 조회

현재 참여 중인 채널 목록을 조회할 수 있습니다.

채널 카테고리, 유저가 설정한 태그 명으로 필터링 해서 열람할 수 있습니다. hasUnread 플래그 값을 true로 설정하여 안 읽은 메시지가 있는 채널로도 필터링 가능합니다.

Pagination 처리가 되어 있어 다음 페이지 조회를 위해서는 이전 조회 시에 리턴받은 channel 객체 중 마지막 객체의 id를 전달하면 그 다음 페이지를 조회할 수 있습니다.

const numOfRows = 20;

const resp = await client.getChannels({
    limit: numOfRows,
    category: 'important_channels', // optional
    subcategory: 'important_subcategory', // optional
    isFrozen: false, // optional. isFrozen 상태가 일치하는 채널만 조회
    hasUnread: true, // optional. true 옵션만 제공. true 일 때 안 읽은 메시지가 있는 채널만 조회
    privateTag: 'tag1', // optional. see: https://docs.talkplus.io/javascript/channel/member-settings
});

if (resp.hasNext) {
    const lastChannelId = resp.channels[resp.channels.length - 1].id;
    const moreChannelsResp = await client.getChannels({lastChannelId, limit: numOfRows});
}

// same query but using callback
client.getChannels({}, function(err, resp) {
   if (resp.hasNext) {
        const lastChannelId = resp.channels[resp.channels.length - 1].id;
    } 
});

3. 숨긴 채널 목록 조회

현재 참여중인 채널 중, 숨김 처리한 목록을 조회할 수 있습니다.

Pagination 처리가 되어 있어 다음 페이지 조회를 위해서는 이전 조회 시에 리턴받은 channel 객체 중 마지막 객체의 id를 전달하면 그 다음 페이지를 조회할 수 있습니다.

const numOfRows = 20;

const resp = await client.getHiddenChannels({limit: numOfRows});
if (resp.hasNext) {
    const lastChannelId = resp.channels[resp.channels.length - 1].id;
    const moreChannelsResp = await client.getHiddenChannels({lastChannelId, limit: numOfRows});
}

// same example but using callback
client.getHiddenChannels({}, function(err, resp) {
   if (resp.hasNext) {
        const lastChannelId = resp.channels[resp.channels.length - 1].id;
    } 
});

Response

{
  "channels": [
    {
      "id": "channel123",
      "name": "MyFirstChannel",
      "ownerId": "user123",
      "pushNotificationDisabled": false,
      "imageUrl": "image url",
      "data": {
        "someMetaKey1": "someMetaValue1",
        "someMetaKey2": "someMetaValue2"
      },
      "type": "public",
      "isFrozen": false,
      "memberCount": 1,
      "maxMemberCount": 10,
      "hideMessagesBeforeJoin": true,
      "category": "",
      "subcategory": "",
      "privateTag": "",
      "privateData": "",
      "mutedUsers": [],
      "members": [
        {
          "id": "user123",
          "username": "john",
          "profileImageUrl": "http://필터링 해서 열람할 수 있습니다. .test.com/123.jpg",
          "data": {},
          "memberInfo": {},
          "lastReadAt": 1583924400,
          "lastSentAt": 1583924400,
          "updatedAt": 1583924400,
          "createdAt": 1583921400
        }
      ],
      "bannedUsers": [
        {
          "id": "user123",
          "username": "john",
          "profileImageUrl": "http://cnd.test.com/123.jpg",
          "data": {},
          "memberInfo": {},
          "lastReadAt": 1583924400,
          "lastSentAt": 1583924400,
          "updatedAt": 1583924400,
          "createdAt": 1583921400
        }
      ],
      "bots": [],
      "pushNotificationDisabled": false,
      "pushNotificationSoundAOS": "",
      "pushNotificationSoundIOS": "",
      "updatedAt": 1583924400,
      "createdAt": 1583921400,
      "unreadCount": 1,
      "lastReadAt": 1583914400,
      "lastMessage": {
        "id": "sdf2l5s9j",
        "channelId": "channel123",
        "userId": "user456",
        "username": "myUsername",
        "profileImageUrl": "http://cdn.test.com/123.jpg",
        "type": "message",
        "text": "Hello world",
        "data": {
          "customField": "customData"
        },
        "parentMessage": {},
        "parentMessageId": "",
        "reactions": {"happy": ["user1"]},
        "createdAt": 1583921400
      }
    }
  ],
  "hasNext": false
}

4. 전체 채널의 안 읽은 메시지 수 조회

현재 참여중인 모든 채널의 안 읽은 메시지 수 합을 조회할 수 있습니다.

// get total unread count
const resp = await client.getUnreadCount();
console.log('unreadCount: ', resp.count);

// filter unread message count by channel category, subcategory and privateTag.
// this feature is available starting from v0.5.6.
const filteredResp = await client.getUnreadCount({
    category: 'someCategory', // optional
    subcategory: 'someSubcategory', // optional
    privateTag: 'some personal tag', // optional
});
console.log('filtered unreadCount: ', filteredResp.count);

5. 전체 채널 메시지 읽음 확인

현재 참여중인 모든 채널에 일괄적으로 메시지 읽음 확인 처리를 합니다.

await client.markAsReadAllChannel();

6. 참여 중인 채널 검색

현재 참여중인 채널 목록을 검색할 수 있습니다.

채널명, 채널 카테고리 이름, 유저가 설정한 태그 명, 또는 특정 사용자가 참여하고 있는지 여부로 필터링 해서 열람할 수 있습니다. hasUnread 플래그 값을 true로 설정하여 안 읽은 메시지가 있는 채널로도 필터링 가능합니다.

Pagination 처리가 되어 있어 다음 페이지 조회를 위해서는 이전 조회 시에 리턴받은 channel 객체 중 마지막 객체의 id를 전달하면 그 다음 페이지를 조회할 수 있습니다.

const resp = await client.searchChannels({
    query: '검색하고자 하는 채널명',
    members: ['someUserId1', 'someUserId2'], // 그 중에 특정 사용자가 참여하고 있는 채널만
    category: 'someCategory', // optional
    subcategory: 'someCategory', // optional
    privateTag: 'myTag',
    isFrozen: false, // optional. isFrozen 상태가 일치하는 채널만 조회
    hasUnread: true, // optional. true 옵션만 제공. true 일 때 안 읽은 메시지가 있는 채널만 조회
    limit: 10,
});

// 그 다음 페이지 조회 시
if (resp.hasNext) {
    const lastChannelId = resp.channels[resp.channels.length - 1].id;
    const moreChannelsResp = await client.searchChannels({
        query: '검색하고자 하는 채널명',
        members: ['someUserId1', 'someUserId2'], // 그 중에 특정 사용자가 참여하고 있는 채널만
        category: 'someCategory', // optional
        subcategory: 'someCategory', // optional
        privateTag: 'myTag',
        isFrozen: false, // optional. isFrozen
        limit: 10,
    });
}

Response

{
  "channels": [
    {
      "id": "channel123",
      "name": "MyFirstChannel",
      "ownerId": "user123",
      "pushNotificationDisabled": false,
      "imageUrl": "image url",
      "data": {
        "someMetaKey1": "someMetaValue1",
        "someMetaKey2": "someMetaValue2"
      },
      "type": "private",
      "isFrozen": false,
      "memberCount": 1,
      "maxMemberCount": 10,
      "hideMessagesBeforeJoin": true,
      "category": "",
      "subcategory": "",
      "privateTag": "",
      "privateData": "",
      "mutedUsers": [],
      "members": [
        {
          "id": "user123",
          "username": "john",
          "profileImageUrl": "http://cnd.test.com/123.jpg",
          "data": {},
          "memberInfo": {},
          "lastReadAt": 1583924400,
          "lastSentAt": 1583924400,
          "updatedAt": 1583924400,
          "createdAt": 1583921400
        }
      ],
      "bannedUsers": [
        {
          "id": "user123",
          "username": "john",
          "profileImageUrl": "http://cnd.test.com/123.jpg",
          "data": {},
          "memberInfo": {},
          "lastReadAt": 1583924400,
          "lastSentAt": 1583924400,
          "updatedAt": 1583924400,
          "createdAt": 1583921400
        }
      ],
      "bots": [],
      "pushNotificationDisabled": false,
      "pushNotificationSoundAOS": "",
      "pushNotificationSoundIOS": "",
      "updatedAt": 1583924400,
      "createdAt": 1583921400,
      "unreadCount": 1,
      "lastReadAt": 1583914400,
      "lastMessage": {
        "id": "sdf2l5s9j",
        "channelId": "channel123",
        "userId": "user456",
        "username": "myUsername",
        "profileImageUrl": "http://cdn.test.com/123.jpg",
        "type": "message",
        "text": "Hello world",
        "data": {
          "customField": "customData"
        },
        "parentMessage": {},
        "parentMessageId": "",
        "reactions": {"happy": ["user1"]},
        "createdAt": 1583921400
      }
    }
  ],
  "hasNext": false
}

Last updated