채널 내 메시징

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

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

  • 메시지를 가져오는 메소드 경우, TPMessageRetrievalParams 객체의 translationLanguage 프로퍼티에 번역 될 언어 코드 (ISO-639) 값을 입력하여 주십시오.

  • 메시지를 전송하는 메소드 경우, TPMessageSendParams 객체의 translationLanguage 프로퍼티에 번역 될 언어 코드 (ISO-639) 값을 입력하여 주십시오.

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

  • TPMessage 객체의 'getTranslatedText' 메소드를 호출하면 Key-Value 형태의 타입으로 번역 결과물이 반환되며, 'translationLanguage(s)' 파라미터에 사용한 언어 코드 (ISO-639) 값을 키(KEY) 값으로 사용하면 번역된 텍스트(Value)를 가져올 수 있습니다.

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

채널 내 메시지 목록을 조회합니다.

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

TPMessageRetrievalParams 객체의 translationLanguage 프로퍼티를 설정할 경우, 번역된 메시지 객체 또는 번역된 메시지 목록 객체가 성공 블럭 (성공 클로저)를 통해서 TPMessage 객체가 전달됩니다.

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

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

  • TPMessageRetrievalParams 클래스는 TalkPlus iOS SDK v0.5.3 이상에서 지원됩니다.

// 특정 채널의 메시지 목록을 가져오고 싶은 경우
TPMessageRetrievalParams *params = 
    [[TPMessageRetrievalParams alloc] initWithChannel:channel];
params.lastMessage = lastMessage;
params.orderby = TPOrderByLatest;
params.translationLanguage = translationLanguage;

[[TalkPlus sharedInstance] getMessages:params 
    success:^(NSArray<TPMessage *> *tpMessages, BOOL hasNext) {
    // SUCCESS
    // If 'hasNext' is YES, call this method with the last object in 'tpMessages'.
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

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

채널 내 파일이 첨부된 메시지 목록을 조회합니다.

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

TPMessageRetrievalParams 객체의 translationLanguage 프로퍼티를 설정할 경우, 번역된 메시지 객체 또는 번역된 메시지 목록 객체가 성공 블럭 (성공 클로저)를 통해서 TPMessage 객체가 전달됩니다.

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

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

  • TPMessageRetrievalParams 클래스는 TalkPlus iOS SDK v0.5.3 이상에서 지원됩니다.

TPMessageRetrievalParams *params = 
    [[TPMessageRetrievalParams alloc] initWithChannel:channel];
params.lastMessage = lastMessage;
params.orderby = TPOrderByLatest;
params.translationLanguage = translationLanguage;

[[TalkPlus sharedInstance] getFileMessages:params 
    success:^(NSArray<TPMessage *> *tpMessages, BOOL hasNext) {
    // SUCCESS
    // If 'hasNext' is YES, call this method with the last object in 'tpMessages'.
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

3. 메시지 발송

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

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

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

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

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

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

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

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

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

    • 메시지 텍스트와 data 둘 다 빈 값일 경우 발송에 실패합니다.

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

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

이모티콘

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

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

  • 아래 메소드를 이용하여 translationLanguages 파라미터를 설정할 경우, 메시지를 전송하는 측에서는 성공 블럭 (성공 클로저)에서 번역된 메시지를 확인할 수 있고, 메시지를 수신하는 측에서는 "messageReceived" 콜백 이벤트를 통해서 번역된 메시지를 확인할 수 있습니다.

    • TPMessageSendParams 클래스는 TalkPlus iOS SDK v0.5.3 이상에서 지원됩니다.

// 메시지 발송
TPMessageSendParams * params = 
    [[TPMessageSendParams alloc] initWithContentType:TPMessageContentText
        messageType:TPMessageText
        channel:channel];
        
params.textMessage = text; // 필수 파라미터
params.mentionUserIDs = mentionUserIDs;
params.parentMessageId = parentMessageId;
params.fileUrl = fileUrl;
params.translationLanguages = translationLanguages;

[[TalkPlus sharedInstance] sendMessage:params success:^(TPMessage *tpMessage) {
    // SUCCESS
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

// 파일 업로드
TPMessageSendParams * params = 
    [[TPMessageSendParams alloc] initWithContentType:TPMessageContentFile
        messageType:TPMessageText
        channel:channel];

params.filePath = filePath; // 필수 파라미터
params.textMessage = textMessage;
params.mentionUserIDs = mentionUserIDs;
params.parentMessageId = parentMessageId;
params.translationLanguages = translationLanguages;

[[TalkPlus sharedInstance] sendMessage:params success:^(TPMessage *tpMessage) {
    // SUCCESS
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

4. 메시지 조회

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

// 특정 채널의 메시지 1개만 가져오고 싶은 경우 
TPMessageRetrievalParams *params = 
    [[TPMessageRetrievalParams alloc] initWithChannel:channel];
params.messageId = messageId;
params.translationLanguage = translationLanguage;

[[TalkPlus sharedInstance] getMessage:tpChannel 
    success:^(TPMessage *tpMessage) {
            
} failure:^(int errorCode, NSError *error) {
    
}];

5. 메시지 회신

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

TPMessageSendParams * params = 
    [[TPMessageSendParams alloc] initWithContentType:TPMessageContentText
        messageType:TPMessageText
        channel:channel];
        
params.textMessage = @"hello";
params.parentMessageId = @"anotherMessageIdThatIamReplyingTo";

[[TalkPlus sharedInstance] sendMessage:params success:^(TPMessage *tpMessage) {
    // SUCCESS
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

6. 메시지 읽음 확인

안 읽은 메시지 수를 카운팅하기 위해 메시지 읽음 확인 API를 제공합니다.

[[TalkPlus sharedInstance] markAsReadChannel:tpChannel 
    success:^(TPChannel *tpChannel) {
    // SUCCESS
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}]

7. 메시지 리액션

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

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

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

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

// reaction 추가
[[TalkPlus sharedInstance] addMessageReaction:tpMessage 
    reaction:reaction 
    success:^(TPMessage *tpMessage) {
    // SUCCESS
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

// reaction 삭제
[[TalkPlus sharedInstance] removeMessageReaction:tpMessage 
    reaction:reaction 
    success:^(TPMessage *tpMessage) {
    // SUCCESS
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

// 메시지 객체에 있는 reaction 조회
[tpMessage getReactions];
/*
{
    "happy": [
        "user1",
        "user2"
    ],
    "sad": [
        "user3"
    ]
}
*/

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

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

[tpChannel getMessageUnreadCount:tpMessage];

9. 메시지 삭제

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

[[TalkPlus sharedInstance] deleteMessage:tpChannel 
    message:tpMessage 
    success:^{
    // SUCCESS
} failure:^(int errorCode, NSError *error) {
    // FAILURE
}];

Last updated