call-center / php-sdk
PHP SDK for Call Center API - 用于对接呼叫中心系统的PHP开发包
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/call-center/php-sdk
Requires
- php: >=7.2
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^8.0
README
用于对接呼叫中心系统的PHP开发包,支持Composer安装。
功能特性
- ✅ Token生成和管理
- ✅ 创建外呼任务
- ✅ 获取任务列表
- ✅ 取消任务
- ✅ 查询任务状态
- ✅ 获取通话记录
- ✅ 完善的异常处理
- ✅ 符合PSR-4自动加载规范
安装
通过Composer安装
composer require call-center/php-sdk
手动安装
- 下载SDK源码
- 在项目中使用Composer加载:
{
"require": {
"call-center/php-sdk": "*"
},
"repositories": [
{
"type": "path",
"url": "./path/to/call-center-php-sdk"
}
]
}
然后运行:
composer install
快速开始
1. 初始化SDK
<?php require_once 'vendor/autoload.php'; use CallCenter\SDK\CallCenterSDK; // 初始化SDK $sdk = new CallCenterSDK('http://127.0.0.1:8200');
2. 生成Token
// 生成Token $tokenData = $sdk->token()->generate( 'your_app_key', // 应用密钥 'your_app_secret', // 应用机密 3600 // 过期时间(秒),可选,默认3600 ); // 获取Token字符串 $token = $tokenData['token']; // 设置Token到SDK(后续API调用将使用此Token) $sdk->setToken($token);
3. 创建外呼任务
try { $taskData = [ 'callee' => [ 'phone' => '13800138000', // 被叫电话号码(必填) 'name' => '张三' // 被叫姓名(可选) ], 'caller' => [ 'user_id' => 'USER123' // 主叫用户ID(必填) ], 'biz_id' => 'BIZ123456', // 业务ID(可选) 'business_type' => 'normal', // 业务类型:normal|marketing|notification|verification(可选) 'adapter_name' => 'sflai', // 适配器名称(可选,默认sflai) 'template_code' => 'TEMPLATE001', // 模板代码(可选) 'schedule_at' => '2023-01-01T12:00:00Z', // 计划执行时间(可选) 'metadata' => [ // 元数据(可选) 'key' => 'value' ] ]; $result = $sdk->task()->create($taskData); $taskId = $result['task_id']; echo "任务创建成功,任务ID: {$taskId}\n"; } catch (\CallCenter\SDK\Exception\ApiException $e) { echo "API错误: {$e->getMessage()}\n"; echo "错误代码: {$e->getCode()}\n"; } catch (\CallCenter\SDK\Exception\NetworkException $e) { echo "网络错误: {$e->getMessage()}\n"; }
4. 获取任务列表
try { $result = $sdk->task()->list(1, 20); // 第1页,每页20条 $tasks = $result['tasks']; $pagination = $result['pagination']; echo "共 {$pagination['total']} 条任务,当前第 {$pagination['page']} 页\n"; foreach ($tasks as $task) { echo "任务ID: {$task['id']}, 状态: {$task['status']}\n"; } } catch (\CallCenter\SDK\Exception\ApiException $e) { echo "错误: {$e->getMessage()}\n"; }
5. 查询任务状态
try { $status = $sdk->task()->getStatus('task1234567890'); echo "任务ID: {$status['task_id']}\n"; echo "状态: {$status['status']}\n"; echo "是否成功: " . ($status['success'] ? '是' : '否') . "\n"; } catch (\CallCenter\SDK\Exception\ApiException $e) { echo "错误: {$e->getMessage()}\n"; }
6. 取消任务
try { $result = $sdk->task()->cancel('task1234567890'); echo "取消成功: {$result['msg']}\n"; } catch (\CallCenter\SDK\Exception\ApiException $e) { echo "错误: {$e->getMessage()}\n"; }
7. 获取通话记录
try { $result = $sdk->task()->getRecords('task1234567890', 1, 20); $records = $result['records']; $pagination = $result['pagination']; echo "共 {$pagination['total']} 条通话记录\n"; foreach ($records as $record) { echo "记录ID: {$record['id']}\n"; echo "通话时长: {$record['duration']} 秒\n"; echo "开始时间: {$record['start_at']}\n"; echo "结果: {$record['result_msg']}\n"; if (isset($record['record_file_url'])) { echo "录音文件: {$record['record_file_url']}\n"; } echo "---\n"; } } catch (\CallCenter\SDK\Exception\ApiException $e) { echo "错误: {$e->getMessage()}\n"; }
完整示例
<?php require_once 'vendor/autoload.php'; use CallCenter\SDK\CallCenterSDK; use CallCenter\SDK\Exception\ApiException; use CallCenter\SDK\Exception\NetworkException; // 1. 初始化SDK $sdk = new CallCenterSDK('http://127.0.0.1:8200'); try { // 2. 生成Token $tokenData = $sdk->token()->generate('your_app_key', 'your_app_secret'); $sdk->setToken($tokenData['token']); echo "Token生成成功\n"; // 3. 创建外呼任务 $taskData = [ 'callee' => [ 'phone' => '13800138000', 'name' => '张三' ], 'caller' => [ 'user_id' => 'USER123' ], 'biz_id' => 'BIZ123456', 'business_type' => 'normal' ]; $createResult = $sdk->task()->create($taskData); $taskId = $createResult['task_id']; echo "任务创建成功,任务ID: {$taskId}\n"; // 4. 查询任务状态 sleep(2); // 等待一下 $status = $sdk->task()->getStatus($taskId); echo "任务状态: {$status['status']}\n"; // 5. 获取通话记录 $records = $sdk->task()->getRecords($taskId); echo "通话记录数量: " . count($records['records']) . "\n"; // 6. 获取任务列表 $taskList = $sdk->task()->list(1, 10); echo "任务总数: {$taskList['pagination']['total']}\n"; } catch (ApiException $e) { echo "API错误 [{$e->getCode()}]: {$e->getMessage()}\n"; $responseData = $e->getResponseData(); if (!empty($responseData)) { print_r($responseData); } } catch (NetworkException $e) { echo "网络错误: {$e->getMessage()}\n"; } catch (\Exception $e) { echo "未知错误: {$e->getMessage()}\n"; }
API文档
TokenService
generate(string $appKey, string $appSecret, int $expiresIn = 3600): array
生成访问Token。
参数:
$appKey: 应用密钥$appSecret: 应用机密$expiresIn: Token过期时间(秒),默认3600
返回:
[
'token' => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
'expires_at' => 'Sun, 01 Jan 2023 01:00:00 GMT'
]
TaskService
create(array $taskData): array
创建外呼任务。
参数:
$taskData: 任务数据数组(详见快速开始部分)
返回:
[
'task_id' => 'd2c9c8f0-1234-5678-9abc-def012345678'
]
list(int $page = 1, int $pageSize = 20): array
获取任务列表。
返回:
[
'tasks' => [...],
'pagination' => [
'page' => 1,
'page_size' => 20,
'pages' => 1,
'total' => 1
]
]
getStatus(string $taskId): array
查询任务状态。
返回:
[
'task_id' => 'task1234567890',
'status' => 'pending',
'success' => true
]
cancel(string $taskId): array
取消任务。
getRecords(string $taskId, int $page = 1, int $pageSize = 20): array
获取通话记录。
返回:
[
'records' => [...],
'pagination' => [...]
]
异常处理
SDK提供了两种异常类型:
CallCenter\SDK\Exception\ApiException: API业务异常CallCenter\SDK\Exception\NetworkException: 网络异常
try { $result = $sdk->task()->create($taskData); } catch (\CallCenter\SDK\Exception\ApiException $e) { // API业务错误 echo "错误代码: {$e->getCode()}\n"; echo "错误消息: {$e->getMessage()}\n"; $responseData = $e->getResponseData(); // 获取原始响应数据 } catch (\CallCenter\SDK\Exception\NetworkException $e) { // 网络错误 echo "网络错误: {$e->getMessage()}\n"; }
高级用法
自定义HTTP选项
$sdk->getClient()->setHttpOptions([ CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ]);
设置请求超时
$sdk->getClient()->setTimeout(60); // 60秒超时
直接使用HTTP客户端
$client = $sdk->getClient(); $response = $client->get('/api/custom/endpoint', ['param' => 'value']);
系统要求
- PHP >= 7.2
- ext-json
- ext-curl
许可证
MIT License
支持
如有问题或建议,请联系:support@example.com