codebar-ag / laravel-zendesk
Laravel 与 Zendesk 的集成
v2.0
2024-02-07 13:10 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8
- illuminate/contracts: ^10.0
- laravel/framework: ^10.28
- orchestra/testbench: ^8.13
- saloonphp/cache-plugin: ^3.0
- saloonphp/laravel-plugin: ^3.0
- saloonphp/saloon: ^3.0
- spatie/laravel-data: ^3.9
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.13
- nunomaduro/collision: ^7.10
- nunomaduro/larastan: ^2.6
- orchestra/testbench: ^8.13
- pestphp/pest: ^2.23
- pestphp/pest-plugin-laravel: ^2.2
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.33
README
此包旨在通过 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)。请参阅 许可证文件 了解更多信息。