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 // アクセスする際には、0 を Chat アプリケーションの SDKAppID に置き換える必要があります};// SDK のインスタンスを作成します。`TencentCloudChat.create()`メソッドは、同じ`SDKAppID` に対して 1 つのインスタンスのみを返しますlet chat = TencentCloudChat.create(options); // SDK インスタンスは通常 chat で示されますchat.setLogLevel(0); // 通常レベルで、ログ量が多く、アクセスする際には使用することを推奨します// chat.setLogLevel(1); // release レベルで、SDK は重要な情報を出力し、本番環境で使用することを推奨します// Tencesnt 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); // 現在のシングルチャットとグループチャットセッションの未読総数};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();
フィードバック