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>