# 工作手机SDK v3.0 - PHP客户端

存客宝后端直接使用此SDK调用工作手机服务。

> **接口全量目录**：[开发文档/5、接口/01-规范与统一层/工作手机API全量接口目录.md](../../开发文档/5、接口/01-规范与统一层/工作手机API全量接口目录.md)（328 路由）  
> **存客宝 BFF 映射**：[存客宝BFF与工作手机SDK映射表.md](../../开发文档/5、接口/02-业务对接/存客宝BFF与工作手机SDK映射表.md)

## 安装

### 方式1: Composer

```bash
composer require cunkebao/workphone-sdk
```

### 方式2: 手动安装

将 `WorkPhoneClient.php` 复制到 `extend/Cunkebao/WorkPhone/` 目录。

## 快速开始

```php
<?php
use Cunkebao\WorkPhone\WorkPhoneClient;

// 初始化
$sdk = new WorkPhoneClient(
    'http://localhost:8899',           // SDK服务器地址
    'workphone-secret-key-2026'        // API密钥
);

// 发送微信消息
$result = $sdk->sendMessage('device-001', 'wechat', '张三', '你好');

// 发送抖音私信
$result = $sdk->sendMessage('device-001', 'douyin', '用户昵称', '感谢关注');

// 执行AI任务
$result = $sdk->executeTask('device-001', '打开微信给张三发消息：下午开会');
```

## 核心接口

### 发送消息（统一接口）

```php
$result = $sdk->sendMessage(
    'device-001',     // 设备ID
    'wechat',         // 平台: wechat/douyin/xhs
    'wxid_xxx',       // 接收者
    '消息内容',        // 内容
    'text'            // 类型: text/image
);

// 响应
[
    'code' => 200,
    'data' => [
        'success' => true,
        'message_id' => 'wx_1234567890'
    ],
    'channel_used' => 'sdk_control'  // 实际使用的通道
]
```

### 快捷方法

```php
// 微信
$sdk->wechatSend('device-001', '张三', '你好');

// 抖音
$sdk->douyinSend('device-001', '用户昵称', '感谢关注');

// 小红书
$sdk->xhsSend('device-001', '用户昵称', 'Hi~');
```

### 设备管理

```php
// 获取所有设备
$devices = $sdk->getDevices();

// 获取在线设备
$onlineDevices = $sdk->getOnlineDevices();

// 检查设备是否在线
if ($sdk->isOnline('device-001')) {
    // 设备在线
}

// 截图
$screenshot = $sdk->screenshot('device-001');
```

### AI Agent（自然语言控制）

```php
// 执行复杂任务
$result = $sdk->executeTask(
    'device-001',
    '打开淘宝搜索iPhone16并加入购物车'
);

// 获取Agent状态
$status = $sdk->getAgentStatus('device-001');

// 停止任务
$sdk->stopAgent('device-001');
```

### 底层控制

```php
// 点击坐标
$sdk->click('device-001', 500, 1000);

// 点击文字
$sdk->clickText('device-001', '发送');

// 输入
$sdk->input('device-001', 'Hello World');

// 滑动
$sdk->swipe('device-001', 'up');

// 获取UI树
$uiTree = $sdk->getUiTree('device-001');
```

## 与存客宝集成

### 配置文件

```php
// config/workphone.php
return [
    'server_url' => env('WORKPHONE_URL', 'http://localhost:8899'),
    'api_key' => env('WORKPHONE_KEY', 'workphone-secret-key-2026'),
];
```

### 替换原有代码

```php
// ========== 原代码（调用奥创）==========
$signInData = [
    "cmdType" => "CmdSendMsg",
    "wechatAccountId" => $wechatId,
    "toWxid" => $toWxid,
    "content" => $content,
];
$this->client->send(json_encode($signInData));

// ========== 新代码（调用自有SDK）==========
$sdk = new WorkPhoneClient(
    config('workphone.server_url'),
    config('workphone.api_key')
);
$result = $sdk->sendMessage($deviceId, 'wechat', $toWxid, $content);
```

## 错误处理

```php
$result = $sdk->sendMessage(...);

if ($result['code'] !== 200) {
    // 处理错误
    $error = $result['message'];
    
    switch ($result['code']) {
        case 503:
            // 设备不在线
            break;
        case 408:
            // 超时
            break;
        case 400:
            // 参数错误
            break;
    }
}
```

## 通道说明

SDK会自动选择最优通道：

| 通道 | 说明 | 优先级 |
|------|------|:---:|
| official_api | 官方API（抖音等） | 1 |
| sdk_control | SDK控制（uiautomator2） | 2 |
| ai_agent | AI Agent（DroidRun） | 3 |

响应中的 `channel_used` 字段表示实际使用的通道。
