webnuvola/zendesk_api_client_php

此软件包已被放弃,不再维护。作者建议使用 zendesk/zendesk_api_client_php 软件包。

Zendesk REST API 的 PHP 客户端。请参阅 https://developer.zendesk.com/rest_api/docs/core/introduction 。

v2.2.9 2020-09-24 15:24 UTC

README

Build Status Latest Stable Version Total Downloads Code Climate License

API 客户端版本

这是我们的 PHP API 客户端第二个版本。上一个版本的 API 客户端可以在 v1 分支 上找到。

API 版本支持

此客户端仅支持 Zendesk 的 API v2。有关更多信息,请参阅我们的 API 文档

要求

  • PHP 5.5+

安装

可以使用 Composer 安装 Zendesk PHP API 客户端。

Composer

要安装,请运行 composer require zendesk/zendesk_api_client_php

从 V1 升级到 V2

如果您正在从客户端的 v1 升级,我们编写了 升级指南,以突出一些主要差异。

配置

配置通过 Zendesk\API\HttpClient 的实例来完成。该块是强制性的,如果未传递,则将抛出错误。

// load Composer
require 'vendor/autoload.php';

use Zendesk\API\HttpClient as ZendeskAPI;

$subdomain = "subdomain";
$username  = "email@example.com"; // replace this with your registered email
$token     = "6wiIBWbGkBMo1mRDMuVwkw1EPsNkeUj95PIz2akv"; // replace this with your token

$client = new ZendeskAPI($subdomain);
$client->setAuth('basic', ['username' => $username, 'token' => $token]);

用法

基本操作

// Get all tickets
$tickets = $client->tickets()->findAll();
print_r($tickets);

// Get all tickets regarding a specific user.
$tickets = $client->users($requesterId)->tickets()->requested();
print_r($tickets);

// Create a new ticket
$newTicket = $client->tickets()->create([
    'subject'  => 'The quick brown fox jumps over the lazy dog',
    'comment'  => [
        'body' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' .
                  'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
    ],
    'priority' => 'normal'
]);
print_r($newTicket);

// Update a ticket
$client->tickets()->update(123,[
    'priority' => 'high'
]);

// Delete a ticket
$client->tickets()->delete(123);

// Get all users
$users = $client->users()->findAll();
print_r($users);

附件

$attachment = $client->attachments()->upload([
    'file' => getcwd().'/tests/assets/UK.png',
    'type' => 'image/png',
    'name' => 'UK.png' // Optional parameter, will default to filename.ext
]);

将文件附加到评论

$ticket = $client->tickets()->create([          
    'subject' => 'The quick brown fox jumps over the lazy dog',      
    'comment' => [                              
        'body' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' .
                  'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', 
        'uploads'   => [$attachment->upload->token]                 
    ]                                           
]);

侧加载

侧加载允许您在单个请求中检索相关记录。请参阅 [文档] 以获取更多信息。 (https://developer.zendesk.com/rest_api/docs/core/side_loading)。

以下是一个使用客户端进行侧加载的示例。

$tickets = $client->tickets()->sideload(['users', 'groups'])->findAll();

分页

Zendesk API 提供了一种获取请求的下一页的方法,并在 Zendesk 开发者文档 中进行了说明。

要这样做,请将其作为选项传递给您的请求。

$tickets = $this->client->tickets()->findAll(['per_page' => 10, 'page' => 2]);

允许的选项有

  • per_page
  • page
  • sort_order

重试请求

在您的 GuzzleHttp\Client 实例的 HandlerStack 上添加 RetryHandler 中间件。默认情况下,Zendesk\Api\HttpClient 会重试

  • 超时请求
  • 那些抛出 Psr\Http\Message\RequestInterface\ConnectException:class
  • 以及那些抛出 Psr\Http\Message\RequestInterface\RequestException:class 且被识别为ssl问题的。

可用的选项

选项以值数组的形式传递给 RetryHandler

  • max = 2 重试次数限制
  • interval = 300 重试间的基本延迟(毫秒)
  • max_interval = 20000 最大延迟值
  • backoff_factor = 1 退避因子
  • exceptions = [ConnectException::class] 无需检查retry_if的重试异常
  • retry_if = null 可调用的函数,可以决定是否重试请求

贡献

欢迎提交拉取请求,但在发送之前,请阅读我们的贡献指南。这将加快处理速度并确保每个人都遵循社区标准。

调试

为了帮助贡献者,我们添加了一个REPL工具。这是一个用于psysh和symfony控制台的一个简单包装器。在您的终端中运行bin/console <子域名> <电子邮件> <API令牌>。这将自动在 $client 变量中创建一个 Zendesk\API\HttpClient 实例。之后,您就可以输入任何有效的PHP语句。这个工具的目的是加快开发者在代码库上进行实验的过程。

版权和许可

版权所有 2013-至今 Zendesk

根据Apache License,版本2.0(“许可”)许可;除非遵守许可,否则不得使用此文件。您可以在以下位置获得许可副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可的具体语言,请参阅许可。