coliving/zendesk-laravel

Laravel 对 zendesk/zendesk_api_client_php 包的封装

v1.0.0 2023-03-30 04:09 UTC

This package is not auto-updated.

Last update: 2024-09-27 10:02:07 UTC


README

这是一个来自 Nahid/Talk 的分支,用于与新 Laravel 10 兼容。此包提供了与 Zendesk API 的集成。它支持创建工单、检索和更新工单、删除工单等。

此包仅提供了一个 Zendesk 门面,作为 zendesk/zendesk_api_client_php 包的包装器。

注意:目前仅支持基于令牌的认证。

安装

您可以通过 Composer 使用以下命令安装此包:

composer require coliving/zendesk-laravel

您还必须安装服务提供者。

Laravel 5.5+ 用户:此步骤可能可以跳过,因为该包支持自动发现。

// config/app.php
'providers' => [
    ...
    Huddle\Zendesk\Providers\ZendeskServiceProvider::class,
    ...
];

如果您想使用门面,也必须安装它。

// config/app.php
'aliases' => [
    ..
    'Zendesk' => Huddle\Zendesk\Facades\Zendesk::class,
];

配置

要发布配置文件到 app/config/zendesk-laravel.php,请运行以下命令:

php artisan vendor:publish --provider="Huddle\Zendesk\Providers\ZendeskServiceProvider"

使用 环境变量 设置您的配置,无论是在您的 .env 文件中还是在您的服务器控制面板上

  • ZENDESK_SUBDOMAIN

您的 Zendesk 组织 URL 的子域名部分。

例如,http://huddledigital.zendesk.com 使用 huddledigital

  • ZENDESK_USERNAME

用于认证的账户的用户名。

  • ZENDESK_TOKEN

API 访问令牌。您可以在 https://SUBDOMAIN.zendesk.com/agent/admin/api/settings 创建一个。

  • ZENDESK_DRIVER (可选)

将其设置为 nulllog 以防止直接从您的环境中调用 Zendesk API。

用法

门面

Zendesk 门面作为 Zendesk\API\Client 类实例的包装器。此类上可用的任何方法(在此处有文档)都可通过门面访问。例如

// Get all tickets
Zendesk::tickets()->findAll();

// Create a new ticket
Zendesk::tickets()->create([
  'subject' => 'Subject',
  'comment' => [
      'body' => 'Ticket content.'
  ],
  'priority' => 'normal'
]);

// Update multiple tickets
Zendesk::ticket([123, 456])->update([
  'status' => 'urgent'
]);

// Delete a ticket
Zendesk::ticket(123)->delete();

依赖注入

如果您不想使用门面,您可以直接在 config/app.php 中添加别名,而不是注入 Huddle\Zendesk\Services\ZendeskService 到您的类中。然后,您可以像在门面中使用相同的方法一样使用此对象。

<?php

use Huddle\Zendesk\Services\ZendeskService;

class MyClass {

    public function __construct(ZendeskService $zendesk_service) {
        $this->zendesk_service = $zendesk_service;
    }

    public function addTicket() {
        $this->zendesk_service->tickets()->create([
              'subject' => 'Subject',
              'comment' => [
                    'body' => 'Ticket content.'
              ],
              'priority' => 'normal'
        ]);
    }

}

此包在 MIT 许可证 下可用。