创建文本消息的接口,此接口返回一个消息实例,可以在需要发送文本消息时调用 发送消息 接口发送消息实例。
接口
tim.createTextMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息接收方的 userID 或 groupID |
conversationType | String | - | 会话类型,取值TIM.TYPES.CONV_C2C (端到端会话)或TIM.TYPES.CONV_GROUP (群组会话) |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
text | String | 消息文本内容 |
返回值
消息实例 Message。
示例
// 发送文本消息,Web 端
// 1. 创建消息实例,接口返回的实例可以上屏
let message = tim.createTextMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
payload: {
text: 'Hello world!'
},
// v2.20.0起支持C2C消息已读回执功能,如果您发消息需要已读回执,需购买旗舰版套餐,并且创建消息时将 needReadReceipt 设置为 true
needReadReceipt: true
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
返回
消息实例 Message。
创建可以附带 @ 提醒功能的文本消息的接口,此接口返回一个消息实例,可以在需要发送文本消息时调用 发送消息 接口发送消息实例。
注意:
- v2.9.0起支持。
- 此接口仅用于群聊,且社群和社群下的话题不支持 @ALL。
接口
tim.createTextAtMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息接收方的 userID 或 groupID |
conversationType | String | - | 会话类型,取值TIM.TYPES.CONV_C2C (端到端会话)或TIM.TYPES.CONV_GROUP (群组会话) |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
text | String | 消息文本内容 |
atUserList | Array | 需要 @ 的用户列表,如果需要 @ALL,请传入 TIM.TYPES.MSG_AT_ALL 。 举个例子,假设该条文本消息希望 @ 提醒 denny 和 lucy 两个用户,同时又希望 @ 所有人,atUserList 传 ['denny', 'lucy', TIM.TYPES.MSG_AT_ALL] |
返回值
消息实例 Message。
示例
// 发送文本消息,Web 端
// 1. 创建消息实例,接口返回的实例可以上屏
let message = tim.createTextAtMessage({
to: 'group1',
conversationType: TIM.TYPES.CONV_GROUP,
// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
payload: {
text: '@denny @lucy @所有人 今晚聚餐,收到的请回复1',
atUserList: ['denny', 'lucy', TIM.TYPES.MSG_AT_ALL] // 'denny' 'lucy' 都是 userID,而非昵称
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
创建图片消息的接口,此接口返回一个消息实例,可以在需要发送图片消息时调用 发送消息 接口发送消息实例。
注意:
- v2.3.1起支持传入 File 对象。
- v2.11.2起支持 uni-app 发图片等文件类消息。
- v2.17.0起支持 webp 格式的图片。
接口
tim.createImageMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下表所示:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息的接收方 |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C 或 TIM.TYPES.CONV_GROUP |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
onProgress | function | - | 获取上传进度的回调函数 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
file | HTMLInputElement | Object | 用于选择图片的 DOM 节点(Web)或者 File 对象(Web)。SDK 会读取其中的数据并上传图片 |
返回值
消息实例 Message。
Web 示例
// Web 端发送图片消息示例1 - 传入 DOM 节点
// 1. 创建消息实例,接口返回的实例可以上屏
let message = tim.createImageMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
payload: {
file: document.getElementById('imagePicker'),
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
// cloudCustomData: 'your cloud custom data'
onProgress: function(event) { console.log('file uploading:', event) }
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
// Web 端发送图片消息示例2- 传入 File 对象
// 先在页面上添加一个 id 为 "testPasteInput" 的消息输入框,如 <input type="text" id="testPasteInput" placeholder="截图后粘贴到输入框中" size="30">
document.getElementById('testPasteInput').addEventListener('paste', function(e) {
let clipboardData = e.clipboardData;
let file;
let fileCopy;
if (clipboardData && clipboardData.files && clipboardData.files.length > 0) {
file = clipboardData.files[0];
// 图片消息发送成功后,file 指向的内容可能被浏览器清空,如果接入侧有额外的渲染需求,可以提前复制一份数据
fileCopy = file.slice();
}
if (typeof file === 'undefined') {
console.warn('file 是 undefined,请检查代码或浏览器兼容性!');
return;
}
// 1. 创建消息实例,接口返回的实例可以上屏
let message = tim.createImageMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
payload: {
file: file
},
onProgress: function(event) { console.log('file uploading:', event) }
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
});
创建音频消息实例的接口,此接口返回一个消息实例,可以在需要发送音频消息时调用 发送消息 接口发送消息。
接口
tim.createAudioMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息的接收方 |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C 或 TIM.TYPES.CONV_GROUP |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
file | Object | 录音后得到的文件信息 |
返回值
消息实例 Message。
创建视频消息实例的接口,此接口返回一个消息实例,可以在需要发送视频消息时调用 发送消息 接口发送消息。
注意:
- v2.6.0起支持在 Web 环境使用。
- v2.17.0起 SDK 支持视频封面 snapshotUrl,需要使用 tim-upload-plugin 作为上传插件。
接口
tim.createVideoMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息的接收方 |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C 或 TIM.TYPES.CONV_GROUP |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
file | HTMLInputElement | File | Object | 自定义消息的数据字段 |
返回值
消息实例 Message。
Web 示例
// web 端发送视频消息示例(v2.6.0起支持):
// 1. 获取视频:传入 DOM 节点
// 2. 创建消息实例
const message = tim.createVideoMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
payload: {
file: document.getElementById('videoPicker') // 或者用event.target
},
onProgress: function(event) { console.log('file uploading:', event) }
});
// 3. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
uni-app 示例
// uni-app 发送视频,使用前请将 SDK 升级至v2.16.2或更高版本,将 tim-upload-plugin 升级至v1.0.2或更高版本
// 1. 选择视频
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'], // album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']
maxDuration: 60, // 设置最长时间60s
camera: 'back', // 后置摄像头
success: function(res) {
let message = tim.createVideoMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
payload: { file: res },
onProgress: function(event) { console.log('file uploading:', event) }
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
}
})
创建自定义消息实例的接口,此接口返回一个消息实例,可以在需要发送自定义消息时调用 发送消息 接口发送消息实例。当 SDK 提供的能力不能满足您的需求时,可以使用自定义消息进行个性化定制。
接口
tim.createCustomMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息接收方的 userID 或 groupID |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C(端到端会话)或 TIM.TYPES.CONV_GROUP(群组会话) |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
data | String | 自定义消息的数据字段 |
description | String | 自定义消息的说明字段 |
extension | String | 自定义消息的扩展字段 |
返回值
消息实例 Message。
示例
// 示例:利用自定义消息实现投骰子功能
// 1. 定义随机函数
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
// 2. 创建消息实例,接口返回的实例可以上屏
let message = tim.createCustomMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_HIGH,
payload: {
data: 'dice', // 用于标识该消息是骰子类型消息
description: String(random(1,6)), // 获取骰子点数
extension: ''
}
});
// 3. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
创建表情消息实例的接口,此接口返回一个消息实例,可以在需要发送表情消息时调用 发送消息 接口发送消息。
接口
tim.createFaceMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息接收方的 userID 或 groupID |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C(端到端会话)或 TIM.TYPES.CONV_GROUP(群组会话) |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
index | Number | 表情索引,用户自定义 |
data | String | 额外数据 |
返回值
消息实例 Message。
示例
// 发送表情消息,Web端。
// 1. 创建消息实例,接口返回的实例可以上屏
let message = tim.createFaceMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
payload: {
index: 1, // Number 表情索引,用户自定义
data: 'tt00' // String 额外数据
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
创建文件消息的接口,此接口返回一个消息实例,可以在需要发送文件消息时调用 发送消息 接口发送消息实例。
注意:
- v2.3.1起支持传入 File 对象。
- v2.4.0起,上传文件大小最大值调整为100M。
- v2.16.2版本支持 uni-app 发文件消息,使用前需要将 tim-upload-plugin 升级至v1.0.2或更高版本。
接口
tim.createFileMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息接收方的 userID 或 groupID |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C(端到端会话)或 TIM.TYPES.CONV_GROUP(群组会话) |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
onProgress | function | - | 获取上传进度的回调函数 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
file | HTMLInputElement | File | Object | 用于选择文件的 DOM 节点(Web)或者 File 对象(Web)或者 Object(uni.chooseFile 接口的 success 回调参数),SDK 会读取其中的数据并上传文件。 |
返回值
消息实例 Message。
Web 示例
// Web 端发送文件消息示例1 - 传入 DOM 节点
// 1. 创建文件消息实例,接口返回的实例可以上屏
let message = tim.createFileMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
payload: {
file: document.getElementById('filePicker'),
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
// cloudCustomData: 'your cloud custom data'
onProgress: function(event) { console.log('file uploading:', event) }
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
// Web 端发送文件消息示例2- 传入 File 对象
// 先在页面上添加一个 id 为 "testPasteInput" 的消息输入框,如 <input type="text" id="testPasteInput" placeholder="截图后粘贴到输入框中" size="30">
document.getElementById('testPasteInput').addEventListener('paste', function(e) {
let clipboardData = e.clipboardData;
let file;
let fileCopy;
if (clipboardData && clipboardData.files && clipboardData.files.length > 0) {
file = clipboardData.files[0];
// 图片消息发送成功后,file 指向的内容可能被浏览器清空,如果接入侧有额外的渲染需求,可以提前复制一份数据
fileCopy = file.slice();
}
if (typeof file === 'undefined') {
console.warn('file 是 undefined,请检查代码或浏览器兼容性!');
return;
}
// 1. 创建消息实例,接口返回的实例可以上屏
let message = tim.createFileMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
payload: {
file: file
},
onProgress: function(event) { console.log('file uploading:', event) }
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
});
// uni-app 发送文件,使用前请将 SDK 升级至v2.16.2或更高版本,将 tim-upload-plugin 升级至v1.0.2或更高版本
// 1. 选择文件
uni.chooseFile({
count: 1,
extension:['.zip','.doc'],
success: function(res) {
let message = tim.createFileMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
payload: { file: res },
onProgress: function(event) { console.log('file uploading:', event) }
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
}
});
创建地理位置消息的接口,此接口返回一个消息实例,可以在需要发送地理位置消息时调用 发送消息 接口发送消息。
注意:v2.15.0起支持。
接口
tim.createLocationMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息接收方的 userID 或 groupID |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C(端到端会话)或 TIM.TYPES.CONV_GROUP(群组会话) |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
description | String | 地理位置描述信息 |
longitude | Number | 经度 |
latitude | Number | 纬度 |
返回值
消息实例 Message。
示例
// 发送地理位置消息,Web 端(v2.15.0起支持)
// 1. 创建消息实例,接口返回的实例可以上屏
let message = tim.createLocationMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
payload: {
description: '深圳市深南大道10000号腾讯大厦',
longitude: 113.941079, // 经度
latitude: 22.546103 // 纬度
}
});
// 2. 发送消息
let promise = tim.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
创建合并消息的接口,此接口返回一个消息实例,可以在需要发送合并消息时调用 发送消息 接口发送消息。
注意:
- v2.10.1起支持。
- 不支持合并已发送失败的消息,如果消息列表内传入了已发送失败的消息,则创建消息接口会报错。
接口
tim.createMergerMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Default | Description |
---|---|---|---|
to | String | - | 消息接收方的 userID 或 groupID |
conversationType | String | - | 会话类型,取值 TIM.TYPES.CONV_C2C(端到端会话)或 TIM.TYPES.CONV_GROUP(群组会话) |
priority | String | TIM.TYPES.MSG_PRIORITY_NORMAL | 消息优先级 |
payload | Object | - | 消息内容的容器 |
cloudCustomData | String | '' | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持) |
payload 的描述如下:
Name | Type | Description |
---|---|---|
messageList | Array | 合并的消息列表 |
title | String | 合并的标题,例如:"大湾区前端人才中心的聊天记录" |
abstractList | String | 摘要列表,不同的消息类型可以设置不同的摘要信息,例如:文本消息可以设置为:sender: text,图片消息可以设置为:sender: [图片],文件消息可以设置为:sender: [文件] |
compatibleText | String | 兼容文本,低版本 SDK 如果不支持合并消息,默认会收到一条文本消息,文本消息的内容为 ${compatibleText},必填 |
返回值
消息实例 Message。
示例
// 1. 将群聊消息转发到 c2c 会话
// message1 message2 message3 是群聊消息
let mergerMessage = tim.createMergerMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
payload: {
messageList: [message1, message2, message3],
title: '大湾区前端人才中心的聊天记录',
abstractList: ['allen: 666', 'iris: [图片]', 'linda: [文件]'],
compatibleText: '请升级IMSDK到v2.10.1或更高版本查看此消息'
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = tim.sendMessage(mergerMessage);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
如果发送方发送的合并消息较大,SDK 会将此消息存储到云端,消息接收方查看消息时,需要先把消息从云端下载到本地。
注意:v2.10.1起支持。
tim.downloadMergerMessage(message);
参数
Name | Type | Description |
---|---|---|
message | Message | 消息实例 |
返回值
Promise
对象。
示例
// downloadKey 存在说明收到的合并消息存储在云端,需要先下载
if (message.type === TIM.TYPES.MSG_MERGER && message.payload.downloadKey !== '') {
let promise = tim.downloadMergerMessage(message);
promise.then(function(imResponse) {
// 下载成功后,SDK会更新 message.payload.messageList 等信息
console.log(imResponse.data);
}).catch(function(imError) {
// 下载失败
console.warn('downloadMergerMessage error:', imError);
});
}
如果您需要转发单条消息,可以先通过 createForwardMessage 接口创建一条和原消息内容完全一样的转发消息,再调用 sendMessage 接口把转发消息发送出去。
注意:
- v2.10.1起支持。
- 支持单条转发和逐条转发。
接口
tim.createForwardMessage(message);
参数
Name | Type | Description |
---|---|---|
message | Message | 消息实例 |
示例
let forwardMessage = tim.createForwardMessage({
to: 'user1',
conversationType: TIM.TYPES.CONV_C2C,
// 消息优先级,用于群聊,如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://www.tencentcloud.com/document/product/269/3663?from_cn_redirect=1#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
payload: message, // 消息实例,已收到的或自己已发出的消息
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = tim.sendMessage(forwardMessage);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
发送消息的接口,需先调用下列的创建消息实例的接口获取消息实例后,再调用该接口发送消息实例。
注意:
- 调用该接口发送消息实例,需要 sdk 处于 ready 状态,否则将无法发送消息实例。sdk 状态,可通过监听以下事件得到:TIM.EVENT.SDK_READY - sdk 处于 ready 状态时触发
TIM.EVENT.SDK_NOT_READY - sdk 处于 not ready 状态时触发。- 接收推送的单聊、群聊、群提示、群系统通知的新消息,需监听事件 TIM.EVENT.MESSAGE_RECEIVED。
- 本实例发送的消息,不会触发事件 TIM.EVENT.MESSAGE_RECEIVED。同帐号从其他端(或通过 REST API)发送的消息,会触发事件 TIM.EVENT.MESSAGE_RECEIVED。
- 离线推送仅适用于终端(Android 或 iOS),Web 不支持。
- onlineUserOnly 和 messageControlInfo 不能同时使用。
tim.sendMessage(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Description |
---|---|---|
message | Message | 消息实例 |
options | Object | 消息发送选项(消息内容的容器),选填 |
options 的描述如下:
Name | Type | Description |
---|---|---|
onlineUserOnly | Boolean | v2.6.4起支持,消息是否仅发送给在线用户的标识,默认值为 false;设置为 true,则消息既不存漫游,也不会计入未读,也不会离线推送给接收方。适合用于发送广播通知等不重要的提示消息场景。在 AVChatRoom 发送消息不支持此选项 |
offlinePushInfo | Object | v2.6.4起支持,离线推送 配置 |
messageControlInfo | Object | v2.16.0起支持,消息控制配置 |
offlinePushInfo 的描述如下:
Name | Type | Description |
---|---|---|
disablePush | Boolean | true 关闭离线推送;false 开启离线推送(默认) |
title | String | 离线推送标题,该字段为 iOS 和 Android 共用 |
description | String | 离线推送内容,该字段会覆盖消息实例的离线推送展示文本。若发送的是自定义消息,该 description 字段会覆盖 message.payload.description。如果 description 和 message.payload.description 字段都不填,接收方将收不到该自定义消息的离线推送 |
extension | String | 离线推送透传内容 |
ignoreIOSBadge | Boolean | 离线推送忽略 badge 计数(仅对 iOS 生效),如果设置为 true,在 iOS 接收端,这条消息不会使 App 的应用图标未读计数增加 |
androidOPPOChannelID | String | 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID |
messageControlInfo 的描述如下:
Name | Type | Description |
---|---|---|
excludedFromUnreadCount | Boolean | true 消息不更新会话 unreadCount(消息存漫游),默认值 false |
excludedFromLastMessage | Boolean | true 消息不更新会话 lastMessage(消息存漫游),默认值 false |
返回
Promise
对象。
示例
// 如果接收方不在线,则消息将存入漫游,且进行离线推送(在接收方 App 退后台或者进程被 kill 的情况下)。离线推送的标题和内容使用默认值。
// 离线推送的说明请参考 https://www.tencentcloud.com/document/product/1047/33525
tim.sendMessage(message);
// v2.6.4起支持消息发送选项
tim.sendMessage(message, {
onlineUserOnly: true // 如果接收方不在线,则消息不存入漫游,且不会进行离线推送
});
// v2.6.4起支持消息发送选项
tim.sendMessage(message, {
offlinePushInfo: {
disablePush: true // 如果接收方不在线,则消息将存入漫游,但不进行离线推送
}
});
// v2.6.4起支持消息发送选项
tim.sendMessage(message, {
// 如果接收方不在线,则消息将存入漫游,且进行离线推送(在接收方 App 退后台或者进程被 kill 的情况下)。接入侧可自定义离线推送的标题及内容
offlinePushInfo: {
title: '', // 离线推送标题
description: '', // 离线推送内容
androidOPPOChannelID: '' // 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID
}
});
// v2.16.0起支持消息控制选项
tim.sendMessage(message, {
messageControlInfo: {
excludedFromUnreadCount: true, // 消息不更新会话 unreadCount(消息存漫游)
excludedFromLastMessage: true // 消息不更新会话 lastMessage(消息存漫游)
}
});
本页内容是否解决了您的问题?