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

v1.0.0 2025-12-03 09:45 UTC

This package is auto-updated.

Last update: 2026-01-03 10:18:22 UTC


README

用于对接呼叫中心系统的PHP开发包,支持Composer安装。

功能特性

  • ✅ Token生成和管理
  • ✅ 创建外呼任务
  • ✅ 获取任务列表
  • ✅ 取消任务
  • ✅ 查询任务状态
  • ✅ 获取通话记录
  • ✅ 完善的异常处理
  • ✅ 符合PSR-4自动加载规范

安装

通过Composer安装

composer require call-center/php-sdk

手动安装

  1. 下载SDK源码
  2. 在项目中使用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