はじめに
TROCCOには、標準で提供していないサービスへのデータ転送を実現する転送先カスタムコネクタという機能があります。対象サービスがREST APIを提供していれば、カスタムコネクタを使ってTROCCOからデータを転送できる可能性があります(TROCCOのカスタムコネクタの仕様を満たしている必要があります)。
この記事では、カスタムコネクタの活用例としてZendeskチケットへのフォロワーをTROCCOから自動追加する方法を紹介します。
なぜZendeskのトリガー機能を使わないのか
Zendeskにはチケットの更新をトリガーに処理を自動化する機能があります。フォロワーの追加もトリガーで実現できますが、今回はあえてこの方法を選びませんでした。その理由は、CS担当者の情報をZendeskに持ちたくなかったからです。
Zendeskのトリガーでフォロワーをチケットにアサインするには、ユーザーや組織にCS担当者の情報を登録しておく必要があります。しかし、ユーザーごとのCS担当者の情報はすでにSalesforce上で管理しており、Zendeskにも同じ情報を登録・維持するのは二重管理になってしまいます。
そこで今回は、Salesforceからユーザー情報とCS担当者情報を取得し、紐付けたうえでZendeskのチケットにフォロワーとして付与するという方法をTROCCOで実現しました。
この記事でやること・完成イメージ
具体的には以下の流れで実現します。
- SalesforceからユーザーとCS担当者の情報を取得してBigQueryに転送する
- Zendeskから昨日作成されたチケットを取得してBigQueryに転送する
- SalesforceのユーザーとCS担当者の情報とZendeskのチケットを紐づける
- 転送先カスタムコネクタを使ってチケットにフォロワーを追加する
- 転送先カスタムコネクタを使ってチケットに社内メモを追加する(フォロワーへの通知を送信するため)
最終的には、Zendeskの各チケットに対して、対応するCS担当者がフォロワーとして自動で追加され、メールで通知が送信される状態になります。
前提・環境
本記事の手順を試すにあたり、以下が必要です。
- TROCCO:転送先カスタムコネクタが利用できるプラン(Advancedプラン以上)
- ユーザー・担当者情報のマスタ:ユーザー情報とCS担当者のメールアドレスが管理されているデータソース(本記事ではSalesforceを使用していますが、他のサービスでも代替可能です)
- BigQuery
- Zendesk:リクエストを作成するユーザーは、事前にSalesforce上で登録されていること。登録されていないユーザーからのリクエストはフォロワー追加の対象外となります
本記事ではCS担当者の識別にメールアドレスを使用しています。担当者情報にメールアドレスが含まれていれば、Salesforce以外のデータソースでも同様の構成で実現できます。
転送先カスタムコネクタとは
TROCCOの転送先カスタムコネクタは、TROCCOが標準で提供していない転送先へのデータ転送を実現する機能です。対象サービスがREST APIを提供していれば、カスタムコネクタを使ってTROCCOからデータを転送できる可能性があります。
詳しい仕様や設定方法については、公式ドキュメントをご参照ください。
手順
1. SalesforceからユーザーとCS担当者の情報を取得してBigQueryに転送する
TROCCOでSalesforceを転送元、BigQueryを転送先として設定し、データを転送します。
取得するデータは以下の2つです。
- TROCCOアカウントのユーザー情報:メールアドレスを含むユーザーデータ
- CS担当者の情報:各ユーザーに紐づくCS担当者のメールアドレスと担当者情報
Zendeskのチケットにはチケット作成者のメールアドレスがセットされており、このメールアドレスをキーにSalesforceのユーザー情報と紐づけることで、対応するCS担当者を特定します。
2. Zendeskからチケット情報を取得してBigQueryに転送する
同様に、TROCCOでZendesk Supportを転送元、BigQueryを転送先として設定します。
3. SalesforceのユーザーとCS担当者の情報とZendeskのチケットを紐づける
BigQueryに転送したSalesforceのデータとZendeskのチケットデータを紐づけます。紐づけにはTROCCOのデータマート定義を使用します。データマート定義では、クエリを書いてデータを加工することができます。
クエリに関しては詳細は挙げないのですが、ポイントは以下です。
- 日本時間で「昨日作成されたチケット」を絞り込む
created_at BETWEEN "$day_before_yesterday$ 15:00:00" AND "$yesterday$ 15:00:00"でUTC基準の前日15時〜当日15時、つまり日本時間の翌日0時〜24時を取得しています。TROCCOのカスタム変数機能を使って日付を動的に指定しています。 - メールアドレスでチケットのリクエスタとSalesforceのユーザーを紐づけている
チケットのリクエスタのメールアドレスをキーに、Salesforceのユーザーと結合してCS担当者と紐づけています。これが前提・環境で説明した「弊社管理ユーザーのみ対象」という条件の実装部分です。
▼ 作成したデータマート一部抜粋(全てダミーデータです)
| ticket_id | cs_staff_email | cs_staff_zendesk_id | requester_id | requester_email |
|---|---|---|---|---|
| 100234 | suzuki@sample.com | 1234567890 | 98765 | yamada@sample.co.jp |
| 100235 | tanaka@sample.com | 2345678901 | 98766 | sato@sample.co.jp |
| 100236 | null | null | 98767 | kim@sample.co.jp |
| 100237 | suzuki@sample.com | 1234567890 | 98768 | nakamura@sample.co.jp |
| 100238 | ishida@sample.com | 3456789012 | 98769 | chen@sample.co.jp |
| 100239 | null | null | 98770 | tanaka@sample.co.jp |
事前準備:転送先カスタムコネクタの作成
転送先カスタムコネクタの詳しい作成方法については、こちらの記事をご参照ください。
ここでは設定手順を簡単に紹介します。
4-1. 転送先カスタムコネクタを作成する
TROCCOの管理画面から転送先カスタムコネクタを新規作成します。ベースURLにはZendesk Support APIのベースURLを設定します。

4-2. 接続情報を作成する
ZendeskのAPIトークンを使って接続情報を作成します。APIトークンはZendeskの管理画面から発行できます。
APIトークンを発行したら、{email_address}/token:{api_token} でBase64エンコードしてTROCCOに登録してください。
4-3. フォロワー追加用のエンドポイントを追加する
作成したカスタムコネクタにフォロワーを追加するためのエンドポイントを設定します。Zendeskのチケット更新APIを使用し、チケットIDとフォロワーに設定するCS担当者のメールアドレスを含めるリクエストテンプレートを定義します。
このように書くと複数チケットのフォロワーをまとめて更新することができます。
followersには、[{"user_id":zendesk_user_id,"action":"put"}] が入ります。
{
"tickets": [
{% for row in rows %}
{
"id": {{ row.ticket_id }},
"followers": {{ row.followers }}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}
4-4. 社内メモ追加用のエンドポイントを追加する
同様に、社内メモを追加するためのエンドポイントを設定します。先ほどと同じAPIを利用して、リクエストテンプレートを以下のように定義して社内メモを追加しました。
チケットIDは転送元のレコードごとに切り替え、社内メモ(comment)は一律「CS担当者フォロー対応」と入力されるようにしました。
{
"tickets": [
{% for row in rows %}
{
"id": {{ row.ticket_id }},
"comment": {"body": "CS担当者フォロー対応","public": false}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}
4. 転送先カスタムコネクタを使ってチケットにフォロワーを追加する
BigQueryを転送元、4-3で作成したカスタムコネクタを転送先として設定し、Zendeskのチケットにフォロワーを追加します。
転送元のBigQueryの設定項目のSQLは以下のように入力します。手順3で作成したデータマートを参照します。
SELECT
ticket_id,
TO_JSON_STRING(
[STRUCT(cs_staff_zendesk_user_id AS user_id, 'put' AS action)]
) AS followers
FROM `project.dataset.datamart_table`
WHERE cs_staff_zendesk_user_id IS NOT NULL
WHERE cs_staff_zendesk_user_id IS NOT NULL で、CS担当者が特定できなかったチケットを除外しています。また TO_JSON_STRING を使って、ZendeskのAPIが受け付けるJSON形式にフォロワー情報を変換しています。action: 'put' はフォロワーの追加を意味します。4-3で定義したリクエストテンプレートに合う形で整形しました。
5. 転送先カスタムコネクタを使ってチケットに社内メモを追加する
BigQueryを転送元、4-4で作成したカスタムコネクタを転送先として設定し、フォロワーへの通知を送信するため、チケットに社内メモを追加します。
転送元のBigQueryの設定項目のSQLは以下のように入力します。手順3で作成したデータマートを参照します。
SELECT
ticket_id
FROM `project.dataset.datamart_table`
WHERE cs_staff_zendesk_user_id IS NOT NULL
手順4と同様に WHERE cs_staff_zendesk_user_id IS NOT NULL でCS担当者が特定できなかったチケットを除外しています。社内メモの追加に必要なのはチケットIDのみのため、ticket_id だけを取得しています。
6. ワークフローを設定してスケジュール実行する
手順1〜5で設定した転送設定・データマートを、TROCCOのワークフロー機能を使って一連の流れとして実行できるようにします。
ワークフローにはスケジュール実行の設定もできるため、毎日自動で実行されるように設定します。これにより、前日に作成されたZendeskのチケットに対して、毎朝自動でCS担当者がフォロワーとして追加され、通知される仕組みが完成します。
動作確認
ジョブを実行後、Zendeskのチケット画面を開き、以下の3点を確認します。
- フォロワー欄に対応するCS担当者が表示されていること
- 社内メモ欄に「CS担当者フォロー対応」が追加されていること
- フォロワーに追加されたユーザーに対してメールが送信されていること
上記が確認できれば設定は完了です。
まとめ
今回は、TROCCOの転送先カスタムコネクタを使って、ZendeskのチケットにCS担当者をフォロワーとして自動追加する仕組みを構築しました。
Zendeskのトリガーを使わずに、Salesforce上で一元管理している担当者情報をそのまま活用できたことで、データの二重管理を避けつつ自動化を実現できました。
転送先カスタムコネクタはREST APIを提供しているサービスであれば幅広く活用できます。「TROCCOに対応していないサービスだから転送できない」と思っていたサービスへのデータ転送も、カスタムコネクタで実現できるかもしれません。ぜひ一度試してみてください。

