同步会话消息
适用版本>=v7.0.2411b.20241128
接口说明:同步会话消息
请求说明
| 请求地址 | 配置域名+/openapi+/v7/sync/chats/{chat_id}/messages/batch_create |
|---|---|
| 请求方法 | POST |
| 签名方式 | KSO-1(配置域名+/openapi不参与签名) |
| 权限要求 | 同步-会话消息同步读写权限(应用授权) kso.chat_message_sync.readwrite |
请求头(Header)
| Header | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| X-Kso-Date | string | 是 | RFC1123 格式的日期,例: Wed, 23 Jan 2013 06:43:08 GMT |
| X-Kso-Authorization | string | 是 | KSO-1 签名值,详见《签名方法》 |
| Authorization | string | 是 | 授权凭证,格式为:Bearer {access_token} |
路径参数(Query)
| 名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| chat_id | string | 是 | 会话Id |
请求体(Body)
| 名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| messages | object | 是 | 消息列表,min=1,max=100 |
| content | object | 是 | 消息内容,需要根据发送的消息类型 type,传递不同的对象 |
| ∟ text | object | 否 | 文本消息,见下文详细描述 |
| ∟ rich_text | object | 否 | 富文本消息,见下文详细描述 |
| ∟ image | object | 否 | 图片消息,见下文详细描述 |
| ∟ file | object | 否 | 文件消息,见下文详细描述 |
| ∟ audio | object | 否 | 音频消息,见下文详细描述 |
| ∟ video | object | 否 | 视频消息,见下文详细描述 |
| ∟ card | object | 否 | 卡片消息,见下文详细描述 |
| mentions | array[object] | 否 | 被at的人员列表,更新消息时,若要更新卡片内的at用户,可使用该参数。具体用法见【发送消息接口】中详细描述 |
| ∟ id | string | 是 | 指定聊天消息中 at 操作的实体索引 id。与消息正文中相应 <at id={index}> 标记中的 {index} 值匹配 |
| ∟ identity | object | 否 | 被 at 的用户信息,当 at 所有人时该值为空 |
| ∟ ∟ company_id | string | 是 | 用户所属企业id |
| ∟ ∟ id | string | 是 | 用户id |
| ∟ ∟ type | string[enum] | 是 | 身份类型 user:用户; |
| ∟ type | string[enum] | 是 | at 操作对象类型 all:所有人;user:用户 |
| sender | object | 是 | 发送者,包括用户、应用和机器人 |
| ∟ avatar | string | 否 | 用户头像 |
| ∟ company_id | string | 否 | 企业 id |
| ∟ id | string | 是 | 用户信息 |
| ∟ name | string | 否 | 用户名称 |
| ∟ type | string[enum] | 是 | 身份类型 user:用户;sp:服务主体 |
| ctime | int | 是 | 消息发送时间 单位:毫秒 |
| biz_uuid | string | 是 | 调用方唯一id |
| quote_msg_id | string | 否 | 被引用的消息ID |
| ext_attrs | object[] | 否 | 扩展字段 |
| ∟ name | string | 是 | 属性名称 |
| ∟ value | string | 是 | 属性值 |
请求体体示例
json
{
"messages": [
{
"biz_uuid": "string",
"content": {
"audio": {
"media": {
"channels": 0,
"codec": {},
"duration": 0,
"format": {},
"sample_bits": 0,
"sample_rate": 0,
"size": 0
},
"storage_key": "string"
},
"calendar": {
"attendees": [
{
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
}
],
"end_time": 0,
"event_id": "string",
"organizer": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
},
"start_time": 0,
"summary": "string"
},
"card": {
"config": {
"allowd_operate_list": [
"disable"
],
"filter_key": "string",
"nonsupport_client": {
"client_type": [
"pc"
],
"describe": "string"
},
"processing_state": {},
"shared_card": true,
"todo_switch": true
},
"i18n_items": [
{
"key": "zh-CN",
"value": {
"elements": [
{
"action": {},
"carousel": {},
"div": {},
"hr": {},
"image": {},
"medium_note": {},
"note": {},
"text": {},
"video": {}
}
],
"header": {
"link": {},
"subtitle": {
"href": [],
"link": {},
"tag": {},
"text": {}
},
"template": "string",
"title": {
"href": [],
"link": {},
"tag": {},
"text": {}
}
}
}
}
],
"link": {
"android_url": "string",
"ios_url": "string",
"pc_url": "string",
"url": "string"
}
},
"file": {
"cloud": {
"id": "string",
"link_id": "string",
"link_url": "string"
},
"local": {
"name": "string",
"size": 0,
"storage_key": "string"
},
"p2p": {
"ext_attrs": [
{
"name": "string",
"value": "string"
}
],
"from": {
"device_id": "string",
"user_id": "string"
},
"name": "string",
"size": 0,
"ssid": "string",
"status": {},
"to": {
"device_id": "string",
"user_id": "string"
}
},
"type": {}
},
"image": {
"height": 0,
"name": "string",
"size": 0,
"storage_key": "string",
"thumbnail_storage_key": "string",
"thumbnail_type": "string",
"type": "string",
"width": 0
},
"location": {
"address": "string",
"latitude": 0,
"longitude": 0,
"storage_key": "string",
"title": "string"
},
"meeting": {
"creator": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
},
"end_date_time": 0,
"invitees": [
{
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
}
],
"join_code": "string",
"join_url": "string",
"meeting_id": "string",
"participants": [
{
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
}
],
"start_date_time": 0,
"user_status": {}
},
"merge_forward": {
"end_time": 0,
"msg_id_list": [
"string"
],
"msg_previews": [
{
"ctime": 0,
"msg_id": "string",
"sender_id": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
},
"summary": "string"
}
],
"start_time": 0,
"title": "string"
},
"rich_text": {
"elements": [
{
"alt_text": "string",
"doc_content": {
"file": {
"id": "string",
"link_id": "string",
"link_url": "string"
},
"text": "string"
},
"elements": [
{}
],
"image_content": {
"height": 0,
"name": "string",
"size": 0,
"storage_key": "string",
"thumbnail_storage_key": "string",
"thumbnail_type": "string",
"type": "string",
"width": 0
},
"indent": 0,
"index": 0,
"link_content": {
"text": "string",
"url": "string"
},
"mention_content": {
"identity": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
},
"text": "string",
"type": {}
},
"style_text_content": {
"style": {
"bold": true,
"color": "string",
"italic": true
},
"text": "string"
},
"text_content": {
"content": "string",
"type": {}
},
"type": {}
}
]
},
"sticker": {
"builtin": {
"id": "string",
"name": "string",
"type": {},
"version": "string"
},
"image": {
"height": 0,
"name": "string",
"size": 0,
"storage_key": "string",
"thumbnail_storage_key": "string",
"thumbnail_type": "string",
"type": "string",
"width": 0
}
},
"text": {
"content": "string",
"type": {}
},
"video": {
"media": {
"codec": {},
"cover_storage_key": "string",
"duration": 0,
"format": {},
"height": 0,
"size": 0,
"width": 0
},
"storage_key": "string"
}
},
"ctime": 0,
"ext_attrs": [
{
"name": "string",
"value": "string"
}
],
"mentions": [
{
"id": "string",
"identity": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
},
"type": {}
}
],
"quote_msg_id": "string",
"sender": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": {}
},
"type": {}
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
响应体(Response)
| 名称 | 类型 | 说明 |
|---|---|---|
| code | integer | code |
| msg | string | msg |
| data | object | null |
| ∟ items | array[object] | |
| ∟ ∟ biz_uuid | string | 调用方唯一id |
| ∟ ∟ message_id | string | 消息id |
| more | object | 更多的错误信息 |
响应体示例
json
{
"data": {
"items": [
{
"biz_uuid": "string",
"message_id": "string"
}
]
},
"code": 0,
"more": {},
"msg": "string"
}1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
消息内容(content)结构说明
发送消息时,需要根据发送消息的类型 消息类型,传递不同的消息内容 content,支持的消息类型如下:
文本(text)
消息类型为文本 type=text 时,传递的内容 content 对象
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| text | object | 否 | 文本消息 支持通过在消息体插入标签的方式 at 人 例子: 你好 <at id="0"> 张三 </at> |
| ∟ content | string | 是 | 文本内容 |
| ∟ type | string[enum] | 否 | 文本类型 plain:纯文本;markdown |
json
{
// 文本
"type": "text",
"receivers": [],
"mentions": [],
"content": {
"text": {
"content": "string",
"type": "string[enum]"
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
富文本(rich_text)
消息类型为富文本 type=rich_text 时,传递的内容 content 对象
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| rich_text | object | 否 | 富文本消息 |
| ∟ elements | array[object] | 是 | 富文本消息内容 |
| ∟ ∟ type | string[enum] | 是 | 富文本元素类型 ol:有序列表;ul:无序列表;nl:换行;text:普通文本;emoji:表情;custom_emoji:自定义表情;mention:at 人;image:图片 |
| ∟ ∟ alt_text | string | 是 | 代替文本摘要,当客户端无法解析则取该字段 |
| ∟ ∟ indent | integer | 是 | 缩进 |
| ∟ ∟ index | integer | 是 | 第几行 |
| ∟ ∟ elements | array[object] | 否 | 子元素列表,与父元素 element 结构相同(递归) |
| ∟ ∟ text_content | object | 否 | 【1】纯文本内容, 当富文本元素类型为表情 emoji 时使用 |
| ∟ ∟ ∟ content | string | 是 | 文本内容 |
| ∟ ∟ ∟ type | string[enum] | 否 | 文本类型 plain:纯文本;markdown |
| ∟ ∟ style_text_content | object | 否 | 【2】有样式的文本内容,当富文本元素类型为普通文本 text 时使用 |
| ∟ ∟ ∟ style | object | 是 | 元素样式 |
| ∟ ∟ ∟ ∟ bold | boolean | 是 | 加粗 |
| ∟ ∟ ∟ ∟ color | string | 是 | RGBA 16 进制描述,例如:#FF0000FF,最后两位为透明度 |
| ∟ ∟ ∟ ∟ italic | boolean | 是 | 斜体 |
| ∟ ∟ mention_content | object | 否 | 【3】at 人的内容,当富文本元素类型为 at 人 mention 时使用 |
| ∟ ∟ ∟ identity | object | 否 | 被 at 用户的 id,当 at 所有人时该值为空 |
| ∟ ∟ ∟ ∟ avatar | string | 是 | 用户头像 |
| ∟ ∟ ∟ ∟ company_id | string | 是 | 企业 id |
| ∟ ∟ ∟ ∟ id | string | 是 | 用户信息 |
| ∟ ∟ ∟ ∟ name | string | 是 | 用户名称 |
| ∟ ∟ ∟ ∟ type | string[enum] | 是 | 身份类型 user:用户;sp:服务主体 |
| ∟ ∟ ∟ text | string | 是 | 被 at 的文本内容 |
| ∟ ∟ image_content | object | 否 | 【4】图片内容,当富文本元素类型为自定义表情 custom_emoji 或 图片 image 时使用 |
| ∟ ∟ ∟ height | integer | 是 | 高度(px) |
| ∟ ∟ ∟ name | string | 是 | 图片名称 |
| ∟ ∟ ∟ size | integer | 是 | 图片大小(B) |
| ∟ ∟ ∟ storage_key | string | 是 | 图片存储 key |
| ∟ ∟ ∟ thumbnail_storage_key | string | 否 | 缩略图片存储 key |
| ∟ ∟ ∟ thumbnail_type | string | 否 | 缩略图片格式,可传值:image/png;image/jpg;image/gif;image/webp |
| ∟ ∟ ∟ type | string | 是 | 图片格式,可传值:image/png;image/jpg;image/gif;image/webp |
| ∟ ∟ ∟ width | integer | 是 | 宽度(px) |
| ∟ ∟ link_content | object | 否 | 【5】链接的内容,当富文本元素类型为 link 时使用 |
| ∟ ∟ ∟ text | string | 是 | 文本内容 |
| ∟ ∟ ∟ url | string | 是 | url 链接 |
json
{
// 富文本
"type": "rich_text",
"receivers": [],
"mentions": [],
"content": {
"rich_text": {
"elements": [
{
"type": "string[enum]",
"alt_text": "string",
"indent": 0,
"index": 0,
"elements": [
{
// 与父元素 elements 结构相同(递归)
},
],
"text_content": {
"content": "string",
"type": "string[enum]"
},
"style_text_content": {
"style": {
"bold": false,
"color": "string",
"italic": false
},
"text": "string"
},
"mention_content": {
"identity": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": "string[enum]"
},
"text": "string",
"type": "string[enum]"
},
"image_content": {
"height": 0,
"name": "string",
"size": 0,
"storage_key": "string",
"thumbnail_storage_key": "string",
"thumbnail_type": "string",
"type": "string",
"width": 0
},
"link_content": {
"text": "string",
"url": "string"
},
}
]
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
图片(image)
消息类型为图片 type=image 时,传递的内容 content 对象
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | object | 否 | 图片消息 |
| ∟ type | string | 是 | 图片格式,可传值:image/png;image/jpg;image/gif;image/webp |
| ∟ thumbnail_type | string | 否 | 缩略图片格式,可传值:image/png;image/jpg;image/gif;image/webp |
| ∟ name | string | 是 | 图片名称 |
| ∟ size | integer | 是 | 图片大小(B) |
| ∟ width | integer | 是 | 宽度(px) |
| ∟ height | integer | 是 | 高度(px) |
| ∟ storage_key | string | 是 | 图片存储 key |
| ∟ thumbnail_storage_key | string | 否 | 缩略图片存储 key |
json
{
// 图片
"type": "image",
"receivers": [],
"mentions": [],
"content": {
"image": {
"type": "string",
"thumbnail_type": "string",
"name": "string",
"size": 0,
"width": 0,
"height": 0,
"storage_key": "string",
"thumbnail_storage_key": "string"
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
文件(file)
消息类型为文件 type=file 时,传递的内容 content 对象
- 发送本地文件,即文件类型为
local
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| file | object | 否 | 文件消息 |
| ∟ type | string[enum] | 是 | 文件类型 local:本地文件;cloud:云文档;p2p:P2P 局域网文件 |
| ∟ local | object | 否 | 本地文件 |
| ∟ ∟ name | string | 是 | 文件名称 |
| ∟ ∟ size | integer | 是 | 文件大小(B) |
| ∟ ∟ storage_key | string | 是 | 文件存储 key |
json
{
// 文件
"type": "file",
"receivers": [],
"mentions": [],
"content": {
"file": {
// 本地文件
"type": "local",
"local": {
"name": "string",
"size": 0,
"storage_key": "string"
}
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 发送云文档,即文件类型为
cloud
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| file | object | 否 | 文件消息 |
| ∟ type | string[enum] | 是 | 文件类型 local:本地文件;cloud:云文档;p2p:P2P 局域网文件 |
| ∟ cloud | object | 否 | 云文档 |
| ∟ ∟ id | string | 是 | 文档 id |
| ∟ ∟ name | string | 是 | 文档名 |
| ∟ ∟ type | string | 是 | 文档类型 |
| ∟ ∟ version | integer | 是 | 文档版本 |
| ∟ ∟ drive_id | string | 是 | 驱动盘 id |
| ∟ ∟ parent_id | string | 是 | 父目录 id |
| ∟ ∟ hash | object | 是 | 文档 hash |
| ∟ ∟ ∟ sum | string | 是 | 哈希结果 |
| ∟ ∟ ∟ type | string[enum] | 是 | 哈希类型 sha256 md5 s2s |
| ∟ ∟ link_id | string | 是 | 分享 id |
| ∟ ∟ link_url | string | 是 | 分享链接 url |
| ∟ ∟ size | integer | 是 | 文档大小 |
| ∟ ∟ permission | object | 否 | 文件权限 |
| ∟ ∟ ∟ comment | boolean | 是 | 评论 |
| ∟ ∟ ∟ copy | boolean | 是 | 复制 |
| ∟ ∟ ∟ copy_content | boolean | 是 | 内容复制 |
| ∟ ∟ ∟ delete | boolean | 是 | 文件删除 |
| ∟ ∟ ∟ download | boolean | 是 | 下载 |
| ∟ ∟ ∟ history | boolean | 是 | 历史版本 |
| ∟ ∟ ∟ move | boolean | 是 | 文件移动 |
| ∟ ∟ ∟ new_empty | boolean | 是 | 新建 |
| ∟ ∟ ∟ perm_ctl | boolean | 是 | 权限管理 |
| boolean | 是 | 打印 | |
| ∟ ∟ ∟ rename | boolean | 是 | 文件重命名 |
| ∟ ∟ ∟ saveas | boolean | 是 | 另存为 |
| ∟ ∟ ∟ secret | boolean | 是 | 安全文档 |
| ∟ ∟ ∟ share | boolean | 是 | 分享 |
| ∟ ∟ ∟ update | boolean | 是 | 编辑 / 更新 |
| ∟ ∟ ∟ upload | boolean | 是 | 上传:手动上传新版本 |
| ∟ ∟ ext_attrs | array[object] | 否 | 文件扩展属性 |
| ∟ ∟ ∟ name | string | 是 | 属性名 |
| ∟ ∟ ∟ value | string | 是 | 属性值 |
| ∟ ∟ ctime | integer | 是 | 创建时间 |
| ∟ ∟ created_by | object | 是 | 创建者 |
| ∟ ∟ ∟ avatar | string | 是 | 用户头像 |
| ∟ ∟ ∟ company_id | string | 是 | 企业 id |
| ∟ ∟ ∟ id | string | 是 | 用户信息 |
| ∟ ∟ ∟ name | string | 是 | 用户名称 |
| ∟ ∟ ∟ type | string[enum] | 是 | 身份类型 user:用户;sp:服务主体 |
| ∟ ∟ mtime | integer | 是 | 修改时间 |
| ∟ ∟ modified_by | object | 是 | 修改者 |
| ∟ ∟ ∟ avatar | string | 是 | 用户头像 |
| ∟ ∟ ∟ company_id | string | 是 | 企业 id |
| ∟ ∟ ∟ id | string | 是 | 用户信息 |
| ∟ ∟ ∟ name | string | 是 | 用户名称 |
| ∟ ∟ ∟ type | string[enum] | 是 | 身份类型 user:用户;sp:服务主体 |
json
{
// 文件
"type": "file",
"receivers": [],
"mentions": [],
"content": {
"type": "cloud",
// 云文档
"cloud": {
"id": "string",
"name": "string",
"type": "string",
"version": 0,
"drive_id": "string",
"parent_id": "string",
"hash": {
"sum": "string",
"type": "string[enum]"
},
"link_id": "string",
"link_url": "string",
"size": 0,
"permission": "object",
"ext_attrs": [
{
"name": "string",
"value": "string"
}
],
"mtime": 0,
"modified_by": "object",
"ctime": 0,
"created_by": "object"
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
- 发送 P2P 局域网文件,即文件类型为
p2p
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| file | object | 否 | 文件消息 |
| ∟ type | string[enum] | 是 | 文件类型 local:本地文件;cloud:云文档;p2p:P2P 局域网文件 |
| ∟ p2p | object | 否 | P2P 局域网文件 |
| ∟ ∟ name | string | 是 | 文件名称 |
| ∟ ∟ size | integer | 是 | 文件大小(B) |
| ∟ ∟ ssid | string | 是 | 传输通道 id |
| ∟ ∟ status | string[enum] | 是 | 传输状态 setup:创建通道;pending:待接收;sending:传输中;closed:已关闭 |
| ∟ ∟ from | object | 是 | 发起者 |
| ∟ ∟ ∟ device_id | string | 是 | 设备 id |
| ∟ ∟ ∟ user_id | string | 是 | 用户 id |
| ∟ ∟ to | object | 是 | 接收者 |
| ∟ ∟ ∟ device_id | string | 是 | 设备 id |
| ∟ ∟ ∟ user_id | string | 是 | 用户 id |
| ∟ ∟ ext_attrs | array[object] | 否 | 自定义扩展字段 |
| ∟ ∟ ∟ name | string | 是 | 属性名 |
| ∟ ∟ ∟ value | string | 是 | 属性值 |
json
{
// 文件
"type": "file",
"receivers": [],
"mentions": [],
"content": {
"file": {
"type": "p2p",
// P2P 局域网文件
"p2p": {
"name": "string",
"size": 0,
"ssid": "string",
"status": "string[enum]",
"from": {
"device_id": "string",
"user_id": "string"
},
"to": {
"device_id": "string",
"user_id": "string"
},
"ext_attrs": [
{
"name": "string",
"value": "string"
}
]
}
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
音频(audio)
消息类型为音频 type=audio 时,传递的内容 content 对象
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| audio | object | 否 | 音频消息 |
| ∟ media | object | 是 | 音频媒体信息 |
| ∟ ∟ channels | integer | 是 | 通道数 |
| ∟ ∟ codec | string[enum] | 是 | 编码格式 amr |
| ∟ ∟ duration | integer | 是 | 播放时长(s) |
| ∟ ∟ format | string[enum] | 是 | 文件格式 wav |
| ∟ ∟ sample_bits | integer | 是 | 比特率 |
| ∟ ∟ sample_rate | integer | 是 | 采用率 |
| ∟ ∟ size | integer | 是 | 文件大小(B) |
| ∟ storage_key | string | 是 | 音频文件存储 key |
json
{
// 音频
"type": "audio",
"receivers": [],
"mentions": [],
"content": {
"audio": {
"media": {
"channels": 0,
"codec": "string[enum]",
"duration": 0,
"format": "string[enum]",
"sample_bits": 0,
"sample_rate": 0,
"size": 0
},
"storage_key": "string"
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
视频(video)
消息类型为音频 type=video 时,传递的内容 content 对象
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| video | object | 否 | 视频消息 |
| ∟ media | object | 是 | 视频媒体信息 |
| ∟ ∟ codec | string[enum] | 是 | 编码格式 h.264 |
| ∟ ∟ cover_storage_key | string | 是 | 视频文件封面图片存储 key |
| ∟ ∟ duration | integer | 是 | 播放时长(s) |
| ∟ ∟ format | string[enum] | 是 | 文件格式 mp4 |
| ∟ ∟ height | integer | 是 | 高度(px) |
| ∟ ∟ size | integer | 是 | 文件大小(B) |
| ∟ ∟ width | integer | 是 | 宽度(px) |
| ∟ storage_key | string | 是 | 视频文件存储 key |
json
{
// 视频
"type": "audio",
"receivers": [],
"mentions": [],
"content": {
"video": {
"media": {
"codec": "string[enum]",
"cover_storage_key": "string",
"duration": 0,
"format": "string[enum]",
"height": 0,
"size": 0,
"width": 0
},
"storage_key": "string"
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
卡片(card)
消息卡片是应用接入WPS协作机器人发送消息时的一种消息类型。消息卡片提供了丰富的组件,支持开发者按需组合配置消息卡片。详细说明可看WPS协作消息卡片 为了提升卡片的搭建效率,WPS开放平台也为开发者提供了可视化的消息卡片搭建工具,开发者可进入开发者后台-应用能力-WPS协作机器人-发送消息-API发送-消息卡片编辑器 处进行配置。
消息类型为卡片 type=card 时,传递的内容 content 对象
| 名称 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| card | object | 否 | 卡片消息 |
| ∟ config | object | 否 | 配置 |
| ∟ ∟ allowd_operate_list | array[string[enum]] | 否 | 允许右键操作类型列表,默认允许转发、回复、收藏 disable:禁用;forward:转发;reply:回复;favorite:收藏;accept_all:允许右键所有操作 |
| ∟ ∟ filter_key | string | 否 | 添加卡片筛选状态,需要在开发者后台-应用能力-WPS协作机器人-发送消息-API发送-配置卡片筛选项处配置筛选项 |
| ∟ ∟ nonsupport_client | object | 否 | 消息卡片不支持展示的客户端 |
| ∟ ∟ ∟ client_type | array[string] | 否 | 不支持的客户端类型,默认为空 |
| ∟ ∟ ∟ describe | string | 否 | 不支持的客户端文本描述 |
| ∟ ∟ shared_card | boolean | 否 | 是否为共享卡片消息 true:是;false:否 |
| ∟ ∟ todo_switch | boolean | 否 | 添加卡片待办状态true:开启待办;false:关闭待办 |
| ∟ link | object | 否 | 跳转链接,可分端配置 |
| ∟ ∟ android_url | string | 是 | Android 端跳转 url |
| ∟ ∟ ios_url | string | 是 | iOS 端跳转 url |
| ∟ ∟ pc_url | string | 是 | 桌面端跳转 url |
| ∟ ∟ url | string | 是 | 默认链路 url |
| ∟ i18n_items | array[object] | 是 | 多语言组件集合 |
| ∟ ∟ key | string | 是 | 卡片消息支持的多语言类型 |
| ∟ ∟ value | object | 是 | 卡片组件集合,详细规则请前往WPS协作消息卡片结构说明 |
json
{
"type": "card",
"receivers": [],
"mentions": [],
"content": {
"card": {
"config": {
},
"i18n_items": {
},
"link": {
}
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
响应体
| 名称 | 参数类型 | 说明 |
|---|---|---|
| code | integer | 响应代码。非 0 表示失败,参照《状态码说明》 |
| msg | string | 响应信息 |
| data | object | 响应数据 |
| ∟ id | string | 消息 id |
| ∟ chat_id | string | 会话 id |
| ∟ quote_msg_id | string | 被引用的消息 id |
| ∟ type | string[enum] | 消息类型 text:文本;rich_text:富文本;image:图片;file:文件;audio:音频;video:视频;card:卡片消息 |
| ∟ position | integer | 会话消息位置索引,严格连续递增 |
| ∟ ctime | integer | 消息创建时间 |
| ∟ mentions | array[object] | 被 at 的人员列表 |
| ∟ ∟ id | string | 指定聊天消息中 at 操作的实体索引 id。与消息正文中相应 <at id={index}> 标记中的 {index} 值匹配 |
| ∟ ∟ identity | object | 被 at 的用户信息,当 at 所有人时该值为空 |
| ∟ ∟ ∟ avatar | string | 用户头像 |
| ∟ ∟ ∟ company_id | string | 企业 id |
| ∟ ∟ ∟ id | string | 用户信息 |
| ∟ ∟ ∟ name | string | 用户名称 |
| ∟ ∟ ∟ type | string[enum] | 身份类型 user:用户;sp:服务主体 |
| ∟ ∟ type | string[enum] | at 操作对象类型 all:所有人;user:用户 |
| ∟ sender | object | 发送者,包括用户、应用和机器人 |
| ∟ ∟ avatar | string | 用户头像 |
| ∟ ∟ company_id | string | 企业 id |
| ∟ ∟ id | string | 用户信息 |
| ∟ ∟ name | string | 用户名称 |
| ∟ ∟ type | string[enum] | 身份类型 user:用户;sp:服务主体 |
| ∟ recall | object | 消息撤回信息 |
| ∟ ∟ operator_id | string | 撤回消息操作者 id |
| ∟ content | object | 消息内容 |
| ∟ ∟ text | object | 文本消息,见上文详细描述,相同的定义 |
| ∟ ∟ rich_text | object | 富文本消息,见上文详细描述,相同的定义 |
| ∟ ∟ image | object | 图片消息,见上文详细描述,相同的定义 |
| ∟ ∟ file | object | 文件消息,见上文详细描述,相同的定义 |
| ∟ ∟ audio | object | 音频消息,见上文详细描述,相同的定义 |
| ∟ ∟ video | object | 视频消息,见上文详细描述,相同的定义 |
| ∟ ∟ card | object | 卡片消息,见上文详细描述,相同的定义 |
响应体示例
json
{
"data": {
"id": "string",
"chat_id": "string",
"quote_msg_id": "string",
"type": "string[enum]",
"position": 0,
"ctime": 0,
"mentions": [
{
"id": "string",
"identity": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": "string[enum]"
},
"type": "string[enum]"
}
],
"sender": {
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": "string[enum]"
},
"recall": {
"operator_id": "string"
},
"ext_attrs": [
{
"name": "string",
"value": "string"
}
],
"content": {
// 根据不同的 type,返回不同内容
}
},
"code": 0,
"msg": "string"
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
人员身份信息
消息类型为文本 type=text 时,传递的内容 content 对象
| 名称 | 参数类型 | 说明 |
|---|---|---|
| identity | string | 成员身份结构 |
| ∟ avatar | string | 用户头像 |
| ∟ company_id | string | 用户所在企业 |
| ∟ id | string | 用户Id |
| ∟ name | string | 名称 |
| ∟ type | string | 用户(user) 服务商(sp) |
json
{
// 人员身份信息
"avatar": "string",
"company_id": "string",
"id": "string",
"name": "string",
"type": "string"
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8