채널 내 메시징

1. 채널 내 메시지 목록 조회

채널 내 메시지 목록을 조회할 수 있습니다. 마지막 수신 시간을 기준으로 정렬되어 있습니다.

const resp = await client.getMessages({
    channelId: 'my_channel',
    order: 'latest', // default: 'latest'. Use 'oldest' to order by oldest messages first
    limit: 10, // how many messages to fetch, default: 20, max: 50
});

if (resp.hasNext) {
    const lastMessageId = resp.messages[resp.messages.length - 1].id;
    
    const moreResp = await client.getMessages({
        channelId: 'my_channel',
        lastMessageId: lastMessageId,
        limit: 10,
    });
}

Response

{
  "messages": [
    {
      "id": "5f7d5e407d138500010000ce",
      "channelId": "my_channel",
      "userId": "user456",
      "username": "user456",
      "profileImageUrl": "http://cdn.test.com/456.jpg",
      "type": "text",
      "text": "Hello",
      "data": {},
      "fileUrl": "http://cdn.test.com/123.jpg",
      "mentions": [],
      "parentMessage": {}, // 회신대상 메시지
      "parentMessageId": "", // 회신대상 메시지 ID
      "reactions": {"happy": ["user1", "user2"]},
      "createdAt": 1583921400
    }
  ],
  "hasNext": false
}

2. 채널 내 파일 메시지 목록 조회

채널 내 파일 메시지 목록만 따로 조회가 가능합니다. 마지막 수신 시간을 기준으로 정렬되어 있습니다. Pagination 파라미터 (limit, lastMessageId) 용법은 "1. 채널 내 메시지 목록 조회" 사용법과 동일합니다. (JS SDK v0.2.11 이상부터 지원됩니다)

const resp = await client.getFileMessages({
    channelId: 'my_channel',
    limit: 10,
});

3. 메시지 발송

채널에 메시지를 발송할 수 있습니다. 현재 지원하는 타입은 text, hidden, custom, admin, admin_hidden 타입입니다.

  • hidden 메시지 타입 발송 시, Push Notification은 발송되지 않습니다.

  • admin, admin_hidden 메시지 타입은 TalkPlus 대시보드 또는 REST API를 통해서만 발송이 가능합니다.

  • data의 경우, 최대 5개의 Key-value 형식의 데이터를 넣을 수 있습니다.

    • key, value 둘 다 문자열이어야 합니다.

    • key값의 최대 길이는 128자이고 value값의 최대 길이는 1024자입니다.

    • 메시지 textdata 둘 다 빈 값일 경우 발송에 실패합니다.

  • 멘션하고 싶은 사용자가 있을 시, mentions 필드에 멘션하고자 하는 사용자 ID 배열을 넘겨주면 됩니다.

  • 메세지 텍스트의 허용된 최대 길이는 8192자입니다.

  • 업로드 가능한 최대 파일 사이즈는 15MB입니다.

  • 15MB 이상의 파일 전송을 위한 안내 https://docs.talkplus.io/faq/message#7.

  • 이모티콘 전송

    • UTF-8에서 지원하는 이모티콘을 메시지 본문에 직접 사용할 수 있습니다.

    • 그 외에 이모티콘은 메시지 본문 텍스트에 필요한 값을 넣고 직접 파싱 후 표시하는 방법이 있습니다.

  • 메시지 번역 기능은 구글 클라우드 번역 서비스를 통하여 지원됩니다. 이 기능을 사용하려면 톡플러스 대쉬보드(TalkPlus Dashboard)에서 구글 클라우드 서비스 계정 KEY 를 추가하여 주십시오.

    • JS SDK v0.4.13 이상부터 지원됩니다.

    • 번역 될 언어 코드 (IOS-639) 값을 translationTargetLanguages 파라미터에 입력하여 주십시오.

    • 사용할 수 있는 언어 코드 (IOS-639) 값은 아래 링크를 참조하여 주십시오. https://cloud.google.com/translate/docs/languages

await client.sendMessage({
    channelId, 
    type: 'text', 
    text: '안녕하세요?', 
    data: {imageUrl: 'http://image.cdn.com/123.jpg'},
    mentions: ['user1', 'user2'] // optional: 특정 사용자 멘션
});

4. 메시지 조회

단일 메시지를 조회할 수 있습니다.

(JS SDK v0.4.10 이상부터 지원됩니다)

await client.getMessage({
    channelId, 
    messageId: 'someMessageId',
});

5. 메시지 회신

메시지 발송 시 회신 하고자 하는 메시지를 지정할 수 있습니다.

(JS SDK v0.3.1 이상부터 지원됩니다)

await client.sendMessage({
    channelId, 
    type: 'text', 
    text: '안녕하세요?', 
    parentMessageId: 'anotherMessageIdThatIamReplyingTo',
    data: {imageUrl: 'http://image.cdn.com/123.jpg'},
});

6. 메시지 리액션

메시지 리액션 API를 제공합니다.

  • reaction 값은 최소 1자에서 최대 64까지의 알파벳/숫자 값만 허용합니다.

  • 각 메시지에는 최대 10개의 reaction 타입 추가가 가능합니다.

  • reaction 타입 당 최대 100개의 사용자 ID가 저장됩니다.

// reaction 추가
await client.addMessageReaction({
    channelId: 'my_channel', 
    messageId: 'my_message',
    reaction : 'happy',
});

// reaction 삭제
await client.removeMessageReaction({
    channelId: 'my_channel', 
    messageId: 'my_message',
    reaction : 'happy',
});

// 메시지 객체에 있는 reaction 조회
const msgListResp = await client.getMessages({channelId: 'someChannelId'});
console.log(msgListResp.messages[0].reactions);
/*
{
    "happy": [
        "user1",
        "user2"
    ],
    "sad": [
        "user3"
    ]
}
*/

7. 메시지 번역

메시지 번역 기능은 구글 클라우드 번역 서비스를 통하여 지원됩니다. 이 기능을 사용하려면 톡플러스 대쉬보드(TalkPlus Dashboard)에서 구글 클라우드 서비스 계정 KEY 를 추가하여 주십시오.

  • JS SDK v0.4.13 이상부터 지원됩니다.

  • 번역 될 언어 코드 (IOS-639) 값을 targetLanguages 파라미터에 입력하여 주십시오.

  • 사용할 수 있는 언어 코드 (IOS-639) 값은 아래 링크를 참조하여 주십시오. https://cloud.google.com/translate/docs/languages

await client.translateMessage({
    channelId: 'my_channel', 
    messageId: 'target_messageId',
    targetLanguages: ['en', 'de'],
}); 

8. 메시지 삭제

메시지 삭제 API를 제공합니다.

await client.deleteMessage({channelId: 'my_channel', messageId: 'target_messageId'}); 

9. 메시지 읽음 확인

메시지 읽음 확인 API를 제공합니다.

// previously known prior to JS SDK v0.2.1
await client.markRead({channelId: 'my_channel'}); 

// available starting from JS SDK v0.2.1
await client.markAsRead({channelId: 'my_channel'}); 

10. 특정 메시지 안 읽은 사용자 수 확인

특정 메시지를 읽지 않은 사용자 수를 확인할 수 있는 기능을 제공합니다.

const channelGetResp = await client.getChannel({channelId: 'demo channel'});
const channelObject = channelGetResp.channel;

const msgResp = await client.getMessages({channelId: 'my channel'});
const messageObject = msgResp.messages[0]; // assume that message array is not empty in this example

const msgUnreadCount = client.getMessageUnreadCount({channel: channelObject, message: messageObject});
console.log(`msgUnreadCount: ${msgUnreadCount}`); // integer result

Last updated