![[Zendesk+Node.js] Zendesk API を利用したチケットの作成](https://images.ctfassets.net/ct0aopd36mqt/wp-thumbnail-c444611c90aef03276972b698f84737c/24881799d11f6beffbffc099e02b892d/zendesk-logo-core-kale-2019.png)
[Zendesk+Node.js] Zendesk API を利用したチケットの作成
- 想定読者
- Zendesk を使っていて、 Node.js で API を操作したい人
- Zendesk API の基本を学びたい開発者
- 前提知識
- JavaScript (Node.js) の基本的な文法がわかる
- REST API の基本 (GET, POST など) がなんとなくわかる
参考ページ: https://developer.zendesk.com/documentation/ticketing/getting-started/zendesk-api-quick-start/
作業環境
Node.js: 22.13.1
npm: 10.9.2
axios: 1.7.9
dotenv: 16.4.7
Zendesk アカウントの準備
本記事では、Zendesk アカウントが作成済みであり、API トークンが準備できていることを前提とします。
API トークンの取得方法
認証には API トークンを使用します。 API トークンを取得するには、以下の手順を実行してください。
- Zendesk に管理者アカウントでログイン
- 管理センター → アプリとインテグレーション → Zendesk API に移動
- APIトークン を有効化し、「新しいトークンを作成」
- 生成されたトークンをコピーして保存(後でスクリプトで使用)
詳しくは 公式ドキュメント をご覧ください。
Node.js 開発環境の準備
Node.js をインストールし、必要なライブラリをインストールします。今回は、 API リクエストの送信に axios を使用します。
$ npm install axios dotenv
環境変数の定義
環境変数を定義する .env
ファイルを作成します。
ZENDESK_SUBDOMAIN=your_subdomain # 例: "mycompany" (https://mycompany.zendesk.com/)
API_TOKEN=your_api_token # 先ほど取得した API トークン
EMAIL=your_email@example.com # Email アドレス
チケットの作成
チケット作成のためのスクリプト createTicket.js
を作成します。
createTicket.js
require('dotenv').config();
const axios = require('axios');
// Zendeskの情報
const ZENDESK_SUBDOMAIN = process.env.ZENDESK_SUBDOMAIN;
const API_TOKEN = process.env.API_TOKEN;
const EMAIL = process.env.EMAIL;
// APIエンドポイント
const url = `https://${ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets.json`;
// ヘッダー情報
const headers = {
'Content-Type': 'application/json',
};
// 認証情報
const auth = {
username: `${EMAIL}/token`,
password: API_TOKEN,
};
// チケットデータ
const ticketData = {
ticket: {
subject: 'APIから作成したチケット',
description: 'このチケットはNode.jsスクリプトから作成されました。',
priority: 'normal',
},
};
// APIリクエストの送信
axios
.post(url, ticketData, { auth, headers })
.then((response) => {
console.log('チケットが作成されました! チケットID:', response.data.ticket.id);
})
.catch((error) => {
console.error('チケット作成に失敗しました:', error.response.status, error.response.data);
});
チケットの取得
チケット取得のためのスクリプト getTicket.js
を作成します。
getTicket.js
require('dotenv').config();
const axios = require('axios');
// Zendeskの情報
const ZENDESK_SUBDOMAIN = process.env.ZENDESK_SUBDOMAIN;
const API_TOKEN = process.env.API_TOKEN;
const EMAIL = process.env.EMAIL;
// 取得するチケットのID(手動で指定 or `createTicket.js` の出力を使用)
const ticketId = 12345; // 実際のIDに置き換える
// APIエンドポイント
const url = `https://${ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets/${ticketId}.json`;
// ヘッダー情報
const headers = {
'Content-Type': 'application/json',
};
// 認証情報
const auth = {
username: `${EMAIL}/token`,
password: API_TOKEN,
};
// APIリクエストの送信
axios
.get(url, { auth, headers })
.then((response) => {
console.log('チケット情報:', JSON.stringify(response.data, null, 2));
})
.catch((error) => {
console.error('チケット取得に失敗しました:', error.response.status, error.response.data);
});
動作確認
作成したスクリプトを実行し、想定した結果が得られることを確認します。
$ node createTicket.js
チケットが作成されました! チケットID: 549
$ node getTicket.js
チケット情報: {
"ticket": {
"url": "https://****.zendesk.com/api/v2/tickets/549.json",
"id": 549,
"external_id": null,
"via": {
"channel": "api",
"source": {
"from": {},
"to": {},
"rel": null
}
},
"created_at": "2025-02-26T00:01:32Z",
"updated_at": "2025-02-26T00:01:34Z",
"generated_timestamp": 1740528094,
"type": null,
"subject": "APIから作成したチケット",
"raw_subject": "APIから作成したチケット",
"description": "このチケットはNode.jsスクリプトから作成されました。",
"priority": "normal",
"status": "new",
(略)
}
}
Zendesk のビューで、作成したチケットが正しく登録されていることを確認します。
おわりに
Zendesk API を使用すれば、Node.js スクリプトから簡単にチケットを作成/取得できることが分かりました。
他にも、Zendesk API では以下のような操作が可能です。
- チケットのステータスを更新する (
PUT /api/v2/tickets/{ticket_id}.json
) - 特定の条件でチケットを検索する (
GET /api/v2/search.json?query=...
) - 作成したチケットを自動でSlackに通知する
詳しくは 公式ドキュメント を参考に、ぜひ他のAPIも試してみてください!