Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
fca5bb0e
Commit
fca5bb0e
authored
Nov 30, 2021
by
hweeeeeei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
将用户添加进会话
parent
66505dce
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
242 additions
and
23 deletions
+242
-23
common/src/main/java/com/wecloud/im/controller/ImConversationController.java
+7
-2
common/src/main/java/com/wecloud/im/param/add/ImClientToConversation.java
+1
-1
common/src/main/java/com/wecloud/im/service/ImConversationService.java
+11
-1
common/src/main/java/com/wecloud/im/service/ImMessageService.java
+5
-0
common/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
+106
-2
common/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
+18
-0
common/src/main/java/com/wecloud/im/ws/enums/WsResponseCmdEnum.java
+5
-0
common/src/main/java/com/wecloud/im/ws/strategy/concrete/ImChatConcrete.java
+1
-16
docs/md/内部/wecloud-im前端Websocket对接文档.md
+88
-1
No files found.
common/src/main/java/com/wecloud/im/controller/ImConversationController.java
View file @
fca5bb0e
...
@@ -45,8 +45,13 @@ public class ImConversationController extends BaseController {
...
@@ -45,8 +45,13 @@ public class ImConversationController extends BaseController {
/**
/**
*
TODO
将client从会话移除
* 将client从会话移除
*/
*/
@PostMapping
(
"delClient"
)
@ApiOperation
(
value
=
"将client从会话移除"
,
notes
=
""
)
public
ApiResult
<
Boolean
>
delClientToConversation
(
@RequestBody
ImClientToConversation
imClientToConversation
)
throws
Exception
{
return
imConversationService
.
delClientToConversation
(
imClientToConversation
);
}
/**
/**
...
@@ -55,7 +60,7 @@ public class ImConversationController extends BaseController {
...
@@ -55,7 +60,7 @@ public class ImConversationController extends BaseController {
@PostMapping
(
"addClient"
)
@PostMapping
(
"addClient"
)
@ApiOperation
(
value
=
"将用户添加进会话"
,
notes
=
""
)
@ApiOperation
(
value
=
"将用户添加进会话"
,
notes
=
""
)
public
ApiResult
<
Boolean
>
addClientToConversation
(
@RequestBody
ImClientToConversation
imClientToConversation
)
throws
Exception
{
public
ApiResult
<
Boolean
>
addClientToConversation
(
@RequestBody
ImClientToConversation
imClientToConversation
)
throws
Exception
{
return
imConversationService
.
Im
ClientToConversation
(
imClientToConversation
);
return
imConversationService
.
add
ClientToConversation
(
imClientToConversation
);
}
}
/**
/**
...
...
common/src/main/java/com/wecloud/im/param/add/ImClientToConversation.java
View file @
fca5bb0e
...
@@ -23,7 +23,7 @@ public class ImClientToConversation extends BaseEntity {
...
@@ -23,7 +23,7 @@ public class ImClientToConversation extends BaseEntity {
@ApiModelProperty
(
"会话表id"
)
@ApiModelProperty
(
"会话表id"
)
private
Long
conversationId
;
private
Long
conversationId
;
@ApiModelProperty
(
"
可选 邀请加入会话的客户端,如创建单聊,则填入对方
的clientId"
)
@ApiModelProperty
(
"
要操作
的clientId"
)
private
List
<
String
>
clientIds
;
private
List
<
String
>
clientIds
;
}
}
common/src/main/java/com/wecloud/im/service/ImConversationService.java
View file @
fca5bb0e
...
@@ -49,7 +49,17 @@ public interface ImConversationService extends BaseService<ImConversation> {
...
@@ -49,7 +49,17 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @return
* @return
* @throws JsonProcessingException
* @throws JsonProcessingException
*/
*/
ApiResult
<
Boolean
>
ImClientToConversation
(
ImClientToConversation
imClientToConversation
);
ApiResult
<
Boolean
>
addClientToConversation
(
ImClientToConversation
imClientToConversation
);
/**
* 将client从会话移除
*
* @param imClientToConversation
* @return
*/
ApiResult
<
Boolean
>
delClientToConversation
(
ImClientToConversation
imClientToConversation
);
/**
/**
* 修改
* 修改
...
...
common/src/main/java/com/wecloud/im/service/ImMessageService.java
View file @
fca5bb0e
package
com
.
wecloud
.
im
.
service
;
package
com
.
wecloud
.
im
.
service
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.add.ImMsgRecall
;
import
com.wecloud.im.param.add.ImMsgRecall
;
...
@@ -21,6 +23,9 @@ import java.util.List;
...
@@ -21,6 +23,9 @@ import java.util.List;
public
interface
ImMessageService
extends
BaseService
<
ImMessage
>
{
public
interface
ImMessageService
extends
BaseService
<
ImMessage
>
{
ImMessage
saveImMessage
(
ImApplication
imApplication
,
ImClient
imClientSender
,
Long
toConversationId
,
long
messageId
,
String
content
);
/**
/**
* 消息撤回 只能撤回客户端自己发送的消息
* 消息撤回 只能撤回客户端自己发送的消息
*
*
...
...
common/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
View file @
fca5bb0e
...
@@ -11,6 +11,8 @@ import com.wecloud.im.entity.ImApplication;
...
@@ -11,6 +11,8 @@ import com.wecloud.im.entity.ImApplication;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversation
;
import
com.wecloud.im.entity.ImConversation
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.mapper.ImConversationMapper
;
import
com.wecloud.im.mapper.ImConversationMapper
;
import
com.wecloud.im.param.ImConversationPageParam
;
import
com.wecloud.im.param.ImConversationPageParam
;
import
com.wecloud.im.param.ImConversationQueryVo
;
import
com.wecloud.im.param.ImConversationQueryVo
;
...
@@ -25,6 +27,9 @@ import com.wecloud.im.service.ImMessageService;
...
@@ -25,6 +27,9 @@ import com.wecloud.im.service.ImMessageService;
import
com.wecloud.im.vo.ImConversationCreateVo
;
import
com.wecloud.im.vo.ImConversationCreateVo
;
import
com.wecloud.im.vo.MyConversationListVo
;
import
com.wecloud.im.vo.MyConversationListVo
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponseModel
;
import
com.wecloud.im.ws.service.WriteDataService
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
...
@@ -42,6 +47,7 @@ import java.util.ArrayList;
...
@@ -42,6 +47,7 @@ import java.util.ArrayList;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* 会话表 服务实现类
* 会话表 服务实现类
...
@@ -53,6 +59,12 @@ import java.util.List;
...
@@ -53,6 +59,12 @@ import java.util.List;
@Service
@Service
public
class
ImConversationServiceImpl
extends
BaseServiceImpl
<
ImConversationMapper
,
ImConversation
>
implements
ImConversationService
{
public
class
ImConversationServiceImpl
extends
BaseServiceImpl
<
ImConversationMapper
,
ImConversation
>
implements
ImConversationService
{
private
static
final
JsonMapper
JSON_MAPPER
=
new
JsonMapper
();
@Autowired
private
WriteDataService
writeDataService
;
@Autowired
@Autowired
private
ImConversationMapper
imConversationMapper
;
private
ImConversationMapper
imConversationMapper
;
...
@@ -208,13 +220,26 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
...
@@ -208,13 +220,26 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
}
@Override
@Override
public
ApiResult
<
Boolean
>
Im
ClientToConversation
(
ImClientToConversation
imClientToConversation
)
{
public
ApiResult
<
Boolean
>
add
ClientToConversation
(
ImClientToConversation
imClientToConversation
)
{
// shiro线程中获取当前token
// shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurentJwtToken
();
JwtToken
curentJwtToken
=
JwtUtil
.
getCurentJwtToken
();
// 根据appKey查询application
// 根据appKey查询application
ImApplication
imApplication
=
imApplicationService
.
getOneByAppKey
(
curentJwtToken
.
getAppKey
());
ImApplication
imApplication
=
imApplicationService
.
getOneByAppKey
(
curentJwtToken
.
getAppKey
());
ImClient
imClientSender
=
imClientService
.
getCurentClient
();
// 查询该会话所有成员
List
<
ImConversationMembers
>
membersList
=
imConversationMembersService
.
list
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
.
eq
(
ImConversationMembers:
:
getFkConversationId
,
imClientToConversation
.
getConversationId
())
.
notIn
(
ImConversationMembers:
:
getId
,
imClientSender
.
getId
())
);
if
(
membersList
.
isEmpty
())
{
log
.
info
(
"membersList为空,toConversationId:"
+
imClientToConversation
.
getConversationId
());
return
ApiResult
.
fail
();
}
// 将他人添加到会话
// 将他人添加到会话
for
(
String
id
:
imClientToConversation
.
getClientIds
())
{
for
(
String
id
:
imClientToConversation
.
getClientIds
())
{
...
@@ -223,12 +248,17 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
...
@@ -223,12 +248,17 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
.
eq
(
ImClient:
:
getClientId
,
id
));
.
eq
(
ImClient:
:
getClientId
,
id
));
// 判断用户是否已经在该会话
// 判断用户是否已经在该会话
imConversationMembersService
.
getOne
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
ImConversationMembers
members
=
imConversationMembersService
.
getOne
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
.
eq
(
ImConversationMembers:
:
getFkAppid
,
imApplication
.
getId
())
.
eq
(
ImConversationMembers:
:
getFkAppid
,
imApplication
.
getId
())
.
eq
(
ImConversationMembers:
:
getFkConversationId
,
imClientToConversation
.
getConversationId
())
.
eq
(
ImConversationMembers:
:
getFkConversationId
,
imClientToConversation
.
getConversationId
())
.
eq
(
ImConversationMembers:
:
getFkClientId
,
client2
.
getId
())
.
eq
(
ImConversationMembers:
:
getFkClientId
,
client2
.
getId
())
);
);
// 已经在该会话 则跳过
if
(
members
!=
null
)
{
continue
;
}
Long
imConversationMembersId2
=
SnowflakeUtil
.
getId
();
Long
imConversationMembersId2
=
SnowflakeUtil
.
getId
();
ImConversationMembers
imConversationMembers2
=
new
ImConversationMembers
();
ImConversationMembers
imConversationMembers2
=
new
ImConversationMembers
();
imConversationMembers2
.
setId
(
imConversationMembersId2
);
imConversationMembers2
.
setId
(
imConversationMembersId2
);
...
@@ -237,11 +267,85 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
...
@@ -237,11 +267,85 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversationMembers2
.
setFkConversationId
(
imClientToConversation
.
getConversationId
());
imConversationMembers2
.
setFkConversationId
(
imClientToConversation
.
getConversationId
());
imConversationMembers2
.
setFkClientId
(
client2
.
getId
());
imConversationMembers2
.
setFkClientId
(
client2
.
getId
());
imConversationMembersService
.
save
(
imConversationMembers2
);
imConversationMembersService
.
save
(
imConversationMembers2
);
// ws邀请事件通知给群内其他人 ----------
// 生成消息id
long
messageId
=
SnowflakeUtil
.
getId
();
ImMessage
imMessage
=
new
ImMessage
();
Map
<
String
,
Object
>
content
=
new
HashMap
<>();
content
.
put
(
"operator"
,
imClientSender
.
getClientId
());
//操作的client ID
content
.
put
(
"passivityOperator"
,
client2
.
getClientId
());
//被操作的client ID
content
.
put
(
"type"
,
-
1007
);
//xx邀请xx加入会话 -1007
try
{
String
asString
=
JSON_MAPPER
.
writeValueAsString
(
content
);
imMessage
.
setContent
(
asString
);
}
catch
(
JsonProcessingException
e
)
{
e
.
printStackTrace
();
}
// 保存消息至消息表
imMessage
.
setId
(
messageId
);
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
imApplication
.
getId
());
imMessage
.
setSender
(
imClientSender
.
getId
());
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
true
);
imMessage
.
setSystem
(
false
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setFkConversationId
(
imClientToConversation
.
getConversationId
());
boolean
save
=
imMessageService
.
save
(
imMessage
);
// 遍历发送
for
(
ImConversationMembers
conversationMembers
:
membersList
)
{
// 查询接收方
ImClient
imClientReceiver
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
imApplication
.
getId
())
.
eq
(
ImClient:
:
getId
,
conversationMembers
.
getFkClientId
()));
if
(
imClientReceiver
==
null
)
{
continue
;
}
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
messageId
);
imMessageOnlineSend
.
setSender
(
imClientSender
.
getClientId
());
imMessageOnlineSend
.
setContent
((
HashMap
)
content
);
imMessageOnlineSend
.
setConversationId
(
conversationMembers
.
getFkConversationId
());
imMessageOnlineSend
.
setWithdraw
(
Boolean
.
FALSE
);
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponseModel
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
writeDataService
.
write
(
responseModel
,
imApplication
.
getAppKey
(),
imClientReceiver
.
getClientId
());
}
}
}
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
}
}
@Override
public
ApiResult
<
Boolean
>
delClientToConversation
(
ImClientToConversation
imClientToConversation
)
{
return
ApiResult
.
ok
();
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
public
boolean
updateImConversation
(
ImConversation
imConversation
)
throws
Exception
{
public
boolean
updateImConversation
(
ImConversation
imConversation
)
throws
Exception
{
...
...
common/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
View file @
fca5bb0e
...
@@ -76,6 +76,24 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -76,6 +76,24 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
private
WriteDataService
writeDataService
;
private
WriteDataService
writeDataService
;
@Override
@Override
public
ImMessage
saveImMessage
(
ImApplication
imApplication
,
ImClient
imClientSender
,
Long
toConversationId
,
long
messageId
,
String
content
)
{
ImMessage
imMessage
=
new
ImMessage
();
imMessage
.
setId
(
messageId
);
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
imApplication
.
getId
());
imMessage
.
setSender
(
imClientSender
.
getId
());
imMessage
.
setContent
(
content
);
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
false
);
imMessage
.
setSystem
(
false
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setFkConversationId
(
toConversationId
);
this
.
save
(
imMessage
);
return
imMessage
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
updateMsgWithdrawById
(
ImMsgRecall
imMsgRecall
)
{
public
ApiResult
<
Boolean
>
updateMsgWithdrawById
(
ImMsgRecall
imMsgRecall
)
{
ImClient
imClientSender
=
imClientService
.
getCurentClient
();
ImClient
imClientSender
=
imClientService
.
getCurentClient
();
...
...
common/src/main/java/com/wecloud/im/ws/enums/WsResponseCmdEnum.java
View file @
fca5bb0e
...
@@ -8,6 +8,11 @@ package com.wecloud.im.ws.enums;
...
@@ -8,6 +8,11 @@ package com.wecloud.im.ws.enums;
public
enum
WsResponseCmdEnum
{
public
enum
WsResponseCmdEnum
{
/**
/**
* 会话中的事件
*/
CONVERSATION_EVENT_MSG
(
5
),
/**
* 下发在线RTC事件
* 下发在线RTC事件
*/
*/
SINGLE_RTC_MSG
(
4
),
SINGLE_RTC_MSG
(
4
),
...
...
common/src/main/java/com/wecloud/im/ws/strategy/concrete/ImChatConcrete.java
View file @
fca5bb0e
...
@@ -137,7 +137,7 @@ public class ImChatConcrete extends ImCmdAbstract {
...
@@ -137,7 +137,7 @@ public class ImChatConcrete extends ImCmdAbstract {
// 生成消息id
// 生成消息id
long
messageId
=
SnowflakeUtil
.
getId
();
long
messageId
=
SnowflakeUtil
.
getId
();
// 保存消息至消息表
// 保存消息至消息表
ImMessage
imMessage
=
saveImMessage
(
imApplication
,
imClientSender
,
toConversationId
,
messageId
,
content
);
ImMessage
imMessage
=
imMessageService
.
saveImMessage
(
imApplication
,
imClientSender
,
toConversationId
,
messageId
,
content
);
// 封装响应的实体
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
...
@@ -210,21 +210,6 @@ public class ImChatConcrete extends ImCmdAbstract {
...
@@ -210,21 +210,6 @@ public class ImChatConcrete extends ImCmdAbstract {
return
imClientSender
;
return
imClientSender
;
}
}
private
ImMessage
saveImMessage
(
ImApplication
imApplication
,
ImClient
imClientSender
,
Long
toConversationId
,
long
messageId
,
String
content
)
{
ImMessage
imMessage
=
new
ImMessage
();
imMessage
.
setId
(
messageId
);
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
imApplication
.
getId
());
imMessage
.
setSender
(
imClientSender
.
getId
());
imMessage
.
setContent
(
content
);
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
false
);
imMessage
.
setSystem
(
false
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setFkConversationId
(
toConversationId
);
imMessageService
.
save
(
imMessage
);
return
imMessage
;
}
private
boolean
black
(
ReceiveModel
receiveModel
,
String
appKey
,
String
clientUniId
,
ImClient
imClientSender
,
List
<
ImConversationMembers
>
membersList
)
{
private
boolean
black
(
ReceiveModel
receiveModel
,
String
appKey
,
String
clientUniId
,
ImClient
imClientSender
,
List
<
ImConversationMembers
>
membersList
)
{
// 判断是否被拉黑
// 判断是否被拉黑
...
...
docs/md/内部/wecloud-im前端Websocket对接文档.md
View file @
fca5bb0e
# wec
loud-im 前端Websocket对接文档
# wec
loud-im 前端Websocket对接文档
...
@@ -450,6 +450,93 @@ websocket是异步的 有可能你很快速的发送了几条消息,服务器响
...
@@ -450,6 +450,93 @@ websocket是异步的 有可能你很快速的发送了几条消息,服务器响
-
xx已读某条消息 -1010
-
xx已读某条消息 -1010
-
你被xx拉入新会话 -1011
-
你被xx拉入新会话 -1011
### 下发 xx被xx移出会话
type为-1008
"cmd":5
该event事件消息类型需要已读和已接收回执,该消息会存入离线消息列表和消息历史记录列表
```json
{
"cmd":5,
"code":200,
"msg":"成功",
"data":{
"msgId":1427109835333308416,
"createTime":1629086007054,
"content":{
"operator":"aaaaa1",
"passivityOperator":"aaaaa2",
"type":-1008
},
"event":true,
"conversationId":1427109730563788800
},
"reqId":null
}
```
**参数描述**
| 字段名 | 字段类型 | 是否可空 | 说明 |
| ----------------- | -------- | -------- | ----------------- |
| operator | String | 否 | 操作的client ID |
| passivityOperator | String | 否 | 被操作的client ID |
### 下发 xx邀请xx加入会话
type为-1007
"cmd":5
该event事件消息类型需要已读和已接收回执,该消息会存入离线消息列表和消息历史记录列表
```json
{
"cmd":5,
"code":200,
"msg":"成功",
"data":{
"msgId":1427109835333308416,
"createTime":1629086007054,
"content":{
"operator":"aaaaa1",
"passivityOperator":"aaaaa2",
"type":"-1007"
},
"event":true,
"conversationId":1427109730563788800
},
"reqId":null
}
```
**参数描述**
| 字段名 | 字段类型 | 是否可空 | 说明 |
| ------------------ | -------- | -------- | -------------- |
| operator | String | 否 | 操作的client ID |
| passivityOperator | String | 否 | 被操作的client ID |
### 服务端在线下发 某消息*已接收*状态
### 服务端在线下发 某消息*已接收*状态
receiverId:接收方客户端id
receiverId:接收方客户端id
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment