Zendesk コネクタ
Zendesk Support インスタンスを Tajo 経由で Brevo に接続し、統合された顧客サポートデータ、チケットベースのセグメンテーション、満足度スコアリング、サポートトリガーによるマーケティング自動化を実現します。
概要
| プロパティ | 値 |
|---|---|
| プラットフォーム | Zendesk |
| カテゴリ | サポート |
| セットアップの複雑さ | 中 |
| 公式統合 | はい |
| 同期データ | チケット、ユーザー、組織、イベント |
| API ベース URL | https://{subdomain}.zendesk.com/api/v2 |
機能
- ユーザー同期 - Zendesk のエンドユーザーとエージェントを Brevo 連絡先と同期
- チケットトラッキング - サポート認識型マーケティングセグメンテーション用にチケットデータを同期
- 組織マッピング - B2B ワークフロー用に連絡先を組織に関連付け
- 満足度スコア - CSAT と NPS データを Brevo 属性に同期
- チケットイベント - 自動化トリガー用にチケット作成、解決、エスカレーションをトラッキング
- ヘルプセンター統合 - 記事ビューと検索行動をトラッキング
- マルチチャンネルサポート - メール、チャット、音声、メッセージングチャンネルからデータを同期
- カスタムフィールド - Zendesk のカスタムチケットおよびユーザーフィールドを Brevo にマッピング
前提条件
開始する前に、以下を準備してください。
- Zendesk Support アカウント(Team、Professional、または Enterprise)
- Zendesk インスタンスへの管理者アクセス
- 設定済みの API トークンまたは OAuth アプリ
- API アクセス可能な Brevo アカウント
- Tajo アカウント
認証
API トークン認証
迅速なセットアップのためにメール/トークン認証を使用します。
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Zendesk Admin > Apps and Integrations > APIs > Zendesk API から API トークンを生成します。
OAuth 2.0
委任ユーザーアクセスを伴うマルチインスタンス統合には OAuth を使用します。
# 認可 URLhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20write必要なスコープ
read # すべてのリソースへの読み取りアクセスwrite # すべてのリソースへの書き込みアクセスtickets:read # チケットを読み取る(細かい)users:read # ユーザーを読み取る(細かい)organizations:read # 組織を読み取る(細かい)設定
基本セットアップ
connectors: zendesk: enabled: true subdomain: "yourcompany" auth: api_token: "${ZENDESK_API_TOKEN}"
# データ同期オプション sync: users: true tickets: true organizations: true satisfaction_ratings: true
# Brevo リストの割り当て lists: all_customers: 30 active_tickets: 31 satisfied_customers: 32フィールドマッピング
Zendesk ユーザーフィールドを Brevo 連絡先属性にマッピングします。
デフォルトマッピング
| Parameter | Type | Description |
|---|---|---|
email required | string | ユーザーのメールアドレス(一意識別子) |
name optional | string | フルネーム、FIRSTNAME/LASTNAME に分割 |
phone optional | string | WhatsApp/SMS 用の SMS 属性にマッピング |
organization_id optional | integer | B2B マッピング用の関連組織 |
role optional | string | ユーザーロール(end-user、agent、admin) |
tags optional | array | Zendesk のユーザータグ |
ticket_restriction optional | string | チケットアクセスレベル |
custom_fields optional | object | カスタムユーザーフィールド値 |
カスタムフィールドマッピング
field_mapping: # 標準フィールド email: email name: FULLNAME phone: SMS
# サポートメトリクス open_tickets: OPEN_TICKETS total_tickets: TOTAL_TICKETS avg_satisfaction: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# 組織フィールド organization.name: COMPANY_NAME organization.tags: COMPANY_TAGS
# カスタムフィールド user_fields.customer_type: CUSTOMER_TYPE user_fields.account_tier: ACCOUNT_TIERAPI エンドポイント
Ticketing API
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/v2/tickets | チケットを一覧取得 |
POST | /api/v2/tickets | チケットを作成 |
PUT | /api/v2/tickets/{id} | チケットを更新 |
GET | /api/v2/tickets/{id} | チケットを表示 |
GET | /api/v2/search.json?query={query} | チケットを検索 |
Users API
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/v2/users | ユーザーを一覧取得 |
POST | /api/v2/users | ユーザーを作成 |
PUT | /api/v2/users/{id} | ユーザーを更新 |
GET | /api/v2/users/{id} | ユーザーを表示 |
GET | /api/v2/users/search.json?query={query} | ユーザーを検索 |
Organizations API
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/v2/organizations | 組織を一覧取得 |
POST | /api/v2/organizations | 組織を作成 |
GET | /api/v2/organizations/{id}/users | 組織メンバーを一覧取得 |
Satisfaction Ratings API
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/v2/satisfaction_ratings | 満足度評価を一覧取得 |
GET | /api/v2/satisfaction_ratings/{id} | 評価を表示 |
イベント
チケットイベント
| イベント | トリガー | ユースケース |
|---|---|---|
ticket.created | 新しいチケットが送信 | サポート確認 |
ticket.updated | チケットステータス変更 | ステータス通知 |
ticket.solved | チケットが解決済みとしてマーク | CSAT 調査トリガー |
ticket.reopened | 解決済みチケットが再開 | エスカレーションアラート |
ユーザーイベント
| イベント | トリガー | ユースケース |
|---|---|---|
user.created | 新しいユーザー登録 | サポートへようこそ |
user.updated | ユーザープロファイル変更 | 属性同期 |
user.merged | ユーザーがマージ | 重複排除 |
満足度イベント
| イベント | トリガー | ユースケース |
|---|---|---|
satisfaction_rating.created | CSAT が送信 | フィードバック処理 |
satisfaction_rating.bad | 否定的評価 | リカバリーアウトリーチ |
satisfaction_rating.good | 肯定的評価 | 支持者キャンペーン |
コード例
コネクタの初期化
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Zendesk を接続await tajo.connectors.connect('zendesk', { subdomain: 'yourcompany', apiToken: process.env.ZENDESK_API_TOKEN});ユーザーとチケットを同期
// ユーザーとチケットデータのフル同期await tajo.connectors.sync('zendesk', { type: 'full', resources: ['users', 'tickets', 'organizations'], since: '2023-01-01'});
// 同期ステータスを確認const status = await tajo.connectors.status('zendesk');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// usersSynced: 8400,// ticketsSynced: 34200,// organizationsSynced: 1200// }Zendesk Webhook の処理
app.post('/webhooks/zendesk', async (req, res) => { const signature = req.get('X-Zendesk-Webhook-Signature');
// Webhook 署名を検証 if (!verifyZendeskSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('zendesk', { type: req.body.type, ticketId: req.body.ticket_id, userId: req.body.user_id, payload: req.body });
res.status(200).send('OK');});レート制限
Zendesk のレート制限はプランによって異なります。
| プラン | レート制限 | 詳細 |
|---|---|---|
| Team | 200 リクエスト/分 | API トークン単位 |
| Professional | 400 リクエスト/分 | API トークン単位 |
| Enterprise | 700 リクエスト/分 | API トークン単位 |
| High Volume アドオン | 2,500 リクエスト/分 | API トークン単位 |
追加の制限:
- Search API: 匿名で 6 リクエスト/分、認証済みで 100/分
- 増分エクスポート: 10 リクエスト/分
- Batch API: バッチリクエストあたり 100 レコード
- Webhook 配信: 指数バックオフによる自動リトライ
レート制限ヘッダー
X-Rate-Limit-Remaining と Retry-After ヘッダーを監視して API 使用量を管理してください。
トラブルシューティング
一般的な問題
| 問題 | 原因 | 解決策 |
|---|---|---|
| 401 Unauthorized | API トークンが無効 | Zendesk Admin でトークンを再生成 |
| 403 Forbidden | 権限不足 | エージェントまたは管理者ロール要件を確認 |
| ユーザーが同期されない | ユーザーがエンドユーザーではなくエージェント | 同期設定で role によりフィルタ |
| Webhook を受信できない | トリガー/ターゲットが未設定 | Zendesk Admin で Webhook ターゲットを設定 |
| 検索結果が空 | インデックス遅延 | 検索インデックス更新のため 1〜2 分待つ |
デバッグモード
詳細ロギングを有効化:
connectors: zendesk: debug: true log_level: verbose log_webhooks: true接続テスト
tajo connectors test zendesk# ✓ API 接続成功# ✓ ユーザー読み取り可能# ✓ チケット読み取り可能# ✓ 組織読み取り可能# ✓ Webhook 設定済みベストプラクティス
- 増分エクスポートを使用する - 大規模データ同期には Incremental API を使用
- エンドユーザーのみフィルタリング - Brevo 連絡先同期からエージェントと管理者を除外
- CSAT データを同期する - 顧客健全性セグメンテーションに満足度スコアを使用
- 組織をマッピングする - B2B マーケティングキャンペーンに組織データを活用
- Webhook リトライを実装する - 一時的な障害を適切に処理
- サイドローディングを使用する - リクエスト数を減らすため API レスポンスに関連レコードを含める
セキュリティ
- API トークン認証 - 管理者メールに紐付けられたトークンベースアクセス
- OAuth 2.0 - スコープ制御付きのトークンベース委任アクセス
- Webhook 署名 - Webhook ペイロードの HMAC 署名検証
- TLS 暗号化 - すべての API 通信は HTTPS で暗号化
- IP 許可リスト - IP 範囲で API アクセスを制限