当ハンズオンでは、Zendesk の API を "Postman" というツールを使って実際に呼び出します。どのように API を呼び出せるのか体験することで、今後、ご自身のプログラムやサービスからも API を呼び出すことが容易になります。
大きく以下のような流れになっています。
ハンズオンの参加にあたって、以下に注意してください。
Postmanは、主にウェブサービスを開発するときに役立つツールです。ウェブサービスが正しく動作しているかをテストするために、特定の API リクエストを送信し、その結果を見ることができます。今回は Zendesk の API を体験するために用いますが、ウェブサイトからデータを取得するリクエストを送信し、データが期待通りに返ってきているかを確認するような使い方もできます。
このハンズオンテキストでは、API についての説明は割愛します。Zendesk API Night のイベントでは、API 概要についての説明を別途した後にハンズオンをする予定です。
以下のページへアクセスして、Postman へサインアップしてください。メールアドレス・ユーザー名・パスワードでアカウントを作るか、Google アカウントでサインアップします。
サインアップが完了すると以下のような Welcome メッセージが表示されます。ポップアップは閉じて次のステップへ進みます。
API を呼び出すには URL のパスやメソッド、認証情報といった設定が必要です。Zendesk は、Zendesk の API を Postman で簡単に呼び出せるよう Zendesk の各種 API のリストを Postman の Collection として公開しています。
公開されている中の「Zendesk Support」の Collection を fork する (API のリストを自分の環境へコピーする) ことで、準備の大部分を省略します。なお、Collection は Postman の用語ですが、fork は GitHub などでも用いる用語です。
以下の URL へアクセスします。
Zendesk Public API の Support API のページを開いていることを確認します。
"Fork" をクリックします。
"Fork Collection" をクリックします。
My Workspace (自分の環境) に "Support API" が fork できたことを確認します。のマークがあれば OK です。
API を呼び出す URL を指定します。Zendesk の URL は xxxx.zendesk.com
(xxxx は会社毎に異なる) という形式です。この xxxx をサブドメインとも呼びます。
Variables (変数) タブを開きます。
subdomain
の Current value
を書き換えます。ハンズオン用のアカウントを使う人は、運営から連携されたスプレッドシートに書いてある内容を入れてください。
Save をクリックして保存します。
API を呼び出すときの認証情報を設定します。Zendesk API の認証方法はいろいろあるのですが、今回のハンズオンでは「E メールアドレス」と「API トークン」を利用した Basic 認証を利用します。今回は解説しませんが、他の認証方式も合わせて学びたい場合は、以下のドキュメントを参照してください。
Variables (変数) タブの Add new variable
のテキストボックスに apiToken
と入力します。
Initial value に example
、Current Value に API トークンを入力します。ハンズオン用のアカウントを使う人は、運営から連携されたスプレッドシートに書いてある内容を入れてください。
Save をクリックして保存します。
次に、Authorization (認証) タブを開きます。
Type
を Basic Auth
に設定します。
Username を設定します。ハンズオン用のアカウントを使う人は、運営から連携されたスプレッドシートに書いてある内容を入れてください。
Password には {{apiToken}}
と入力します。
Save をクリックして保存します。
example@example.com/token
と、後ろに /token
が付いています。これは Zendesk の API 認証でトークンを用いたい場合のお作法です。今回はハンズオン用に E メールアドレスと API トークンを払い出しますが、今後自社で API トークンを用いた認証をしたい場合は、以下のドキュメントを参照してください。
エンドポイントと認証情報を設定したので、Zendesk Support の API を実行できます。ハンズオン用のアカウントを使う人へは、今回はライトエージェント権限を持った認証情報をいますので以下のドキュメントに書かれた操作ができます。
まずはチケットの一覧を取得してみましょう。
左側のフォルダ階層から、Support API > api > v2 > tickets > GET List Tickets を探してクリックします。
external_id
のチェックボックスを外して Send
をクリックします。
画面の下側に結果が返ってくるのが分かります。
API の実行結果は JSON という形式で返却されます。
JSON はアプリケーションにとっては読みやすい形式ですが、人間にとっては読みにくい場合もあります。実際の運用にあたってはアプリケーションから API を呼び出し、アプリケーションのなかで JSON から必要な情報を読み取ればと思いますが、ここではオンラインのツールの「JSON Editor Online」を使って JSON を読んでみます。なお、オンラインの JSON 読み込みツールを使うときは、セキュリティポリシーを十分に確認してください。今回は、入力したデータが運営元や第三者が見られないツールを選定しました。
以下の URL を開きます。
全画面モードにしておくと見やすいです。
先ほどの API 呼び出しで返却された Body のコピーボタンを押してください。
JSON Editor Online へ貼り付けます。
tree
を選択することで見やすくなります。
たとえば上の例では tickets : [ 2 items
という表示から、2件のチケットがあることが分かります。その下の 0
や 1
はリストの要素の番号です (プログラミングの世界では 0 から数え始めることが多いです)。
1
の要素の中を見ていきます。よく使う項目としては、以下のようなものがあります。
項目 | 説明 |
id | チケットの ID |
created_at | チケットの作成日時 |
subject | 件名 |
description | チケット中の最初のコメント |
status | チケットの状態 |
requester_id | チケットを作成したユーザーの ID |
assignee_id | チケットを割り当てられたエージェントの ID |
実際の運用では、API 呼び出しで返却された JSON から必要な情報をアプリケーションで取り出して活用します。
前回はチケットの一覧を表示しましたが、次はチケットを検索してみます。たとえば現在「オープン」状態のチケット一覧を取得して、必要な情報を整形して Slack 等へ通知する、などは良く作成するアプリケーションの例です。
Zendesk Support のコンソール画面で言うと、赤枠で囲った検索窓を使っているようなイメージです。
左側のフォルダ階層から、Support API > api > v2 > search > GET List Search Results を探してクリックします。
sort_by
と sort_order
のチェックボックスを外します。
query
の Value
を以下のように入力し、Send
をクリックします。これは、「解決済み」チケットを検索しています。
なお、Zendesk の query の記法はやや複雑ですが、以下のドキュメントに解説があります。
画面の下側に結果が返ってくるのが分かります。
API ではこのように、エンドポイントの末尾に ?xxx=yyy
のような文字列が付くことがよくあります。これをクエリストリング (query string) と呼びます。REST API の
GET メソッドではクエリストリングで GET するときの条件を設定します。複数のクエリストリングもつけられます。たとえば今回はチェックボックスを外しましたが sort_by
ではソート条件を設定できます。
Zendesk Support のコンソール画面で言うと、赤枠で囲ったように社内メモを保存しているようなイメージです。
左側のフォルダ階層から、Support API > api > v2 > tickets > {ticket_id} > PUT Update Ticket を探してクリックします。
ticket_id
を設定します。ハンズオン用のアカウントを使う人は、運営から連携されたスプレッドシートに書いてある内容を入れてください。
Body
タブへ移動します。Response エリアを最小化しておくと見やすいです。
先ほどの検索は GET メソッドだったので query タブにてクエリストリングを用いてリクエストを表現しましたが、今回は PUT メソッドなので Body タブでリクエストを表現します。様々な入力項目がありますが、ここでは以下のように書き換えます。 "(あなたの名前)" の部分は書き換えてください。他に好きな Body にしてもかまいません。
{
"ticket": {
"comment": {
"body": "(あなたの名前) の社内メモです",
"public": false
}
}
}
Send
をクリックして社内メモを記録します。画面の下側に結果が返ってくるのが分かります。先ほど Response エリアを最小化した人は広げてください。
plain_body
に送信した内容が記録されているのが分かります。
なお、チケットのコメント一覧を参照したい場合は Support API > api > v2 > tickets > {ticket_id} > comments > List Comments API を使います。使い方を考えるところから、ぜひチャレンジしてみてください。
当ハンズオンでは、Zendesk の API を "Postman" というツールを使って実際に呼び出しました。どのように API を呼び出せるのか体験することで、今後、ご自身のプログラムやサービスからも API を呼び出すことが容易になるかと思います。
当ハンズオンでは、API の認証情報を運営から発行しているので、参加者のあとかたづけは不要です。Postman も無料プランであれば、料金はかかりません。
運営から発行している API の認証情報は一定期間が経過した後に使えなくなる可能性があるのでご了承ください。
また、API の認証情報を自身で発行した場合は、自社のセキュリティポリシーに従って削除などを検討してください。以下のドキュメントの、API トークンを作成した画面から削除できます。
次のステップとしては、引き続き他の API を試したり、自社のプログラムから呼び出したりすることが考えられます。お使いのプログラミング言語や、使いたい API は様々だと思いますので、次ページ以降のセクションに Tips を載せておきました。
これらを参考に、Zendesk をさらに活用していきましょう。
今回は Postman を使って API の呼び出しを体験しましたが、実際の現場では Node.JS や Python などのアプリケーションから呼び出すことが多いと思います。アプリケーションの実行環境としてよく使うのは、ローカル PC や Google Apps Script (GAS)、AWS Lambda などです。
>
(Code) をクリックします。以下のように、サンプルコードが表示されます。
もし Cookie
といった文字列がある場合、Zendesk API では Cookie は不要なので削除します。Cookies
をクリックして、Clear All Cookies
をクリックします。
このセクションは、お使いの環境によってはできない可能性があります
サンプルコードには、Zendesk の認証情報が含まれます。特に GAS や AWS など外部の環境でプログラムを実行したり、コードを GitHub へ保存するような際は、認証情報の漏洩リスクに十分注意してください。安全な保管方法は、周りのエンジニアなどへ相談することをお勧めします。
画像の cURL
の部分を選択すると、プログラミング言語を選択できます。cURL
を選択して、コピーします。
Mac の人、および Windows Subsystem for Linux (WSL) の人はターミナルへ貼り付けて実行します。
Windows (10 以降) でコマンドプロンプトを使っている人は、大変ですが、以下のように書き換えます。なお、Windows 10 の特定バージョンより古く、コマンドプロンプトで cURL を実行できない場合、このセクションは実施できないのでご了承下さい。
curl "https://example.zendesk.com/api/v2/tickets" --header "Accept: application/json" --header "Authorization: Basic xxxxxxxx
)同様に、他の言語でも利用できます。冒頭の「注意」にも書いた通り、認証情報の取り扱いには十分注意してください。
GAS で Zendesk API を呼び出したい場合、GAS の UrlFetchApp.fetch
メソッドを使うことになります (詳細の説明は割愛します)。ハンズオン開催日時点では、Postman から UrlFetchApp.fetch
メソッド形式のサンプルコードは作成できません。最近では Chat GPT が非常に優れているので、cURL のサンプルコードをコピーし、認証情報をマスクしたうえで変換してもらうことが考えられます。
API をプログラムからきちんと使おうとすると、今回触れなかったページネーションだったり、認証情報の使いまわしだったり、リクエスト数のリミットへの対応だったり、エラーハンドリングだったりと、考えることがたくさんあります。これらについて考慮されたサンプル実装が公開されていると、ユーザーとしてとても便利です。Zendesk ではいくつかのプログラミング言語で、API クライアントが公開されています。これらは主にコミュニティによってメンテナンスされています。詳細は以下のページを参照してください。
API をそのまま使うにしても、公開された API クライアントを使うにしても、使いたい API をスムーズに探せるようになると、その後の実装も簡単です。
こちらはやや邪道な方法ですが、個人的に探しやすいと思っているので紹介します。
Zendesk の管理画面からも、Zendesk の API を呼んでいます。API の利用が必要となる理由の一つに、管理画面の操作を自動化したいことが挙げられます。
api/v2
などでフィルタすると探しやすいですこちらが正統な方法です。以下に Zendesk が API 一覧を公開していますのでこちらから目的の API を探します。
たとえばチケットに関する API は以下のページにまとまっています。
すべて英語ですが、使い方や注意点もまとまっているので、特にプログラムから呼び出す前には一度目を通しておくことをお勧めします。
API リファレンスでは API の実行例・結果例の表示はありますが、実環境への実行はできません。また API の検索はしづらいかもしれません。Postman にはフィルタ機能がありますので、検索・実行が一度にできて便利です。↓の画像では comments
に関係している API をフィルタしています。慣れると、API 名を類推してフィルタできるようになります。