채널 내 메시징

이 페이지에서는 메시지 발송/조회 및 기타 메시지와 관련된 API가 간략하게 기술되어 있습니다. 번역 기능이 필요할 경우아래 내용을 확인하여 주십시오.

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

  • 번역 기능을 사용 할 경우, 메시지 발송 시 translationTargetLanguages 파라미터에 번역 될 언어 코드 (ISO-639) 값을 입력하여 주십시오.

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

  • message 객체에 있는 'translations' 필드에 번역된 텍스트를 확인 할 수 있습니다. 언어 코드 (ISO-639) 값을 키(KEY) 값으로 사용하면 번역된 텍스트(Value)를 가져올 수 있습니다.

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

채널 내 메시지 목록을 조회할 수 있습니다.

마지막 수신 시간을 기준으로 정렬되어 있습니다.

메시지 목록 조회 시, translationTargetLanguage 프로프티를 설정하면 번역된 텍스트가 메시지 객체에 포홤되어 반환됩니다.

  • 채널에 과거에 전송된 메시지를 대상으로 번역된 메시지를 가져오는 기능을 수행합니다.

  • 실시간으로 전달되는 메시지에 대한 번역 언어 설정은 로그인 메소드에서 설정할 수 있습니다.

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. 채널 내 파일 메시지 목록 조회

채널 내 파일 메시지 목록만 따로 조회가 가능합니다.

마지막 수신 시간을 기준으로 정렬되어 있습니다.

메시지 목록 조회 시, translationTargetLanguage 프로프티를 설정하면 번역된 텍스트가 메시지 객체에 포홤되어 반환됩니다.

  • 채널에 과거에 전송된 메시지를 대상으로 번역된 메시지를 가져오는 기능을 수행합니다.

  • 실시간으로 전달되는 메시지에 대한 번역 언어 설정은 로그인 메소드에서 설정할 수 있습니다.

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

3. 메시지 발송

채널에 메시지를 발송할 수 있습니다.

현재 지원하는 타입은 text, hidden, custom타입입니다.

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

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

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

  • 메시지 발송 시 회신 하고자 하는 메시지를 parentMessageId 필드를 이용하여 지정할 수 있습니다.

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

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

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

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

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

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

이모티콘

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

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

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

4. 메시지 조회

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

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

5. 메시지 회신

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

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

6. 메시지 읽음 확인

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

await client.markAsRead({channelId: 'my_channel'}); 

7. 메시지 리액션

메시지 리액션 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"
    ]
}
*/

8. 메시지 번역

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

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

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

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

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

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

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

10. 메시지 삭제

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

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

Last updated