제품 개요
Basic Concepts
응용 시나리오
기능 소개
계정 시스템
사용자 정보 및 관계망
메시지 관리
그룹 시스템
Official Account
Audio/Video Call
사용 제한
TencentCloudChat.create를 호출하여 SDK를 초기화합니다.Create Applicaion 버튼을 클릭하여 새로운 SDKAppID를 생성할 수 있습니다.
TencentCloudChat.create(options);
Name | Type | Description |
SDKAppID | Number | Chat 애플리케이션의 SDKAppID |
proxyServer | String | undefined | WebSocket 서버 프록시 주소(미니 프로그램 플랫폼은 IP 주소 사용이 지원 안 됨) |
// v2.x의 SDK를 이미 통합했고, 프로젝트 코드를 최대한 적게 변경하면서 V3으로 업그레이드하시려면 계속하여 TIM을 사용할 수 있습니다.// import TIM from '@tencentcloud/chat';import TencentCloudChat from '@tencentcloud/chat';import TIMUploadPlugin from 'tim-upload-plugin';import TIMProfanityFilterPlugin from 'tim-profanity-filter-plugin';let options = {SDKAppID: 0 // 액세스할 때 당신의 Chat 애플리케이션 SDKAppID로 0을 대체해야 합니다.};// SDK 인스턴스를 생성하며, `TencentCloudChat.create()` 방법은 동일한 `SDKAppID`에 대해 동일한 인스턴스만 반환합니다.let chat = TencentCloudChat.create(options); // SDK 인스턴스는 일반적으로 chat로 나타냅니다.chat.setLogLevel(0); // 일반 레벨의 경우, 로그량이 많으므로 액세스할 때 사용하는 것을 권장합니다.// chat.setLogLevel(1); // release 레벨의 경우, SDK가 핵심 정보를 출력하므로 생산 환경에서 사용하는 것을 권장합니다.// Tencent Cloud Chat 업로드 플러그인chat.registerPlugin({'tim-upload-plugin': TIMUploadPlugin});// Tencent Cloud Chat 로컬 심사 플러그인 등록chat.registerPlugin({'tim-profanity-filter-plugin': TIMProfanityFilterPlugin});
let onSdkReady = function(event) {let message = chat.createTextMessage({to: 'user1',conversationType: 'C2C',payload: { text: 'Hello world!' }});chat.sendMessage(message);};chat.on(TencentCloudChat.EVENT.SDK_READY, onSdkReady);
let onSdkNotReady = function(event) {// chat.login({userID: 'your userID', userSig: 'your userSig'});};chat.on(TencentCloudChat.EVENT.SDK_NOT_READY, onSdkNotReady);
let onMessageReceived = function(event) {// event.data - Message 객체를 저장하기 위한 배열 - [Message]};chat.on(TencentCloudChat.EVENT.MESSAGE_RECEIVED, onMessageReceived);
let onMessageModified = function(event) {// event.data - 수정된 Message 객체를 저장하기 위한 배열 - [Message]};chat.on(TencentCloudChat.EVENT.MESSAGE_MODIFIED, onMessageModified);
let onMessageRevoked = function(event) {// event.data - Message 객체를 저장하기 위한 배열 - [Message] - 각 Message 객체의 isRevoked 속성 값은 true임};chat.on(TencentCloudChat.EVENT.MESSAGE_REVOKED, onMessageRevoked);
let onMessageReadByPeer = function(event) {// event.data - Message 객체를 저장하기 위한 배열 - [Message] - 각 Message 객체의 isPeerRead 속성 값은 true임};chat.on(TencentCloudChat.EVENT.MESSAGE_READ_BY_PEER, onMessageReadByPeer);
let onMessageReadReceiptReceived = function(event) {// event.data - 메시지 읽음 확인 정보를 저장하기 위한 배열const readReceiptInfoList = event.data;readReceiptInfoList.forEach((item) => {const { groupID, userID, messageID, readCount, unreadCount, isPeerRead } = item;// messageID - 메시지 ID// userID - C2C 메시지 수신 측// isPeerRead - C2C 메시지 상대 측의 읽음 여부// groupID - 그룹 ID// readCount - 그룹 메시지 읽은 인원수// unreadCount - 그룹 메시지 읽지 않은 인원수const message = chat.findMessage(messageID);if (message) {if (message.conversationType === TencentCloudChat.TYPES.CONV_C2C) {if (message.readReceiptInfo.isPeerRead === true) {// 상대 측 읽음}} else if (message.conversationType === TencentCloudChat.TYPES.CONV_GROUP) {if (message.readReceiptInfo.unreadCount === 0) {// 전부 읽음} else {// message.readReceiptInfo.readCount - 최신 메시지 읽음 수// 어느 그룹 구성원이 이 메시지를 읽었는지 조회하시려면 [getGroupMessageReadMemberList] 인터페이스를 사용하십시오.}}}});}chat.on(TencentCloudChat.EVENT.MESSAGE_READ_RECEIPT_RECEIVED, onMessageReadReceiptReceived);
let onMessageExtensionsUpdated = function(event) {const { messageID, extensions } = event.data;// messageID - 메시지 ID// extensions - 메시지 확장 정보extensions.forEach((item) => {const { key, value } = item;// key - 메시지 확장 key// value - 메시지 확장 key에 대응되는 value 값});};chat.on(TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_UPDATED, onMessageExtensionsUpdated);
let onMessageExtensionsDeleted = function(event) {const { messageID, keyList } = event.data;// messageID - 메시지 ID// keyList - 삭제된 메시지 확장 key 목록keyList.forEach((key) => {// console.log(key)});};chat.on(TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_DELETED, onMessageExtensionsDeleted);
let onConversationListUpdated = function(event) {console.log(event.data); // Conversation 인스턴스를 포함하는 배열};chat.on(TencentCloudChat.EVENT.CONVERSATION_LIST_UPDATED, onConversationListUpdated);
let onTotalUnreadMessageCountUpdated = function(event) {console.log(event.data); // 현재 1대1 채팅과 그룹 채팅 대화의 읽지 않은 총 수};chat.on(TencentCloudChat.EVENT.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED, onTotalUnreadMessageCountUpdated);
let onConversationGroupListUpdated = function(event) {console.log(event.data); // 전체 대화 그룹 이름 목록}chat.on(TencentCloudChat.EVENT.CONVERSATION_GROUP_LIST_UPDATED, onConversationGroupListUpdated);
let onConversationInGroupUpdated = function(event) {const { groupName, conversationList } = event.data;// groupName - 대화 그룹 이름// conversationList - 그룹 내의 대화 목록}chat.on(TencentCloudChat.EVENT.CONVERSATION_IN_GROUP_UPDATED, onConversationInGroupUpdated);
let onGroupListUpdated = function(event) {console.log(event.data);// Group 인스턴스를 포함하는 배열};chat.on(TencentCloudChat.EVENT.GROUP_LIST_UPDATED, onGroupListUpdated);
let onGroupAttributesUpdated = function(event) {const groupID = event.data.groupID // 그룹 IDconst groupAttributes = event.data.groupAttributes // 업데이트 후의 그룹 속성console.log(event.data);};chat.on(TencentCloudChat.EVENT.GROUP_ATTRIBUTES_UPDATED, onGroupAttributesUpdated);
let onGroupCounterUpdated = function(event) {const { groupID, key, value } = event.data;// groupID - 그룹 ID// key - 그룹 카운터 key// value - 그룹 카운터 key에 대응되는 value};chat.on(TencentCloudChat.EVENT.GROUP_COUNTER_UPDATED, onGroupCounterUpdated);
let onTopicCreated = function(event) {const groupID = event.data.groupID // 화제 소속 커뮤니티 IDconst topicID = event.data.topicID // 화제 IDconsole.log(event.data);};chat.on(TencentCloudChat.EVENT.TOPIC_CREATED, onTopicCreated);
let onTopicDeleted = function(event) {const groupID = event.data.groupID // 화제 소속 커뮤니티 IDconst topicIDList = event.data.topicIDList // 삭제된 화제 ID 목록console.log(event.data);};chat.on(TencentCloudChat.EVENT.TOPIC_DELETED, onTopicDeleted);
let onTopicUpdated = function(event) {const groupID = event.data.groupID // 화제 소속 커뮤니티 IDconst topic = event.data.topic // 화제 정보console.log(event.data);};chat.on(TencentCloudChat.EVENT.TOPIC_UPDATED, onTopicUpdated);
let onProfileUpdated = function(event) {console.log(event.data); // Profile 객체를 포함하는 배열};chat.on(TencentCloudChat.EVENT.PROFILE_UPDATED, onProfileUpdated);
let onUserStatusUpdated = function(event) {console.log(event.data);const userStatusList = event.data;userStatusList.forEach((item) => {const { userID, statusType, customStatus } = item;// userID - 사용자 ID// statusType - 사용자 상태로 열거 값 및 설명은 다음과 같습니다.// TencentCloudChat.TYPES.USER_STATUS_UNKNOWN - 미지// TencentCloudChat.TYPES.USER_STATUS_ONLINE - 온라인// TencentCloudChat.TYPES.USER_STATUS_OFFLINE - 오프라인// TencentCloudChat.TYPES.USER_STATUS_UNLOGINED - 미로그인// customStatus - 사용자 정의 상태})};chat.on(TencentCloudChat.EVENT.USER_STATUS_UPDATED, onUserStatusUpdated);
let onBlacklistUpdated = function(event) {console.log(event.data); // 나의 블록리스트 목록으로, 구조는 사용자 userID를 포함하는 배열입니다.};chat.on(TencentCloudChat.EVENT.BLACKLIST_UPDATED, onBlacklistUpdated);
let onFriendListUpdated = function(event) {console.log(event.data);}chat.on(TencentCloudChat.EVENT.FRIEND_LIST_UPDATED, onFriendListUpdated);
let onFriendGroupListUpdated = function(event) {console.log(event.data);}chat.on(TencentCloudChat.EVENT.FRIEND_GROUP_LIST_UPDATED, onFriendGroupListUpdated);
let onFriendApplicationListUpdated = function(event) {// friendApplicationList - 친구 신청 목록 - [FriendApplication]// unreadCount - 친구 신청 읽지 않은 수const { friendApplicationList, unreadCount } = event.data;// 나에게 보내온 친구 신청(즉 타인이 나에게 친구 추가를 신청함)const applicationSentToMe = friendApplicationList.filter((friendApplication) => {return friendApplication.type === TencentCloudChat.TYPES.SNS_APPLICATION_SENT_TO_ME});// 내가 보낸 친구 추가 신청(즉 내가 타인에게 친구 추가를 신청함)const applicationSentByMe = friendApplicationList.filter((friendApplication) => {return friendApplication.type === TencentCloudChat.TYPES.SNS_APPLICATION_SENT_BY_ME});};chat.on(TencentCloudChat.EVENT.FRIEND_APPLICATION_LIST_UPDATED, onFriendApplicationListUpdated);
let onKickedOut = function(event) {console.log(event.data.type);// TencentCloudChat.TYPES.KICKED_OUT_MULT_ACCOUNT(Web 측, 동일 계정, 다중 페이지 로그인으로 인해 퇴출당함)// TencentCloudChat.TYPES.KICKED_OUT_MULT_DEVICE(동일 계정, 다중 기기 로그인으로 인해 퇴출당함)// TencentCloudChat.TYPES.KICKED_OUT_USERSIG_EXPIRED(서명 만료)// TencentCloudChat.TYPES.KICKED_OUT_REST_API(REST API kick 인터페이스 퇴출)};chat.on(TencentCloudChat.EVENT.KICKED_OUT, onKickedOut);
let onNetStateChange = function(event) {// event.data.state 현재 네트워크 상태로, 열거 값 및 설명은 다음과 같습니다.// TencentCloudChat.TYPES.NET_STATE_CONNECTED - 접속된 네트워크// TencentCloudChat.TYPES.NET_STATE_CONNECTING// 연결 중. 네트워크 지터가 발생할 가능성이 높으며, SDK가 다시 시도합니다. 액세스 측에서는 이 상태에 따라 ‘현재 네트워크 상태가 불안정합니다’ 또는 ‘연결 중’이라고 알릴 수 있습니다.// TencentCloudChat.TYPES.NET_STATE_DISCONNECTED// 네트워크에 접속하지 않았습니다. 액세스 측에서는 이 상태에 따라 ‘현재 네트워크를 사용할 수 없습니다’라고 알릴 수 있습니다. SDK는 여전히 재시도하며, 사용자의 네트워크가 복원되면 SDK는 메시지를 자동으로 동기화합니다.};chat.on(TencentCloudChat.EVENT.NET_STATE_CHANGE, onNetStateChange);
chat.destroy();
피드백