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

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

Python を使って Zendesk API でチケットを作成し、作成したチケットを取得する方法について紹介します。
  • 想定読者
    • Zendesk を使っていて、 Python で API を操作したい人
    • Zendesk API の基本を学びたい開発者
  • 前提知識
    • Python の基本的な文法がわかる
    • REST API の基本 (GET, POST など) がなんとなくわかる

参考ページ: https://developer.zendesk.com/documentation/ticketing/getting-started/zendesk-api-quick-start/

作業環境

バージョン

Python: 3.11.9
Requests: 2.32.3

Zendesk アカウントの準備

本記事では、Zendesk アカウントが作成済みであり、API トークンが準備できていることを前提とします。

API トークンの取得方法

認証には API トークンを使用します。 API トークンを取得するには、以下の手順を実行してください。

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

zendesk-get-token

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

Python 開発環境の準備

Python をインストールし、今回使用するライブラリである Requests をインストールします。 Requests は Web サイトに対しリクエストを送信したりレスポンスを受け取ったりすることができるものです。

$ pip install requests

チケットの作成

Zendesk API では、チケットの作成・取得・更新・削除などの操作が可能です。 POST /api/v2/tickets.json API でチケットを作成します。

import requests
import json

# Zendeskの情報
ZENDESK_SUBDOMAIN = "your_subdomain"  # 例: "mycompany" (https://mycompany.zendesk.com/)
API_TOKEN = "your_api_token"  # 先ほど取得した API トークン
EMAIL = "your_email@example.com"  # Email アドレス

# APIエンドポイント
url = f"https://{ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets.json"

# ヘッダー情報
headers = {
    "Content-Type": "application/json"
}

# 認証情報
auth = (f"{EMAIL}/token", API_TOKEN)

# チケットデータ
ticket_data = {
    "ticket": {
        "subject": "APIから作成したチケット",
        "description": "このチケットはPythonスクリプトから作成されました。",
        "priority": "normal"
    }
}

# APIリクエストの送信
response = requests.post(url, headers=headers, auth=auth, data=json.dumps(ticket_data))

# レスポンスの確認
if response.status_code == 201:
    ticket_id = response.json()["ticket"]["id"]  # チケットIDを取得
    print(f"チケットが作成されました! チケットID: {ticket_id}")
else:
    raise Exception(f"チケット作成に失敗しました: {response.status_code}\n{response.text}")

チケットの取得

次に、登録したチケットを GET リクエストで取得する方法を紹介します。 GET /api/v2/tickets/{ticket_id}.json API でチケットを取得します。

# 取得するチケットのID(作成時のレスポンスから取得 or 手動で指定)
# ticket_id = 12345  # 手動でIDを指定する場合はこちらを使用

# APIエンドポイント
url = f"https://{ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets/{ticket_id}.json"

# APIリクエストの送信
response = requests.get(url, headers=headers, auth=auth)

# レスポンスの確認
if response.status_code == 200:
    ticket_info = response.json()
    print("チケット情報:", json.dumps(ticket_info, indent=2, ensure_ascii=False))
else:
    raise Exception(f"チケット取得に失敗しました: {response.status_code}\n{response.text}")

動作確認

Python ファイルを実行し、チケットの作成と取得が行われることを確認します。

実行結果

チケットが作成されました! チケットID: 548
チケット情報: {
  "ticket": {
    "url": "https://****.zendesk.com/api/v2/tickets/548.json",
    "id": 548,
    "external_id": null,
    "via": {
      "channel": "api",
      "source": {
        "from": {},
        "to": {},
        "rel": null
      }
    },
    "created_at": "2025-02-25T23:19:34Z",
    "updated_at": "2025-02-25T23:19:34Z",
    "generated_timestamp": 1740525574,
    "type": null,
    "subject": "APIから作成したチケット",
    "raw_subject": "APIから作成したチケット",
    "description": "このチケットはPythonスクリプトから作成されました",
    "priority": "normal",
    "status": "new",
    (略)
  }
}

Process finished with exit code 0

Zendesk のビューで、作成したチケットが正しく登録されていることを確認します。

zendesk-ticket-view

おわりに

Zendesk API を使用すれば、スクリプトから簡単にチケットを作成/取得できることが分かりました。他にも、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.