3
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
# OpenIM PHP SDK
|
||||
|
||||
> 基于 [OpenIM](https://github.com/orgs/OpenIMSDK) 的 PHP SDK
|
||||
>
|
||||
> API文档: [https://docs.openim.io/restapi/apis/introduction](https://docs.openim.io/restapi/apis/introduction)
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
composer require MrYzYs/OpenImSdk
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
```php
|
||||
$config = [
|
||||
'host' => 'http://127.0.0.1:10002', // OpenIM API地址
|
||||
'secret' => 'openIM123', // OpenIM密钥
|
||||
];
|
||||
```
|
||||
|
||||
## 基本使用
|
||||
|
||||
### 初始化客户端
|
||||
|
||||
```php
|
||||
// 使用文件缓存(默认)
|
||||
$IM = new OpenImSdk\Client($config);
|
||||
|
||||
// 使用Redis缓存 (phpredis)
|
||||
$redis = new Redis();
|
||||
$redis->connect('127.0.0.1', 6379);
|
||||
$IM = new OpenImSdk\Client($config, $redis);
|
||||
|
||||
// 使用Redis缓存 (predis)
|
||||
$redis = new Predis\Client([
|
||||
'scheme' => 'tcp',
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 6379,
|
||||
]);
|
||||
$IM = new OpenImSdk\Client($config, $redis);
|
||||
|
||||
// 指定文件缓存目录
|
||||
$IM = new OpenImSdk\Client($config, null, '/path/to/cache');
|
||||
```
|
||||
|
||||
### 认证管理
|
||||
|
||||
```php
|
||||
// 用户注册
|
||||
$result = $IM->auth->userRegister('user123', '测试用户', 'https://example.com/avatar.jpg');
|
||||
|
||||
// 强制登出
|
||||
$logout = $IM->auth->forceLogout('user123');
|
||||
|
||||
// 解析token
|
||||
$tokenInfo = $IM->auth->parseToken($userToken);
|
||||
```
|
||||
|
||||
### 用户管理
|
||||
|
||||
```php
|
||||
// 获取用户列表
|
||||
$users = $IM->user->getUsers($adminToken);
|
||||
|
||||
// 获取用户在线状态
|
||||
$onlineStatus = $IM->user->getUsersOnlineStatus($adminToken, ['user123', 'user456']);
|
||||
|
||||
// 更新用户信息
|
||||
$updateUser = $IM->user->updateUserInfo($adminToken, 'user123', [
|
||||
'nickname' => '新昵称',
|
||||
'faceURL' => 'https://example.com/new-avatar.jpg'
|
||||
]);
|
||||
```
|
||||
|
||||
### 消息管理
|
||||
|
||||
```php
|
||||
// 发送消息
|
||||
$sendMsg = $IM->message->sendMsg(
|
||||
$adminToken,
|
||||
'admin', // 发送者ID
|
||||
'user123', // 接收者ID
|
||||
'', // 群组ID(单聊时为空)
|
||||
'管理员', // 发送者昵称
|
||||
'https://example.com/admin-avatar.jpg', // 发送者头像
|
||||
1, // 发送者平台ID
|
||||
['text' => '你好,这是一条测试消息'], // 消息内容
|
||||
101, // 消息类型(101为文本消息)
|
||||
1 // 会话类型(1为单聊)
|
||||
);
|
||||
|
||||
// 撤回消息
|
||||
$revokeMsg = $IM->message->revokeMessage(
|
||||
$adminToken,
|
||||
'single_user123', // 会话ID
|
||||
'123456', // 消息seq
|
||||
'user123' // 用户ID
|
||||
);
|
||||
```
|
||||
|
||||
### 会话管理
|
||||
|
||||
```php
|
||||
// 获取用户分页会话列表
|
||||
$conversations = $IM->conversation->getOwnerConversation(
|
||||
$adminToken,
|
||||
'user123', // 用户ID
|
||||
1, // 页码
|
||||
20 // 每页数量
|
||||
);
|
||||
|
||||
// 获取排序的会话列表
|
||||
$sortedConversations = $IM->conversation->getSortedConversationList(
|
||||
$adminToken,
|
||||
'user123' // 用户ID
|
||||
);
|
||||
```
|
||||
|
||||
### 好友管理
|
||||
|
||||
```php
|
||||
// 批量导入好友
|
||||
$importFriend = $IM->friend->importFriend(
|
||||
$adminToken,
|
||||
'user123', // 用户ID
|
||||
['user456', 'user789'] // 好友ID列表
|
||||
);
|
||||
|
||||
// 获取好友列表
|
||||
$friendList = $IM->friend->getFriendList(
|
||||
$adminToken,
|
||||
'user123' // 用户ID
|
||||
);
|
||||
|
||||
// 检查是否为好友
|
||||
$isFriend = $IM->friend->isFriend(
|
||||
$adminToken,
|
||||
'user123', // 用户ID1
|
||||
'user456' // 用户ID2
|
||||
);
|
||||
```
|
||||
|
||||
### 群组管理
|
||||
|
||||
```php
|
||||
// 创建群组
|
||||
$createGroup = $IM->group->createGroup(
|
||||
$adminToken,
|
||||
'user123', // 群主ID
|
||||
[], // 普通成员ID列表
|
||||
[], // 管理员ID列表
|
||||
'测试群组', // 群名称
|
||||
'', // 群ID(可选)
|
||||
'https://example.com/group-avatar.jpg', // 群头像
|
||||
'群简介', // 群简介
|
||||
'群公告' // 群公告
|
||||
);
|
||||
|
||||
// 邀请用户加入群组
|
||||
$inviteToGroup = $IM->group->inviteUserToGroup(
|
||||
$adminToken,
|
||||
'group123', // 群组ID
|
||||
'user123', // 邀请者ID
|
||||
['user456', 'user789'] // 被邀请的用户ID列表
|
||||
);
|
||||
|
||||
// 获取群成员列表
|
||||
$groupMembers = $IM->group->getGroupAllMemberList(
|
||||
$adminToken,
|
||||
'group123', // 群组ID
|
||||
0, // 偏移量
|
||||
100 // 数量
|
||||
);
|
||||
|
||||
// 申请加入群组
|
||||
$joinGroup = $IM->group->joinGroup(
|
||||
$userToken, // 用户token
|
||||
'group123', // 群组ID
|
||||
'我想加入这个群组' // 申请消息
|
||||
);
|
||||
|
||||
// 处理群组申请
|
||||
$handleApplication = $IM->group->groupApplicationResponse(
|
||||
$adminToken,
|
||||
'group123', // 群组ID
|
||||
'user456', // 申请者ID
|
||||
'user123', // 处理者ID
|
||||
1, // 处理结果,1同意,2拒绝
|
||||
'欢迎加入' // 处理消息
|
||||
);
|
||||
|
||||
// 踢出群成员
|
||||
$kickMember = $IM->group->kickGroupMember(
|
||||
$adminToken,
|
||||
'group123', // 群组ID
|
||||
'user123', // 踢出者ID
|
||||
['user456'], // 被踢出的用户ID列表
|
||||
'违反群规' // 踢出原因
|
||||
);
|
||||
|
||||
// 转让群主
|
||||
$transferOwner = $IM->group->transferGroupOwner(
|
||||
$adminToken,
|
||||
'group123', // 群组ID
|
||||
'user123', // 原群主ID
|
||||
'user456' // 新群主ID
|
||||
);
|
||||
```
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
src/
|
||||
├── Api/ # API接口类
|
||||
│ ├── Auth.php # 认证相关API
|
||||
│ ├── Conversation.php # 会话相关API
|
||||
│ ├── Friend.php # 好友相关API
|
||||
│ ├── Group.php # 群组相关API
|
||||
│ ├── Message.php # 消息相关API
|
||||
│ └── User.php # 用户相关API
|
||||
├── Core/ # 核心类
|
||||
│ ├── Config.php # 配置类
|
||||
│ ├── TokenManager.php # Token管理类
|
||||
│ ├── Url.php # URL管理
|
||||
│ ├── Utils.php # 工具类
|
||||
│ └── Validator.php # 验证器
|
||||
├── Exception/ # 异常处理
|
||||
│ └── ValidatorException.php # 验证异常
|
||||
└── Client.php # 客户端入口
|
||||
```
|
||||
|
||||
许可协议: GPL-V3
|
||||
Reference in New Issue
Block a user