ITUIChatService

ITUIChatService

Methods

sendTextMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送文本消息

Examples
// 发送普通文本消息
let promise = TUIChatService.sendTextMessage({
 payload: {
   text: 'Hello world!'
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
// 发送普通文本消息并携带消息自定义数据
let promise = TUIChatService.sendTextMessage({
 payload: {
   text: 'Hello world!'
 },
 cloudCustomData: 'your cloud custom data'
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

文本消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendTextAtMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送附带 @ 提醒功能的文本消息

Example
// 发送 @ 消息
let promise = TUIChatService.sendTextAtMessage({
 payload: {
   text: '@denny @lucy @所有人 今晚聚餐,收到的请回复1',
   atUserList: ['denny', 'lucy', TUIChatEngine.TYPES.MSG_AT_ALL] // 'denny' 'lucy' 都是 userID,而非昵称
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

附带 @ 提醒功能的文本消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendImageMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送图片消息

Example
// 发送图片消息
let promise = TUIChatService.sendImageMessage({
 payload: {
   file: file
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

图片消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendAudioMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送音频消息

Example
// 发送音频消息
let promise = TUIChatService.sendAudioMessage({
 payload: {
   file: file
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

音频消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendVideoMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送视频消息

Example
// 发送视频消息
let promise = TUIChatService.sendVideoMessage({
 payload: {
   file: file
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

视频消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendFileMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送文件消息

Example
// 发送文件消息
let promise = TUIChatService.sendFileMessage({
 payload: {
   file: file
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

文件消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendCustomMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送自定义消息

Example
// 发送自定义消息
let promise = TUIChatService.sendCustomMessage({
 payload: {
  data: 'dice', // 用于标识该消息是骰子类型消息
  description: String(random(1,6)), // 获取骰子点数
  extension: ''
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

自定义消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendFaceMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送表情消息

Example
// 发送自定义消息
let promise = TUIChatService.sendFaceMessage({
 payload: {
   index: 1, // Number 表情索引,用户自定义
   data: 'tt00' // String 额外数据
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

表情消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendLocationMessage(options, sendMessageOptionsopt) → {Promise.<any>}

发送地理位置消息

Example
// 发送地理位置消息
let promise = TUIChatService.sendLocationMessage({
 payload: {
  description: '深圳市深南大道10000号腾讯大厦',
  longitude: 113.941079, // 经度
  latitude: 22.546103 // 纬度
 },
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options SendMessageParams

地理位置消息相关参数

sendMessageOptions SendMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

sendForwardMessage(conversationList, messageList, sendForwardMessageOptionsopt) → {Promise.<any>}

转发消息

  • 注意:支持逐条转发和合并转发
Examples
// 逐条转发,把当前会话的 message1,message2 逐条转发给会话 conversation1, conversation2
let promise = TUIChatService.sendForwardMessage([conversation1, conversation2], [message1, message2]);
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
// 合并转发,把当前会话的 message1,message2 合并转发给会话conversation1, conversation2
let promise = TUIChatService.sendForwardMessage([conversation1, conversation2], [message1, message2], { needMerge: true });
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
// 合并转发,把当前会话的 message1,message2 合并转发给会话 conversation1, conversation2, 自定义合并后的消息 title
const sendForwardMessageOptions = {
   needMerge: true,
   // 合并转发配置项,needMerge = true 时生效。
`  mergeInfo: {
     title: '自定义合并后的消息 title'
   }
}
let promise = TUIChatService.sendForwardMessage([conversation1, conversation2], [message1, message2], sendForwardMessageOptions);
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
conversationList Array.<(Conversation|IConversationModel)>

接收转发消息的会话列表

messageList Array.<(Message|MessageModel)>

待转发的消息列表

sendForwardMessageOptions SendForwardMessageOptions <optional>

消息发送选项

Returns:
Type
Promise.<any>

enterTypingState() → {void}

开始输入

  • 注意: 只支持 C2C 会话
Example
TUIChatService.enterTypingState();
Returns:
Type
void

leaveTypingState() → {void}

结束输入

  • 注意: 只支持 C2C 会话
Example
TUIChatService.leaveTypingState();
Returns:
Type
void

sendMessageReadReceipt(messageList) → {Promise.<any>}

发送消息已读回执

Example
let promise = TUIChatService.sendMessageReadReceipt([messageModel1, messageModel2, messageModel3]);
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Description
messageList Array.<MessageModel>

messageModel 列表

Returns:
Type
Promise.<any>

getGroupMessageReadMemberList(options) → {Promise.<any>}

获取群消息已读(或未读)群成员列表

Examples
// 获取已读群成员列表
let promise = TUIChatService.getGroupMessageReadMemberList({
 message,
 filter: 0,
 cursor: '', // 第一次拉取传''
 count: 30,
});
promise.then(function(response) {
 const { isCompleted, cursor, messageID, readUserInfoList } = response;
  // isCompleted - true,拉取完成;false 未完成
  // cursor - 当 isCompleted 为 false 的时候用于续拉
  // messageID - 群消息的 ID
  // readUserInfoList - 已读的群成员用户信息列表
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
// 获取未读群成员列表
let promise = TUIChatService.getGroupMessageReadMemberList({
 message,
 filter: 1,
 cursor: '', // 第一次拉取传''
 count: 30,
});
promise.then(function(response) {
 const { isCompleted, cursor, messageID, unreadUserInfoList } = response;
  // isCompleted - true,拉取完成;false 未完成
  // cursor - 当 isCompleted 为 false 的时候用于续拉
  // messageID - 群消息的 ID
  // unreadUserInfoList - 未读的群成员用户信息列表
});
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Description
options GetGroupMessageReadParams

参数选项

Returns:
Type
Promise.<any>

getMessageList(optionsopt) → {Promise.<any>}

分页拉取指定会话的消息列表的接口,当用户进入会话首次渲染消息列表或者用户“下拉查看更多消息”时,需调用该接口。

Example
let promise = TUIChatService.getMessageList();
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Attributes Description
options GetMessageListParams <optional>

获取漫游消息参数

Returns:
Type
Promise.<any>

downloadMergedMessages(message) → {Promise.<any>}

下载合并后的消息。如果发送方发送的合并消息较大,Chat SDK 会将此消息存储到云端,消息接收方查看消息时,需要先把消息从云端下载到本地。

Example
if (message.type === TUIChatEngine.TYPES.MSG_MERGER && message.payload.downloadKey !== '') {
 // 下载成功后,SDK会更新 message.payload.messageList 等信息
 let promise = TUIChatService.downloadMergedMessages(message);
 promise.catch((error) => {
   // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
 });
}
Parameters:
Name Type Description
message Record.<string, any>

消息对象或合并消息对象的 messageBody

Returns:
Type
Promise.<any>

setTranslationLanguage(language) → {void}

设置文本消息翻译的目标语言

注意:v2.1.0 起支持。

Example
TUIChatService.setTranslationLanguage('en');
Parameters:
Name Type Description
language string

目标语言,支持的目标语言有多种,例如:英语-"en",简体中文-"zh",法语-"fr",德语-"de"等。

Returns:
Type
void

translateText(options) → {Promise.<any>}

翻译文本消息

Example
let promise = TUIChatService.translateText({
 sourceTextList: ['مرحبًا'],
 sourceLanguage: 'auto',
});
promise.then((chatResponse) => {
 // 翻译成功 translatedTextList 和 sourceTextList 的元素一一对应
 const { translatedTextList } = chatResponse.data;
});
Parameters:
Name Type Description
options TranslateTextParams

需要翻译的消息及配置信息

Returns:
Type
Promise.<any>

searchCloudMessages(options) → {Promise.<any>}

搜索云端消息

【v0.1.2起支持】
注意1:此功能当前处于限免阶段,您可通过即时通信 IM 功能及购买咨询交流群联系我们为您开通体验完整功能。
注意2:此接口本地限频 2 次/秒。
注意3:搜索【全部会话】的消息,如果匹配到的消息数量 messageCount > 1,则接口返回的 messageList 为 [],您可以在 UI 上展示 【${messageCount} 条相关记录】。如果您想高亮展示匹配到的消息,请参考【指定搜索】,将接口返回的 messageList 高亮展示。
注意4:搜索【全部会话】的消息,如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息。
注意5:社群、topic、直播群,不支持搜索云端消息。

Examples
// 全量搜索,指定关键字
// - 搜索消息里出现 ‘你好’ 或 ‘在哪里’
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
});
// 全量搜索,指定关键字和匹配类型搜索
// - 搜索消息里出现了 ‘你好’ 与 ‘在哪里’ 的消息
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
   keywordListMatchType: 'and',
});
// 全量搜索,指定关键字列表和消息发送者搜索
// - 搜索消息发送者为 ‘user1’ 或 ‘user2’,且消息里出现了 ‘你好’ 或 ‘在哪里’ 的消息
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
   senderUserIDList: ['user1', 'user2'],
});
// 全量搜索,指定关键字和消息类型搜索
// - 搜索消息类型为 ‘文本消息’ 或 ‘自定义消息’,且消息里出现了 ‘你好’ 或 ‘在哪里’ 的消息
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
   messageTypeList: [TUIChatEngine.TYPES.MSG_TEXT, TUIChatEngine.TYPES.MSG_CUSTOM],
});
// 全量搜索,搜索所有图片消息(当指定发送者或消息类型时,关键字列表可以为空)
let promise = TUIChatService.searchCloudMessages({
   messageTypeList: [TUIChatEngine.TYPES.MSG_IMAGE],
});
// 全量搜索,只指定消息发送者和消息类型搜索(当指定发送者或消息类型时,关键字列表可以为空)
// - 搜索消息发送者为 ‘user1’ 或 ‘user2’,且消息类型为 ‘文本消息’ 或 ‘自定义消息’ 的消息
let promise = TUIChatService.searchCloudMessages({
   senderUserIDList: ['user1', 'user2'],
   messageTypeList: [TUIChatEngine.TYPES.MSG_TEXT, TUIChatEngine.TYPES.MSG_CUSTOM],
});
// 全量搜索,指定关键字和时间(过去一天)搜索
// - 搜索过去一天,消息里出现了 ‘你好’ 或 ‘在哪里’的消息
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
   timePosition: Number((new Date().getTime()/1000).toFixed(0)),
   timePeriod: 24 * 60 * 60,
});
promise.then(function(imResponse) {
 // 搜索消息成功
   const { totalCount, cursor,searchResultList } = imResponse.data;
   console.log(totalCount); // 满足搜索条件的消息所在的所有会话总数量
   console.log(cursor); // 下一次云端搜索的起始位置, 如果没有表示搜索结果拉取完成
   console.log(searchResultList); // 满足搜索条件的消息根据会话 ID 分组,分页返回分组结果
   for (let i = 0; i < searchResultList.length; i++) {
      const searchResultItem = searchResultList[i];
      const { conversationID, messageCount, messageList } = searchResultItem;
      console.log(conversationID); // 会话 ID
      console.log(messageCount); // 当前会话一共搜索到了多少条符合要求的消息
      // 本次搜索【全部会话】,那么 messageList 中装载的消息条数会有如下两种可能:
      // - 如果某个会话中匹配到的消息条数 > 1,则 messageList 为空,您可以在 UI 上显示“ messageCount 条相关记录”。
      // - 如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息,您可以在 UI 上显示之,并高亮匹配关键词。
      console.log(messageList);
    }
}).catch(function(imError) {
   console.error(imError); // 搜索消息失败
});
// 指定会话,指定关键字搜索
// - 搜索在 'GROUPPublic001' 会话中,消息里出现 ‘你好’ 或 ‘在哪里’ 的消息。
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
   conversationID: 'GROUPPublic001'
});
// 指定会话,指定消息类型搜索(当指定发送者或消息类型时,关键字列表可以为空)
// - 在 'GROUPPublic001' 会话中,搜索图片消息。
let promise = TUIChatService.searchCloudMessages({
   conversationID: 'GROUPPublic001',
   messageTypeList: [TUIChatEngine.TYPES.MSG_IMAGE],
});
// 指定会话,指定关键字和消息类型搜索
// - 搜索在 'GROUPPublic001' 会话中,消息里出现 ‘你好’ 或 ‘在哪里’,且消息类型为 ‘文本消息’ 或 ’自定义消息’ 的消息。
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
   conversationID: 'GROUPPublic001'
   messageTypeList: [TUIChatEngine.TYPES.MSG_TEXT, TUIChatEngine.TYPES.MSG_CUSTOM],
});
// 指定会话,指定关键字和时间(过去一天)搜索
// - 搜索过去一天,在 'GROUPPublic001' 会话中,消息里出现 ‘你好’ 或 ‘在哪里’ 的消息。
let promise = TUIChatService.searchCloudMessages({
   keywordList: ['你好', '在哪里'],
   conversationID: 'GROUPPublic001'
   timePosition: Number((new Date().getTime()/1000).toFixed(0)),
   timePeriod: 24 * 60 * 60,
});
promise.then(function(imResponse) {
   // 搜索消息成功
   const { totalCount, cursor, searchResultList } = imResponse.data;
   console.log(totalCount); // 满足搜索条件的消息总数量
   console.log(cursor); // 下一次云端搜索的起始位置, 如果没有表示搜索结果拉取完成
   console.log(searchResultList); // 当前会话搜索的消息结果
   const { conversationID, messageCount, messageList } = searchResultList[0];
   console.log(conversationID); // 会话ID
   console.log(messageCount); // 当前会话一共搜索到了多少条符合要求的消息
   console.log(messageList); // 本会话中所有满足搜索条件的消息列表
}).catch(function(imError); {
   console.error(imError); // 搜索消息失败
});
Parameters:
Name Type Description
options SearchCloudMessagesParams

需要搜索的消息的参数

Returns:
Type
Promise.<any>

addMessageReaction(message, reactionID) → {Promise.<any>}

添加消息回应

Example
let promise = TUIChatService.addMessageReaction(message, 'smile');
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Description
message MessageModel

消息实实例 Model

reactionID string

消息回应 ID

Returns:
Type
Promise.<any>

removeMessageReaction(message, reactionID) → {Promise.<any>}

删除消息回应

Example
let promise = TUIChatService.removeMessageReaction(message, 'smile');
promise.catch((error) => {
 // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Description
message MessageModel

消息实实例 Model

reactionID string

消息回应 ID

Returns:
Type
Promise.<any>

getAllUserListOfMessageReaction(options) → {Promise.<any>}

分页拉取指定消息回应的用户列表

Example
let promise = TUIChatService.getAllUserListOfMessageReaction({
  message: message,
  reactionID: 'smile',
  nextSeq: 0,
  count: 100,
});
promise.then(function(response) {
  // 获取成功
  const { userList, nextSeq, isCompleted } = response.data;
  // userList - 用户信息列表,包含用户的 userID、nick、avatar 信息
  // nextSeq - 用于续拉,分页续拉时需传入该字段
  // isCompleted - 表示是否已经拉完所有的用户信息。isCompleted 为 true 时,nextSeq 为 0
}).catch(function(error) {
  // 调用异常时业务侧可以通过 promise.catch 捕获异常进行错误处理
});
Parameters:
Name Type Description
options GetAllUserListOfMessageReactionParams

分页拉取指定消息回应的用户列表参数

Returns:
Type
Promise.<any>

convertVoiceToText(options) → {Promise.<any>}

语音转文字

Examples
// 将语音转为中文
let promise = TUIChatService.convertVoiceToText({
 message: audioMessageModel,
});
promise.then((chatResponse) => {
 const { result } = chatResponse.data;
});
// 将语音转为日文
let promise = TUIChatService.convertVoiceToText({
 message: audioMessageModel,
 language: 'ja-JP',
});
promise.then((chatResponse) => {
 const { result } = chatResponse.data;
});
Parameters:
Name Type Description
options ConvertVoiceToTextParams

语音转文字参数信息

Returns:
Type
Promise.<any>