[Zendesk+Node.js] Zendesk API を利用したチケットの作成

[Zendesk+Node.js] Zendesk API を利用したチケットの作成

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 トークンを取得するには、以下の手順を実行してください。

  1. Zendesk に管理者アカウントでログイン
  2. 管理センター → アプリとインテグレーション → Zendesk API に移動
  3. APIトークン を有効化し、「新しいトークンを作成」
  4. 生成されたトークンをコピーして保存(後でスクリプトで使用)

zendesk-get-token

詳しくは 公式ドキュメント をご覧ください。

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-ticket-view

おわりに

Zendesk API を使用すれば、Node.js スクリプトから簡単にチケットを作成/取得できることが分かりました。
他にも、Zendesk API では以下のような操作が可能です。

  • チケットのステータスを更新する (PUT /api/v2/tickets/{ticket_id}.json)
  • 特定の条件でチケットを検索する (GET /api/v2/search.json?query=...)
  • 作成したチケットを自動でSlackに通知する

詳しくは 公式ドキュメント を参考に、ぜひ他のAPIも試してみてください!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.