codebar-ag/laravel-zendesk

Laravel 与 Zendesk 的集成

v2.0 2024-02-07 13:10 UTC

This package is auto-updated.

Last update: 2024-09-15 16:28:41 UTC


README

Latest Version on Packagist Total Downloads run-tests PHPStan

此包旨在通过 Zendesk API 快速创建工单。

💡 什么是 Zendesk?

Zendesk 是一款基于云的客户服务台管理解决方案,提供可定制的工具来构建客户服务门户、知识库和在线社区。

🛠 要求

身份验证

目前支持的认证方法有

⚙️ 安装

您可以通过 composer 安装此包

composer require codebar-ag/laravel-zendesk

可选,您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="CodebarAg\Zendesk\ZendeskServiceProvider" --tag="config"

您可以将以下环境变量添加到您的 .env 文件中

ZENDESK_SUBDOMAIN=your-subdomain #required
ZENDESK_AUTHENTICATION_METHOD=token #default ['basic', 'token']
ZENDESK_EMAIL_ADDRESS=test@example.com #required
ZENDESK_API_TOKEN=your-api-token #required only for token authentication
ZENDESK_API_PASSWORD=your-password #required only for basic authentication

注意:我们为您处理 base64 编码,因此您无需对凭据进行编码。

您可以从您的 Zendesk 控制台 获取 API 令牌

用法

要使用此包,您需要创建一个 ZendeskConnector 实例。

use CodebarAg\Zendesk\ZendeskConnector;
...

$connector = new ZendeskConnector();

请求

目前支持以下请求

响应

目前支持以下响应用于检索响应体

有关更多信息,请参阅 https://docs.saloon.dev/the-basics/responses

枚举

我们为以下值提供枚举

注意:当在响应上使用 dto 方法时,枚举值将转换为相应的枚举类。

DTO

我们为以下内容提供 DTO

注意:这是与请求和响应交互的首选方法,但您仍然可以使用 json、object 和 collect 方法,并将数组传递给请求。

示例

创建工单

use CodebarAg\Zendesk\Requests\CreateSingleTicketRequest;
use CodebarAg\Zendesk\DTOs\SingleTicketDTO;
use CodebarAg\Zendesk\DTOs\CommentDTO;
use CodebarAg\Zendesk\Enums\TicketPriority;
...

$ticketResponse = $connector->send(
    new CreateSingleTicketRequest(
        SingleTicketDTO::fromArray([
            'comment' => CommentDTO::fromArray([
                'body' => 'The smoke is very colorful.',
            ]),
            'priority' => TicketPriority::URGENT,
            "subject" => "My printer is on fire!",
            "custom_fields" => [
                [
                    "id" => 12345678910111,
                    "value" => "Your custom field value"
                ],
                [
                    "id" => 12345678910112,
                    "value" => "Your custom field value 2"
                ],
            ],
        ])
    )
);

$ticket = $ticketResponse->dto();

列出所有工单

use CodebarAg\Zendesk\Requests\AllTicketsRequest;
...

$listTicketResponse = $connector->send(new AllTicketsRequest());
$listTicketResponse->dto();

计算所有工单数量

use CodebarAg\Zendesk\Requests\CountTicketsRequest;
...

$countTicketResponse = $connector->send(new CountTicketsRequest());
$countTicketResponse->dto();

显示工单

use CodebarAg\Zendesk\Requests\ShowTicketRequest;
...

$ticketID = 1;

$showTicketResponse = $connector->send(new ShowTicketRequest($ticketID));
$showTicketResponse->dto();

上传附件

use CodebarAg\Zendesk\Requests\CreateAttachmentRequest;
use CodebarAg\Zendesk\Requests\CreateSingleTicketRequest;
use Illuminate\Support\Facades\Storage;

$uploadResponse = $connector->send(
    new CreateAttachmentRequest(
        fileName: 'someimage.png',
        mimeType: Storage::disk('local')->mimeType('public/someimage.png'),
        stream: Storage::disk('local')->readStream('public/someimage.png')
    )
);

$token = $uploadResponse->dto()->token;

$ticketResponse = $connector->send(
    new CreateSingleTicketRequest(
        SingleTicketDTO::fromArray([
            'comment' => CommentDTO::fromArray([
                ...
                'uploads' => [
                    $token,
                ],
            ]),
        ])
    )
);

$ticket = $ticketResponse->dto();

🚧 测试

复制您的 own phpunit.xml-file。

cp phpunit.xml.dist phpunit.xml

运行测试

./vendor/bin/pest

📝 更新日志

请参阅 CHANGELOG 了解最新更改。

✏️ 贡献

请参阅 CONTRIBUTING 了解详情。

composer test

代码风格

./vendor/bin/pint

🧑‍💻 安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

🙏 致谢

🎭 许可证

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。