This commit is contained in:
2025-11-22 15:31:01 +08:00
parent 9f25a85d07
commit b52a51c09b
37 changed files with 2587 additions and 240 deletions
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace support\OpenImSdk\Api;
use support\OpenImSdk\Core\Url;
use support\OpenImSdk\Core\Utils;
use support\OpenImSdk\Core\Config;
class Auth
{
/**
* 获取管理员token
* 直接从服务器获取,不使用缓存
* @param string $userID 管理员ID,默认为imAdmin
* @return array
*/
public function getAdminToken(string $userID = 'imAdmin'): array
{
$data = [
'userID' => $userID,
'secret' => Config::getSecret()
];
return Utils::send(Url::$getAdminToken, $data, '获取管理员token错误');
}
/**
* 获取用户token
* 直接从服务器获取,不使用缓存
* @param string $userID 用户ID
* @param int $platformID 平台ID,默认为1
* @return array
*/
public function getUserToken(string $userID, int $platformID = 1): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getUserToken, ['userID' => $userID, 'platformID' => $platformID], '获取用户token错误', $adminToken);
}
/**
* 强制登出
* @param string $userID 要登出的用户ID
* @param int $platformID 平台ID,默认为1
* @return array
*/
public function forceLogout(string $userID, int $platformID = 1): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
// 清除本地缓存的用户token
Utils::clearToken($userID);
return Utils::send(Url::$forceLogout, ['userID' => $userID, 'platformID' => $platformID], '强制登出错误', $adminToken);
}
/**
* 解析当前用户token
* @param string $token 用户token
* @return array
*/
public function parseToken(string $token): array
{
return Utils::send(Url::$parseToken, [], '解析当前用户token错误', $token);
}
/**
* 用户登录 (旧版,建议使用getUserToken)
* @param string $userID 用户ID
* @return array
*/
public function userToken(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$userToken, ['userID' => $userID], '用户登录错误', $adminToken);
}
}
+77
View File
@@ -0,0 +1,77 @@
<?php
namespace support\OpenImSdk\Api;
use support\OpenImSdk\Core\Url;
use support\OpenImSdk\Core\Utils;
class Conversation
{
/**
* 获取当前用户分页会话列表
* @param string $userID 用户ID
* @param int $pageNumber 页码,从1开始
* @param int $showNumber 每页数量
* @return array
*/
public function getOwnerConversation(string $userID, int $pageNumber = 1, int $showNumber = 20): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'userID' => $userID,
'pagination' => [
'pageNumber' => $pageNumber,
'showNumber' => $showNumber
]
];
return Utils::send(Url::$getOwnerConversation, $data, '获取当前用户分页会话列表失败', $adminToken);
}
/**
* 获取排序的会话列表
* @param string $userID 用户ID
* @return array
*/
public function getSortedConversationList(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getSortedConversationList, ['userID' => $userID], '获取排序的会话列表失败', $adminToken);
}
/**
* 为多个用户设置相同会话ID的字段
* @param string $conversationID 会话ID
* @param array $userIDs 用户ID列表
* @param int $recvMsgOpt 接收消息选项
* @param bool $isPinned 是否置顶
* @param bool $isPrivateChat 是否私聊
* @param int $groupAtType 群@类型
* @param string $ex 扩展字段
* @param bool $isMsgDestruct 是否开启消息销毁
* @param int $msgDestructTime 消息销毁时间
* @param int $burnDuration 阅后即焚时长
* @return array
*/
public function setConversations(string $conversationID, array $userIDs, int $recvMsgOpt = 0, bool $isPinned = false, bool $isPrivateChat = false, int $groupAtType = 0, string $ex = '', bool $isMsgDestruct = false, int $msgDestructTime = 0, int $burnDuration = 0): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'conversationID' => $conversationID,
'userIDs' => $userIDs,
'conversation' => [
'recvMsgOpt' => $recvMsgOpt,
'isPinned' => $isPinned,
'isPrivateChat' => $isPrivateChat,
'groupAtType' => $groupAtType,
'ex' => $ex,
'isMsgDestruct' => $isMsgDestruct,
'msgDestructTime' => $msgDestructTime,
'burnDuration' => $burnDuration
]
];
return Utils::send(Url::$setConversations, $data, '为多个用户设置相同会话ID的字段失败', $adminToken);
}
}
+212
View File
@@ -0,0 +1,212 @@
<?php
namespace support\OpenImSdk\Api;
use support\OpenImSdk\Core\Url;
use support\OpenImSdk\Core\Utils;
class Friend
{
/**
* 添加黑名单
* @param string $ownerUserID 用户ID
* @param string $blackUserID 被拉黑用户ID
* @return array
*/
public function addBlack(string $ownerUserID, string $blackUserID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['ownerUserID' => $ownerUserID, 'blackUserID' => $blackUserID];
return Utils::send(Url::$addBlack, $data, '添加黑名单错误', $adminToken);
}
/**
* 添加好友
* @param string $fromUserID 发送者ID
* @param string $toUserID 接收者ID
* @param string $reqMsg 请求消息
* @return array
*/
public function addFriend(string $fromUserID, string $toUserID, string $reqMsg): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['fromUserID' => $fromUserID, 'toUserID' => $toUserID, 'reqMsg' => $reqMsg];
return Utils::send(Url::$addFriend, $data, '添加好友错误', $adminToken);
}
/**
* 同意/拒绝好友请求
* @param string $ownerUserID 处理者ID
* @param string $friendUserID 好友ID
* @param string $handleMsg 处理消息
* @param int $handleResult 处理结果,1同意,2拒绝
* @return array
*/
public function addFriendResponse(string $ownerUserID, string $friendUserID, string $handleMsg, int $handleResult): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'ownerUserID' => $ownerUserID,
'friendUserID' => $friendUserID,
'handleMsg' => $handleMsg,
'handleResult' => $handleResult
];
return Utils::send(Url::$addFriendResponse, $data, '同意/拒绝好友请求错误', $adminToken);
}
/**
* 删除好友
* @param string $ownerUserID 用户ID
* @param string $friendUserID 好友ID
* @return array
*/
public function deleteFriend(string $ownerUserID, string $friendUserID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['ownerUserID' => $ownerUserID, 'friendUserID' => $friendUserID];
return Utils::send(Url::$deleteFriend, $data, '删除好友错误', $adminToken);
}
/**
* 获取黑名单列表
* @param string $userID 用户ID
* @return array
*/
public function getBlackList(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getBlackList, ['userID' => $userID], '获取黑名单列表错误', $adminToken);
}
/**
* 获取好友申请列表(收到的申请)
* @param string $userID 用户ID
* @return array
*/
public function getFriendApplyList(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getFriendApplyList, ['userID' => $userID], '获取好友申请列表错误', $adminToken);
}
/**
* 获取用户的好友列表
* @param string $userID 用户ID
* @return array
*/
public function getFriendList(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getFriendList, ['userID' => $userID], '获取用户的好友列表错误', $adminToken);
}
/**
* 获取自己的好友申请列表(发出的申请)
* @param string $userID 用户ID
* @return array
*/
public function getSelfFriendApplyList(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getSelfFriendApplyList, ['userID' => $userID], '获取自己的好友申请列表错误', $adminToken);
}
/**
* 批量导入好友
* @param string $ownerUserID 用户ID
* @param array $friendUserIDs 好友ID列表
* @return array
*/
public function importFriend(string $ownerUserID, array $friendUserIDs = []): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['ownerUserID' => $ownerUserID, 'friendUserIDs' => $friendUserIDs];
return Utils::send(Url::$importFriend, $data, '批量导入好友错误', $adminToken);
}
/**
* 检查用户之间是否为好友
* @param string $userID1 用户ID1
* @param string $userID2 用户ID2
* @return array
*/
public function isFriend(string $userID1, string $userID2): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['userID1' => $userID1, 'userID2' => $userID2];
return Utils::send(Url::$isFriend, $data, '检查用户之间是否为好友错误', $adminToken);
}
/**
* 把用户移除黑名单
* @param string $ownerUserID 用户ID
* @param string $blackUserID 被移除黑名单的用户ID
* @return array
*/
public function removeBlack(string $ownerUserID, string $blackUserID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['ownerUserID' => $ownerUserID, 'blackUserID' => $blackUserID];
return Utils::send(Url::$removeBlack, $data, '把用户移除黑名单错误', $adminToken);
}
/**
* 设置好友备注
* @param string $fromUserID 用户ID
* @param string $toUserID 好友ID
* @param string $remark 备注
* @return array
*/
public function setFriendRemark(string $fromUserID, string $toUserID, string $remark): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['fromUserID' => $fromUserID, 'toUserID' => $toUserID, 'remark' => $remark];
return Utils::send(Url::$setFriendRemark, $data, '设置好友备注错误', $adminToken);
}
/**
* 更新好友信息
* @param string $ownerUserID 用户ID
* @param string $friendUserID 好友ID
* @param string $remark 备注
* @param bool $isPinned 是否置顶
* @param string $ex 扩展字段
* @return array
*/
public function updateFriends(string $ownerUserID, string $friendUserID, string $remark = '', bool $isPinned = false, string $ex = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'ownerUserID' => $ownerUserID,
'friendUserID' => $friendUserID
];
// 只添加非空参数
if ($remark !== '') {
$data['remark'] = $remark;
}
if ($isPinned) {
$data['isPinned'] = $isPinned;
}
if ($ex !== '') {
$data['ex'] = $ex;
}
return Utils::send(Url::$updateFriends, $data, '更新好友信息失败', $adminToken);
}
}
+391
View File
@@ -0,0 +1,391 @@
<?php
namespace support\OpenImSdk\Api;
use support\OpenImSdk\Core\Url;
use support\OpenImSdk\Core\Utils;
class Group
{
/**
* 创建群组
* @param string $ownerUserID 群主ID
* @param array $memberUserIDs 普通成员ID列表
* @param array $adminUserIDs 管理员ID列表
* @param string $groupName 群名称
* @param string $groupID 群ID,可选
* @param string $faceURL 群头像
* @param string $introduction 群简介
* @param string $notification 群公告
* @param string $ex 扩展字段
* @param int $groupType 群类型,固定为2
* @param int $needVerification 加群验证方式
* @param int $lookMemberInfo 查看群成员信息权限
* @param int $applyMemberFriend 群内加好友权限
* @return array
*/
public function createGroup(string $ownerUserID, array $memberUserIDs = [], array $adminUserIDs = [], string $groupName = '',
string $groupID = '', string $faceURL = '', string $introduction = '', string $notification = '',
string $ex = '', int $groupType = 2, int $needVerification = 0, int $lookMemberInfo = 0, int $applyMemberFriend = 0): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'ownerUserID' => $ownerUserID,
'memberUserIDs' => $memberUserIDs,
'adminUserIDs' => $adminUserIDs,
'groupInfo' => [
'groupID' => $groupID,
'groupName' => $groupName,
'notification' => $notification,
'introduction' => $introduction,
'faceURL' => $faceURL,
'ex' => $ex,
'groupType' => $groupType,
'needVerification' => $needVerification,
'lookMemberInfo' => $lookMemberInfo,
'applyMemberFriend' => $applyMemberFriend
]
];
return Utils::send(Url::$createGroup, $data, '创建群组失败', $adminToken);
}
/**
* 申请加入群组
* @param string $token 用户token
* @param string $groupID 群组ID
* @param string $reqMsg 申请消息
* @param int $joinSource 加入来源
* @return array
*/
public function joinGroup(string $token, string $groupID, string $reqMsg = '', int $joinSource = 0): array
{
$data = [
'groupID' => $groupID,
'reqMsg' => $reqMsg,
'joinSource' => $joinSource
];
return Utils::send(Url::$joinGroup, $data, '申请加入群组失败', $token);
}
/**
* 退出群组
* @param string $token 用户token
* @param string $groupID 群组ID
* @return array
*/
public function quitGroup(string $token, string $groupID): array
{
return Utils::send(Url::$quitGroup, ['groupID' => $groupID], '退出群组失败', $token);
}
/**
* 获取群组信息
* @param array $groupIDs 群组ID列表
* @return array
*/
public function getGroupsInfo(array $groupIDs): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getGroupsInfo, ['groupIDs' => $groupIDs], '获取群组信息失败', $adminToken);
}
/**
* 获取群成员列表
* @param string $groupID 群组ID
* @param int $filter 过滤类型,0所有,1群主,2管理员,3普通成员,4禁言,5进入黑名单
* @param int $offset 偏移量
* @param int $count 数量
* @return array
*/
public function getGroupMemberList(string $groupID, int $filter = 0, int $offset = 0, int $count = 100): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'filter' => $filter,
'offset' => $offset,
'count' => $count
];
return Utils::send(Url::$getGroupMemberList, $data, '获取群成员列表失败', $adminToken);
}
/**
* 获取指定群成员信息
* @param string $groupID 群组ID
* @param array $userIDs 用户ID列表
* @return array
*/
public function getGroupMembersInfo(string $groupID, array $userIDs): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'userIDs' => $userIDs
];
return Utils::send(Url::$getGroupMembersInfo, $data, '获取指定群成员信息失败', $adminToken);
}
/**
* 将用户拉入群组
* @param string $groupID 群组ID
* @param string $inviterUserID 邀请者ID
* @param array $invitedUserIDList 被邀请的用户ID列表
* @param string $reason 邀请原因
* @return array
*/
public function inviteUserToGroup(string $groupID, string $inviterUserID, array $invitedUserIDList, string $reason = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'inviterUserID' => $inviterUserID,
'invitedUserIDList' => $invitedUserIDList,
'reason' => $reason,
];
return Utils::send(Url::$inviteUserToGroup, $data, '将用户拉入群组失败', $adminToken);
}
/**
* 踢出群成员
* @param string $groupID 群组ID
* @param string $kickUserID 踢出者ID
* @param array $kickedUserIDs 被踢出的用户ID列表
* @param string $reason 踢出原因
* @return array
*/
public function kickGroupMember(string $groupID, string $kickUserID, array $kickedUserIDs, string $reason = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'kickUserID' => $kickUserID,
'kickedUserIDs' => $kickedUserIDs,
'reason' => $reason
];
return Utils::send(Url::$kickGroupMember, $data, '踢出群成员失败', $adminToken);
}
/**
* 转让群主
* @param string $groupID 群组ID
* @param string $oldOwnerUserID 原群主ID
* @param string $newOwnerUserID 新群主ID
* @return array
*/
public function transferGroupOwner(string $groupID, string $oldOwnerUserID, string $newOwnerUserID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'oldOwnerUserID' => $oldOwnerUserID,
'newOwnerUserID' => $newOwnerUserID
];
return Utils::send(Url::$transferGroupOwner, $data, '转让群主失败', $adminToken);
}
/**
* 获取用户加入的群组列表
* @param string $userID 用户ID
* @return array
*/
public function getJoinedGroupList(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getJoinedGroupList, ['userID' => $userID], '获取用户加入的群组列表失败', $adminToken);
}
/**
* 解散群组
* @param string $groupID 群组ID
* @return array
*/
public function dismissGroup(string $groupID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$dismissGroup, ['groupID' => $groupID], '解散群组失败', $adminToken);
}
/**
* 设置群成员昵称
* @param string $groupID 群组ID
* @param string $userID 用户ID
* @param string $nickname 群内昵称
* @return array
*/
public function setGroupMemberNickname(string $groupID, string $userID, string $nickname): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'userID' => $userID,
'nickname' => $nickname
];
return Utils::send(Url::$setGroupMemberNickname, $data, '设置群成员昵称失败', $adminToken);
}
/**
* 设置群成员信息
* @param string $groupID 群组ID
* @param string $userID 用户ID
* @param array $data 群成员信息
* @return array
*/
public function setGroupMemberInfo(string $groupID, string $userID, array $data): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = array_merge([
'groupID' => $groupID,
'userID' => $userID
], $data);
return Utils::send(Url::$setGroupMemberInfo, $data, '设置群成员信息失败', $adminToken);
}
/**
* 获取群成员用户ID列表
* @param string $groupID 群组ID
* @return array
*/
public function getGroupMemberUserIDs(string $groupID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getGroupMemberUserIDs, ['groupID' => $groupID], '获取群成员用户ID列表失败', $adminToken);
}
/**
* 获取群成员列表
* @param string $groupID 群组ID
* @param int $offset 偏移量
* @param int $count 数量
* @return array
*/
public function getGroupAllMemberList(string $groupID, int $offset = 0, int $count = 100): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'pagination' => [
'pageNumber' => intval($offset / $count) + 1,
'showNumber' => $count
]
];
return Utils::send(Url::$getGroupAllMemberList, $data, '获取群成员列表失败', $adminToken);
}
/**
* 获取用户加群申请列表
* @param string $userID 用户ID
* @return array
*/
public function getUserReqGroupApplicationList(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getUserReqGroupApplicationList, ['userID' => $userID], '获取用户加群申请列表失败', $adminToken);
}
/**
* 获取指定用户对指定群组的加群请求
* @param string $groupID 群组ID
* @param array $userIDs 用户ID列表
* @return array
*/
public function getGroupApplicationListByUserID(string $groupID, array $userIDs): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'userIDs' => $userIDs
];
return Utils::send(Url::$getGroupUsersReqApplicationList, $data, '获取指定用户对指定群组的加群请求失败', $adminToken);
}
/**
* 处理群组申请
* @param string $groupID 群组ID
* @param string $fromUserID 申请者ID
* @param string $handledUserID 处理者ID
* @param int $handleResult 处理结果,1同意,2拒绝
* @param string $handleMsg 处理消息
* @return array
*/
public function groupApplicationResponse(string $groupID, string $fromUserID, string $handledUserID, int $handleResult, string $handleMsg = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'groupID' => $groupID,
'fromUserID' => $fromUserID,
'handledUserID' => $handledUserID,
'handleResult' => $handleResult,
'handleMsg' => $handleMsg
];
return Utils::send(Url::$groupApplicationResponse, $data, '处理群组申请失败', $adminToken);
}
/**
* 禁言群组,只有群主和管理员可以发送消息
* @param string $groupID 群组ID
* @return array
*/
public function muteGroup(string $groupID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$muteGroup, ['groupID' => $groupID], '禁言群组失败', $adminToken);
}
/**
* 取消禁言群组,所有成员都可以发送消息
* @param string $groupID 群组ID
* @return array
*/
public function cancelMuteGroup(string $groupID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$cancelMuteGroup, ['groupID' => $groupID], '取消禁言群组失败', $adminToken);
}
/**
* 禁言群成员
* @param string $groupID 群组ID
* @param string $userID 群成员ID
* @param int $mutedSeconds 禁言时间(秒)
* @return array
*/
public function muteGroupMember(string $groupID, string $userID, int $mutedSeconds = 0): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['groupID' => $groupID, 'userID' => $userID, 'mutedSeconds' => $mutedSeconds];
return Utils::send(Url::$muteGroupMember, $data, '禁言群成员失败', $adminToken);
}
/**
* 取消禁言群成员
* @param string $groupID 群组ID
* @param string $userID 群成员ID
* @return array
*/
public function cancelMuteGroupMember(string $groupID, string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = ['groupID' => $groupID, 'userID' => $userID];
return Utils::send(Url::$cancelMuteGroupMember, $data, '取消禁言群成员失败', $adminToken);
}
}
+217
View File
@@ -0,0 +1,217 @@
<?php
namespace support\OpenImSdk\Api;
use support\OpenImSdk\Core\Url;
use support\OpenImSdk\Core\Utils;
class Message
{
/**
* 发送消息
* @param string $sendID 发送者ID
* @param string $recvID 接收者ID,单聊时必填
* @param string $groupID 群组ID,群聊时必填
* @param string $senderNickname 发送者昵称
* @param string $senderFaceURL 发送者头像
* @param int $senderPlatformID 发送者平台ID
* @param array $content 消息内容
* @param int $contentType 消息类型
* @param int $sessionType 会话类型,1单聊,2群聊
* @param bool $isOnlineOnly 是否仅在线用户接收
* @param bool $notOfflinePush 是否不离线推送
* @param int $sendTime 发送时间,毫秒
* @param array $offlinePushInfo 离线推送信息
* @param string $ex 扩展字段
* @return array
*/
public function sendMsg(string $sendID, string $recvID = '', string $groupID = '', string $senderNickname = '', string $senderFaceURL = '', int $senderPlatformID = 1, array $content = [], int $contentType = 101, int $sessionType = 1, bool $isOnlineOnly = false, bool $notOfflinePush = false, int $sendTime = 0, array $offlinePushInfo = [], string $ex = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'sendID' => $sendID,
'senderNickname' => $senderNickname,
'senderFaceURL' => $senderFaceURL,
'senderPlatformID' => $senderPlatformID,
'contentType' => $contentType,
'sessionType' => $sessionType,
'isOnlineOnly' => $isOnlineOnly,
'notOfflinePush' => $notOfflinePush,
'ex' => $ex
];
// 根据会话类型设置recvID或groupID
if ($sessionType == 1 && !empty($recvID)) {
$data['recvID'] = $recvID;
} elseif ($sessionType == 2 && !empty($groupID)) {
$data['groupID'] = $groupID;
}
// 设置消息内容
if (empty($content)) {
$data['content'] = ['text' => ''];
} else {
$data['content'] = $content;
}
// 设置发送时间,如果有的话
if ($sendTime > 0) {
$data['sendTime'] = $sendTime;
}
// 设置离线推送信息,如果有的话
if (!empty($offlinePushInfo)) {
$data['offlinePushInfo'] = $offlinePushInfo;
}
return Utils::send(Url::$sendMsg, $data, '发送消息失败', $adminToken);
}
/**
* 批量发送消息
* @param string $sendID 发送者ID
* @param string $senderNickname 发送者昵称
* @param string $senderFaceURL 发送者头像
* @param int $sessionType 会话类型
* @param int $contentType 消息类型
* @param string $content 消息内容
* @return array
*/
public function batchSendMsg(string $sendID, string $senderNickname, string $senderFaceURL, int $sessionType, int $contentType, string $content): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'senderPlatformID' => 0,
'sendID' => $sendID,
'senderNickname' => $senderNickname,
'senderFaceURL' => $senderFaceURL,
'sessionType' => $sessionType,
'contentType' => $contentType,
'content' => ['text' => $content]
];
return Utils::send(Url::$batchSendMsg, $data, '批量发送消息失败', $adminToken);
}
/**
* 清空用户消息
* @param string $userID 用户ID
* @return array
*/
public function clearMsg(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$clearMsg, ['userID' => $userID], '清空用户消息失败', $adminToken);
}
/**
* 根据seq列表删除消息
* @param string $userID 用户ID
* @param string $conversationID 会话ID
* @param array $seqs seq列表
* @return array
*/
public function delMsg(string $userID, string $conversationID, array $seqs): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'userID' => $userID,
'conversationID' => $conversationID,
'seqs' => $seqs
];
return Utils::send(Url::$delMsg, $data, '删除消息失败', $adminToken);
}
/**
* 撤回消息
* @param string $conversationID 会话ID
* @param string $seq 消息seq
* @param string $userID 用户ID
* @return array
*/
public function revokeMessage(string $conversationID, string $seq, string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'conversationID' => $conversationID,
'seq' => intval($seq),
'userID' => $userID
];
return Utils::send(Url::$revokeMessage, $data, '撤回消息失败', $adminToken);
}
/**
* 发送业务通知
* @param string $sendID 发送者ID
* @param string $recvID 接收者ID
* @param string $title 通知标题
* @param string $content 通知内容
* @param string $notificationUrl 通知点击跳转链接
* @param string $ex 扩展字段
* @return array
*/
public function sendBusinessNotification(string $sendID, string $recvID, string $title, string $content, string $notificationUrl = '', string $ex = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'sendID' => $sendID,
'recvID' => $recvID,
'title' => $title,
'content' => $content,
'notificationUrl' => $notificationUrl,
'ex' => $ex
];
return Utils::send(Url::$sendBusinessNotification, $data, '发送业务通知失败', $adminToken);
}
/**
* 获取用户所有会话
* @param string $userID 用户ID
* @return array
*/
public function getAllConversations(string $userID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getAllConversations, ['userID' => $userID], '获取用户所有会话失败', $adminToken);
}
/**
* 根据会话ID获取会话
* @param string $userID 用户ID
* @param string $conversationID 会话ID
* @return array
*/
public function getConversation(string $userID, string $conversationID): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'userID' => $userID,
'conversationID' => $conversationID
];
return Utils::send(Url::$getConversation, $data, '获取会话失败', $adminToken);
}
/**
* 根据会话ID列表获取会话
* @param string $userID 用户ID
* @param array $conversationIDs 会话ID列表
* @return array
*/
public function getConversations(string $userID, array $conversationIDs): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'userID' => $userID,
'conversationIDs' => $conversationIDs
];
return Utils::send(Url::$getConversations, $data, '获取会话列表失败', $adminToken);
}
}
+262
View File
@@ -0,0 +1,262 @@
<?php
namespace support\OpenImSdk\Api;
use support\OpenImSdk\Core\Url;
use support\OpenImSdk\Core\Utils;
class User
{
/**
* 获取用户列表
* @param int $pagination 页码
* @param int $showNumber 每页数量
* @return array
*/
public function getUsers(int $pagination = 1, int $showNumber = 20): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'pagination' => [
'pageNumber' => $pagination,
'showNumber' => $showNumber
]
];
return Utils::send(Url::$getUsers, $data, '获取用户列表错误', $adminToken);
}
/**
* 获取用户在线状态
* @param array $userIDList 用户ID列表
* @return array
*/
public function getUsersOnlineStatus(array $userIDList): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getUsersOnlineStatus, ['userIDList' => $userIDList], '获取用户在线状态错误', $adminToken);
}
/**
* 获取用户在线token详情
* @param array $userIDList 用户ID列表
* @return array
*/
public function getUsersOnlineTokenDetail(array $userIDList): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getUsersOnlineTokenDetail, ['userIDList' => $userIDList], '获取用户在线token详情错误', $adminToken);
}
/**
* 获取订阅用户状态
* @return array
*/
public function getSubscribeUsersStatus(): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getSubscribeUsersStatus, [], '获取订阅用户状态错误', $adminToken);
}
/**
* 订阅用户状态
* @param string $token 管理员token
* @param array $userIDList 用户ID列表
* @return array
*/
public function subscribeUsersStatus(array $userIDList): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$subscribeUsersStatus, ['userIDList' => $userIDList], '订阅用户状态错误', $adminToken);
}
/**
* 设置全局免打扰
* @param int $globalRecvMsgOpt 全局消息接收选项
* @return array
*/
public function setGlobalMsgRecvOpt(int $globalRecvMsgOpt): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$setGlobalMsgRecvOpt, ['globalRecvMsgOpt' => $globalRecvMsgOpt], '设置全局免打扰错误', $adminToken);
}
/**
* 修改用户信息
* @param string $userID 用户ID
* @param array $data 用户信息
* @return array
*/
public function updateUserInfo(string $userID, array $data): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = array_merge(['userID' => $userID], $data);
return Utils::send(Url::$updateUserInfo, $data, '修改用户信息错误', $adminToken);
}
/**
* 搜索通知账号
* @param string $keyword 搜索关键词
* @param int $pagination 页码
* @param int $showNumber 每页数量
* @return array
*/
public function searchNotificationAccount(string $keyword, int $pagination = 1, int $showNumber = 20): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'keyword' => $keyword,
'pagination' => [
'pageNumber' => $pagination,
'showNumber' => $showNumber
]
];
return Utils::send(Url::$searchNotificationAccount, $data, '搜索通知账号错误', $adminToken);
}
/**
* 添加通知账号
* @param string $userID 用户ID
* @param string $nickname 昵称
* @param string $faceURL 头像
* @param int $gender 性别
* @param string $phoneNumber 手机号
* @param string $birth 生日
* @param string $email 邮箱
* @param string $ex 扩展字段
* @return array
*/
public function addNotificationAccount(string $userID, string $nickname = '', string $faceURL = '', int $gender = 1, string $phoneNumber = '', string $birth = '', string $email = '', string $ex = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'userID' => $userID,
'nickname' => $nickname,
'faceURL' => $faceURL,
'gender' => $gender,
'phoneNumber' => $phoneNumber,
'birth' => $birth,
'email' => $email,
'ex' => $ex
];
return Utils::send(Url::$addNotificationAccount, $data, '添加通知账号错误');
}
/**
* 更新通知账号
* @param string $userID 用户ID
* @param string $nickname 昵称
* @param string $faceURL 头像
* @param int $gender 性别
* @param string $phoneNumber 手机号
* @param string $birth 生日
* @param string $email 邮箱
* @param string $ex 扩展字段
* @return array
*/
public function updateNotificationAccount(string $userID, string $nickname = '', string $faceURL = '', int $gender = 1, string $phoneNumber = '', string $birth = '', string $email = '', string $ex = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'userID' => $userID,
'nickname' => $nickname,
'faceURL' => $faceURL,
'gender' => $gender,
'phoneNumber' => $phoneNumber,
'birth' => $birth,
'email' => $email,
'ex' => $ex
];
return Utils::send(Url::$updateNotificationAccount, $data, '更新通知账号错误', $adminToken);
}
/**
* 检查列表账户注册状态
* @param array $checkUserIDList 用户ID列表
* @return array
*/
public function accountCheck(array $checkUserIDList): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$accountCheck, ['checkUserIDList' => $checkUserIDList], '检查列表账户注册状态错误', $adminToken);
}
/**
* 获取所有用户uid列表
* @return array
*/
public function getAllUsersUid($page=1,$limit=100): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getAllUsersUid, ['pagination'=>['pageNumber'=>$page,"showNumber"=>$limit]], '获取所有用户uid列表错误', $adminToken);
}
/**
* 获取自己的信息
* @param string $userID 用户ID
* @return array
*/
public function getSelfUserInfo(string $userID): array
{
// 获取管理员token
$userToken = Utils::getUserToken($userID);
return Utils::send(Url::$getSelfUserInfo, ['userID' => $userID], '获取自己的信息错误', $userToken);
}
/**
* 获取用户信息
* @param array $userIDList 用户ID列表
* @return array
*/
public function getUsersInfo(array $userIDList): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
return Utils::send(Url::$getUsersInfo, ['userIDList' => $userIDList], '获取用户信息错误', $adminToken);
}
//Header
//
//Header Name Example Value Required Type Description
//operationID 1646445464564 Required string Used for global traceability, suggested as a unique timestamp per request
//token eyJhbxxxx3Xs Required string Admin token
//Field Name Required Type Description
//users Required array List of users
//users.userID Required string User ID
//users.nickname Required string User nickname
//users.faceURL Required string User avatar URL
/**
* 用户注册
* @param string $userID 用户ID
* @param string $nickname 昵称
* @param string $faceURL 头像地址
* @return array
*/
public function userRegister(string $userID, string $nickname = '', string $faceURL = ''): array
{
// 获取管理员token
$adminToken = Utils::getAdminToken();
$data = [
'users' => [
[
'userID' => $userID,
'nickname' => $nickname,
'faceURL' => $faceURL
]
]
];
return Utils::send(Url::$userRegister, $data, '注册IM错误', $adminToken);
}
}