Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Zendeskチケットのカスタムフィールド自動登録

はじめに

こんにちは。Eight事業部 サポートエンジニアの山本です。サポート業務の効率化のために行った、Zendeskチケットのカスタムフィールド自動登録についてお話しします。

Eightではお問い合わせの管理にZendeskを使用しています。Zendeskではお問い合わせをチケットという形で管理しています。このチケットに対してカスタムフィールドを設定することができ、そこにEight内部の情報であるユーザーアカウント等の情報を記載しています。

Webのお問い合わせフォームからお問い合わせが入力された場合、アカウントの紐付けとして、フォームに入力いただいたお客様のメールアドレスを社内の管理サイトで検索し、その結果からユーザーアカウントの情報をカスタムフィールドに転記していました。

単純作業ではありますが、全てのチケットに対して行う必要があり全体としては大きな時間がかかります。この入力を自動化することで大幅に時間を削減し、より早くユーザーに回答を届けられるようになりました。


チケット登録からの流れ

今回の施策適用後のチケット登録からの流れは以下になります。

1. お客様がお問い合わせフォームに問い合わせを入力する
2. Zendeskにお問い合わせ情報がチケットとして登録される
3. Zendeskの新規チケット作成のトリガにより、HTTPターゲットとして指定されたEightサーバーに、Webhookでチケット番号とメールアドレスが送信される
4. Eightサーバーはメールアドレスからユーザーアカウントを特定する
5. EightサーバーはZendesk APIを使用してチケットを更新し、カスタムフィールドにユーザーアカウントの情報を記載する

Zendesk固有の仕組みについて説明します。'トリガ'はチケットの状態が特定の条件を満たした時に特定の動作をする仕組みです。'ターゲット'はトリガによって行う動作の一つで、メールやTwitter等、外部のシステムに通知を行うことができます。今回はWebhookでEightサーバーにアクセスしたいので、以下のヘルプに従って、HTTPターゲットを作成します。
HTTPターゲットを使用したwebhookの作成 – Zendeskヘルプ


EightサーバーからZendeskのチケットを更新するには、Zendesk APIを使用する必要があります。通常のREST APIで、以下を使って更新できます。特に難しい部分はありません。
Tickets - Support API - Zendesk Developer Portal

トリガとターゲットを使ったチケット更新はできないのか

Zendeskに詳しい方であれば、以下のヘルプからトリガとターゲットを使ったチケット更新は非推奨なのではないかと思われるのではないでしょうか。
トリガとターゲットを使用して、チケットを更新できますか? – Zendeskヘルプ

質問
APIを介してチケットを更新するターゲットに、トリガまたはオートメーションの通知をすることはできますか?

回答
いいえ、できません。エラーはトリガとAPIで更新されている場合に発生しやすいことから、こちらのワークフローは推奨されません。

しかしZendeskによるチケットの更新と、APIによる更新の競合は、論理的にはいつでも発生する可能性があります。トリガからの更新の方が発生し易そうですが、単に確率の問題です。そこに対して全くトランザクションの制御ができていないとは考えにくいです。トリガから直接更新するのではなく、非同期処理で少し待ってから更新すれば良さそうに思えます。

Zendesk内部の動作なのでZendeskのサポートに問い合わせてみました。結論は以下です。

  • トリガーのターゲットで直接更新するのではなく、そこからある程度の時間をおいて非同期で更新するのであれば問題ない可能性が高い。
  • ただし"ある程度の時間をおいて"がどれくらいであるか具体的に数値を出すのは難しい。確認方法として、チケットのイベントが別イベントとして記録されていれば問題ない。

"チケットのイベントが別イベントとして記録されていれば問題ない"について詳しく説明します。

Zendeskではチケットの追加、更新の履歴は”イベント”という単位で管理されます。このイベントは、最初に行った更新操作だけではなく、その更新によるトリガーによって行われる動作もまとめて1つのイベントに含まれます。Zendeskの面白い点として、トリガーによる更新を契機として、さらに別のトリガーを起動させることができます。この場合トリガーによって起動された別のトリガーによる更新もまとめて1つのイベントに含まれます。

チケットのイベントを確認するには、下記のイベントビューを使用します。
チケットについての全イベントの表示 – Zendeskヘルプ

このイベントビューにおいて、以下が別のイベントとなっていることが必要です。

イベント1

  • チケットの新規追加
  • 新規追加のトリガーを起因とした更新
  • WebhookによるEightサーバーへの通知

イベント2

  • Eightサーバーへの通知による、Zendeskチケットのカスタムフィールドの更新
  • 上記カスタムフィールドの更新を起因とした、トリガーによる更新

実際に行ってみたところ、EightサーバでWebhookを受けてから、チケットの更新をAPIで行う非同期ジョブの実行までに数秒の遅延を挟むことによって、特に問題なく動作しているようです。実運用を行って1ヶ月近く経っていますが、これによる問題は特に起きていません。

まとめ

従来はサポート作業において、毎朝新規に登録されたチケットに対してアカウントの紐付けをまとめて行う行程があったのですが、今回の施策により、その行程自体をなくすことができました。これにより業務の効率化を図ることができました。

Zendeskはチケット管理以外にも、ヘルプコンテンツ管理等、サポート業務で使用する非常に多岐な機能が揃っています。うまく活用することで、業務に合わせた多様なカスタマイズが可能です。本記事がZendeskを使用されている方の参考になればと思います。



buildersbox.corp-sansan.com
buildersbox.corp-sansan.com
buildersbox.corp-sansan.com

© Sansan, Inc.