이 페이지에서는 메시지 발송/조회 및 기타 메시지와 관련된 API가 간략하게 기술되어 있습니다. 번역 기능이 필요할 경우아래 내용을 확인하여 주십시오.
메시지 번역 기능은 구글 클라우드 번역 서비스를 통하여 지원됩니다. 이 기능을 사용하려면 톡플러스 대쉬보드(TalkPlus Dashboard)에서 구글 클라우드 서비스 계정 KEY 를 추가하여 주십시오.
번역 기능을 사용 할 경우, 메시지 발송 시 translationTargetLanguages 파라미터에 번역 될 언어 코드 (ISO-639) 값을 입력하여 주십시오.
message 객체에 있는 'translations' 필드에 번역된 텍스트를 확인 할 수 있습니다. 언어 코드 (ISO-639) 값을 키(KEY) 값으로 사용하면 번역된 텍스트(Value)를 가져올 수 있습니다.
1. 채널 내 메시지 목록 조회
채널 내 메시지 목록을 조회할 수 있습니다.
마지막 수신 시간을 기준으로 정렬되어 있습니다.
메시지 목록 조회 시, translationTargetLanguage 프로프티를 설정하면 번역된 텍스트가 메시지 객체에 포홤되어 반환됩니다.
채널에 과거에 전송된 메시지를 대상으로 번역된 메시지를 가져오는 기능을 수행합니다.
실시간으로 전달되는 메시지에 대한 번역 언어 설정은 로그인 메소드 에서 설정할 수 있습니다.
Copy 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
Copy {
"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 프로프티를 설정하면 번역된 텍스트가 메시지 객체에 포홤되어 반환됩니다.
채널에 과거에 전송된 메시지를 대상으로 번역된 메시지를 가져오는 기능을 수행합니다.
실시간으로 전달되는 메시지에 대한 번역 언어 설정은 로그인 메소드 에서 설정할 수 있습니다.
Copy 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자입니다.
메시지 text
와 data
둘 다 빈 값일 경우 발송에 실패합니다.
메세지 텍스트의 허용된 최대 길이는 8,192자입니다.
업로드 가능한 최대 파일 사이즈는 15MB입니다.
이모티콘
UTF-8에서 지원하는 이모티콘을 메시지 본문에 사용할 수 있습니다.
그 외에 이모티콘은 메시지 본문 텍스트에 필요한 값을 넣고 직접 파싱 후 표시하는 방법이 있습니다.
메시지 발송 메시지 발송 (자동번역) 파일 업로드 파일URL 지정하여 메시지 발송
Copy await client .sendMessage ({
channelId ,
type : 'text' ,
text : '안녕하세요?' ,
data : {imageUrl : 'http://image.cdn.com/123.jpg' } ,
mentions : [ 'user1' , 'user2' ] // optional: 특정 사용자 멘션
});
Copy const resp = await client .sendMessage ({
channelId ,
type : 'text' ,
text : '안녕하세요?' ,
data : {imageUrl : 'http://image.cdn.com/123.jpg' } ,
translationTargetLanguages : [ 'en' , 'de' ] ,
});
const message = resp .message;
console .log ( message .translations);
Copy <input type="file" onchange="sendFile(this)" >
<script>
async function sendFile(input) {
// 파일 업로드
await client.sendMessage({
channelId,
type: 'text',
text: '안녕하세요?',
data: {meta: 'my meta data'},
file: input.files[0], // 업로드 가능한 최대 파일 사이즈는 15MB입니다.
});
}
</script>
Copy await client.sendMessage({
channelId,
type: 'custom',
fileUrl: 'http://somedomain.com/파일경로.jpeg'
});
4. 메시지 조회
단일 메시지를 조회할 수 있습니다.
Copy await client .getMessage ({
channelId ,
messageId : 'someMessageId' ,
});
5. 메시지 회신
회신 하고자 하는 메시지를 지정할 수 있습니다.
Copy await client .sendMessage ({
channelId ,
type : 'text' ,
text : '안녕하세요?' ,
parentMessageId : 'anotherMessageIdThatIamReplyingTo' ,
data : {imageUrl : 'http://image.cdn.com/123.jpg' } ,
});
6. 메시지 읽음 확인
메시지 읽음 확인 API를 제공합니다.
Copy await client .markAsRead ({channelId : 'my_channel' });
7. 메시지 리액션
메시지 리액션 API를 제공합니다.
reaction
값은 최소 1자에서 최대 64까지의 알파벳/숫자 값만 허용합니다.
각 메시지에는 최대 10개의 reaction
타입 추가가 가능합니다.
각 reaction
타입 당 최대 100개의 사용자 ID가 저장됩니다.
Copy // 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 파라미터에 입력하여 주십시오.
Copy await client .translateMessage ({
channelId : 'my_channel' ,
messageId : 'target_messageId' ,
targetLanguages : [ 'en' , 'de' ] ,
});
9. 특정 메시지 안 읽은 사용자 수 확인
특정 메시지를 읽지 않은 사용자 수를 확인할 수 있는 기능을 제공합니다.
Copy 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를 제공합니다.
Copy await client .deleteMessage ({channelId : 'my_channel' , messageId : 'target_messageId' });
Last updated 6 months ago