Library Installation
- Use Composer to install the Zendesk API client for PHP. This library simplifies the process of making API calls and handling responses.
composer require zendesk/zendesk_api_client_php
Authentication
- Prepare the PHP script to authenticate requests. Zendesk API supports using an API token or OAuth. For simplicity, using an API token is recommended.
<?php
require 'vendor/autoload.php';
use Zendesk\API\HttpClient as ZendeskAPI;
$subdomain = "yoursubdomain";
$username = "your-email@example.com";
$token = "yourAPItoken";
$client = new ZendeskAPI($subdomain);
$client->setAuth('basic', ['username' => $username, 'token' => $token]);
?>
Fetching Tickets
- Use the client instance to fetch tickets. Zendesk API allows filtering options such as ticket status or assignee.
<?php
try {
$tickets = $client->tickets()->findAll(['status' => 'open']);
foreach ($tickets as $ticket) {
echo "Ticket ID " . $ticket->id . ": " . $ticket->subject . "\n";
}
} catch (\Zendesk\API\Exceptions\ApiResponseException $e) {
echo "Error: " . $e->getMessage();
}
?>
Creating a New Ticket
- Construct a new ticket by defining its properties such as subject, description, requester email, etc.
<?php
$newTicket = [
'subject' => 'Support needed',
'comment' => [
'body' => 'Please assist with this issue.',
],
'priority' => 'normal',
'requester' => [
'name' => 'John Doe',
'email' => 'john.doe@example.com',
],
];
try {
$ticket = $client->tickets()->create($newTicket);
echo "New ticket created with ID: " . $ticket->ticket->id;
} catch (\Zendesk\API\Exceptions\ApiResponseException $e) {
echo "Error: " . $e->getMessage();
}
?>
Updating an Existing Ticket
- Modify ticket properties such as status or add comments by specifying the ticket ID and new properties.
<?php
$updateTicket = [
'status' => 'solved'
];
try {
$ticketId = 123456; // Example ticket ID
$ticket = $client->tickets()->update($ticketId, $updateTicket);
echo "Ticket " . $ticket->ticket->id . " has been updated.";
} catch (\Zendesk\API\Exceptions\ApiResponseException $e) {
echo "Error: " . $e->getMessage();
}
?>
Handling API Errors
- Be prepared to handle various API errors by using try and catch blocks to ensure robustness.
- Examine error codes and messages returned by the Zendesk client for troubleshooting.
<?php
try {
// Your API operations...
} catch (\Zendesk\API\Exceptions\ApiResponseException $e) {
echo "API Error occurred: " . $e->getMessage();
} catch (\Exception $e) {
echo "General Error occurred: " . $e->getMessage();
}
?>
Best Practices
- Ensure all API keys and sensitive data are secure and not hard-coded into source files.
- Utilize environment variables or secure vaults for storing credentials.
- Regularly update the Zendesk API library to the latest version for improved security and functionality.