Zendeskのインテグレーション
カスタマー・サポート・データの最上位にアプリを作成します。
注意: Retoolは現在、REST APIのインテグレーションを介したZendeskのAPIへの接続のみに対応しています。
認証
ZendeskはサポートAPIを使用した3種類の認証方式(基本認証、APIトークン、OAuth)に対応しています。ここでは、これらすべてについて概説します。
Zendesk APIを使用した基本認証
基本認証を使用するのは簡単ですが、まずZendesk APIの設定で基本認証を有効にする必要があります。

Zendeskで基本認証を有効にしたら、Retoolに移動します(アカウントを持っていない場合はアカウントを作成してください)。上部の「Resources」タブをクリックして、右上の「Create new」ボタンをタップし、リソースのタイプに「REST API」を選択します。
まず、Zendeskのサブドメイン(今回はretooldocs.zendesk.com
) + /api/v2
を「Base URL」フィールドにペーストします。次に、下の方の「Authentication」ドロップダウンから「Basic Auth」を選択します。ユーザー名(電子メール)とパスワードを入力して「Create resource」をクリックすると、準備完了です。

Zendesk APIを使用したAPIトークン
APIトークンを介してZendesk APIを使用した認証を行う場合は、APIの設定に移動します。Token Accessを有効にして、トークンを作成します。

トークンを作成するには、「Add API Token」をクリックして名前を付けます。これをクリップボードにコピーするかどこかに保存したら、Retoolのホームページに移動します(アカウントを持っていない場合はアカウントを作成してください)。上部の「Resources」タブをクリックして、右上の「Create new」ボタンをタップし、リソースのタイプに「REST API」を選択します。
まず、Zendeskのサブドメイン(今回はretooldocs.zendesk.com
) + /api/v2
を「Base URL」フィールドにペーストします。次に、下の方の「Authentication」ドロップダウンから「None」を選択します。これはリクエスト・ヘッダーで行います。「Headers」セクションまでスクロールして、Authorization
ヘッダーを追加します。タイプはBasic
とします。実際のトークンはユーザー名(電子メール)とAPIトークンを組み合わせてBase64でエンコードしたものになります。フォーマットは以下のようになります。
<username>/token:<token>
そのため、今回のケースでは[email protected]/token:6wiIBWbGkBMo1mRDMuVwkw1EPsNkeUj95PIz2akv
のようになります。最後に、これをBase64でエンコードします。Web上のこのようなフリー・ツールをご利用ください。最終的なヘッダー値はこのようになります。
Basic anzdGluJldG9vbC5jb20vdG9rZW46TnVMVDNScElxWEIzelU5SW1EcFhVVkF5N3QwZjZJOEZSQllOam9TVA==

「Create resource」をクリックすると、準備完了です。
Zendesk APIを使用したOAuth
OAuthを介して認証を行うには(Zendeskのドキュメントを参照)、Zendesk APIの設定の「OAuth clients」セクションに移動します。Retool用のクライアント・アプリケーションを新規作成し、得られたクライアント・シークレットとIDをコピーします。

「Redirect URLs」セクションにhttps://oauth.retool.com/oauth/user/oauthcallback
をペーストします。これが、RetoolがOAuthスキームを介した認証に使用するコールバックURLです。「Save」をクリックすると、クライアント・シークレットが表示されます。これは再表示されないので、安全な場所に保存してください。
Zendeskでクライアント・アプリケーションの作成が終わったら、Retoolに移動します(アカウントを持っていない場合はアカウントを作成してください)。上部の「Resources」タブをクリックして、右上の「Create new」ボタンをタップし、リソースのタイプに「REST API」を選択します。
まず、Zendeskのサブドメイン(今回はretooldocs.zendesk.com
) + /api/v2
を「Base URL」フィールドにペーストします。次に、下の方の「Authentication」ドロップダウンから「OAuth 2.0」を選択します。入力が必要なフィールドがいくつかあります。
- Authorization URL: Zendeskのサブドメイン+
/oauth/authorizations/new
です。今回はhttps://retooldocs.zendesk.com/oauth/authorizations/new
と入力します。 - Access Token URL: Zendeskのサブドメイン+
/oauth/tokens
です。今回はhttps://retooldocs.zendesk.com/oauth/tokens
と入力します。 - Client ID: Zendeskでクライアント・アプリケーションを作成したときに指定した一意の識別子です。今回は
retool
と入力します。 - Client Secret: クライアント・アプリケーションを作成したときにZendeskから提供されたシークレット・トークンです。
- Scopes: 認証のスコープをスペースで区切って列挙します。今回のアプリケーションでは
read write
を選択します。
最後に、ヘッダーをリクエストに追加します。このヘッダーが、リクエスト時に挿入されるRetoolのマジック変数OAUTH2_TOKEN
を参照します。ヘッダーは、Authorization: Bearer OAUTH2_TOKEN
のようになります。最終的な設定はこのようになります。

「Test OAuth integration with your own account」ボタンをクリックすると、OAuthのフローをテストすることができます。あるいは、ドロップダウンからこのリソースを選択すると、クエリー内でテストが行われます。
基本的なクエリー: チケットの取得
まず、クエリー・エディターで新規クエリーを作成し(「+ new」)、「Resource」ドロップダウンからZendesk APIリソースを選択します。Base URLはリソース作成時から事前入力されるため、末尾にtickets.json
を追加するだけです。Previewをクリックすると、結果が表示されます。

サーバー・サイドのページ割り: チケットの取得
チケットが多すぎると、フロントエンドをオーバーロードせずにRetoolのテーブルに表示させることができないかもしれません。Retoolはテーブル・コンポーネントでのサーバー・サイドのページ割りに対応しているため、ページを切り替えるたびにリクエストを再実行させることができます。最初に、tickets.json
エンドポイントからのチケットをリストする基本的なGET
クエリーを作成しておきます。データは、クエリーのデータ(この場合は{{ getTickets.data.tickets }}
)を参照することでテーブル・コンポーネントに取り込むことができます。

Zendeskのチケットのエンドポイントは複数のページ割り方式に対応しています。このチュートリアルではリミット/オフセットを使用します。
1. テーブル設定の更新
最初に、テーブル・コンポーネントをクリックし、右側のサイドバーに移動して「Pagination」セクションまでスクロールします。「Server side paginated」をオンにして、ドロップダウンから「Limit offset based」を選択します。「Number of rows in this table」フィールドでは、{{ getTickets.data.count }}
によりgetTickets
クエリーからcount
フィールドを参照します。「Selected page」フィールドはデフォルトのままでかまいません。

2. クエリーの更新
テーブルを構成したら、getTickets
クエリー(名前を変更した場合は、その名前)に移動します。URLパラメーターを2つ追加します。テーブルにはtable1
という名前が付けられています。このため、テーブル名を変更した場合は、このコードをそれに合わせる必要があります。
per_page
={{ table1.pageSize }}
page
={{ table1.selectedPageIndex + 1 }}

クエリーを保存したら、準備完了です。最終的な設定はこのようになります。

Updated 30 days ago