Zendesk でチケットやユーザーデータを元にプログラミングロジックを組み立てる

プレースホルダとリキッドを組み合わせることで、Zendesk 内でプログラミングロジックを組み立てることができます。
2022.11.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、筧(@TakaakiKakei)です。

皆さんは Zendesk で起票されたチケットの内容に応じて、特定のマクロの表示内容を変えたり、通知する Webhook の JSON ボディをカスタマイズしたりできることをご存知ですか? 今回はそのやり方について書いていきます。

結論

  • Zendesk 内のチケットやユーザーデータの参照にはプレースホルダを利用
  • ロジックにはリキッドを利用
  • 上記を組み合わせることで、Zendesk 内で様々なプログラミングロジックを組み立て可能

前提

動的コンテンツとは

動的コンテンツでの複数の言語のサポート – Zendeskヘルプ

主に Zendesk の多言語対応で利用する機能です。 下図の設定を使って具体例をご紹介します。

動的コンテンツを作成すると、自動でプレースホルダが作成されます。 上図だと {{dc.kakei_test_dynamic_contents}} の箇所です。 マクロ・トリガ・自動化などで参照する際は、このプレースホルダを利用します。

上記の例の場合、{{dc.kakei_test_dynamic_contents}}は参照されると以下のように置き換わります。

  • 日本語の文脈:テスト
  • 英語の文脈:test

プレースホルダとは

Zendesk Supportプレースホルダリファレンス – Zendeskヘルプ

プレースホルダを利用することで、Zendesk 内のチケットやユーザーデータを参照できます。 例えば、特定チケット内でプレースホルダを参照すると以下のようになります。

  • {{ticket.requester.organization.name}}:チケットをリクエストしたユーザーに割り当てられた組織名
  • {{ticket.id}}:チケットID
  • {{ticket.requester.notes}}:チケットをリクエストしたユーザーに関するメモ

その他のプレースホルダの書き方は冒頭の関連公式ドキュメントを参照ください。

リキッドとは

リキッドマークアップとZendesk Supportについて – Zendeskヘルプ

Liquid for Designers · Shopify/liquid Wiki

リキッドを利用することで、if else文 / case文 / for loop などを書くことができます。 前述のプレースホルダと組み合わせると、例えば以下のような書き方できます。

{%if ticket.requester.notes == "" %}特になし
{% else %}{{ticket.requester.notes}}
{% endif %}

上記のロジック内容は以下です。

  • チケットをリクエストしたユーザーに関するメモがなければ、特になしと返す
  • チケットをリクエストしたユーザーに関するメモがあれば、その内容を返す

やってみた

起票チケットの内容に応じて、マクロの表示内容を変更

以下のマクロを実装してみます。

  • チケットをリクエストしたユーザーに関するメモがなければ、特になしと返す
  • チケットをリクエストしたユーザーに関するメモがあれば、その内容を返す

実装手順

管理センター -> 動的コンテンツ -> 項目を追加 を開きます。 そして以下の内容で動的コンテンツを追加します。

  • タイトル:test_dynamic_contents_20221107
  • デフォルトの言語:日本語
  • コンテンツ:下記参照
{%if ticket.requester.notes == "" %}特になし
{% else %}{{ticket.requester.notes}}
{% endif %}

追加するとプレースホルダが表示されるので、メモしておきます。

管理センター -> マクロ -> マクロを追加 を開きます。 そして以下の内容でマクロ追加します。

  • タイトル:test_macro_20221107
  • ターゲットユーザー:自分のみ
  • アクション
    • コメントモード:プライベート
    • コメント/説明:{{dc.test_dynamic_contents_20221107}}

これで実装完了です。

確認

テスト用ユーザーでテストチケットを作成します。 テストチケットからユーザープロフィールを開き、メモに「テスト」と入力します。

テストチケットに戻り、作成したマクロ(test_macro_20221107)を動かしてみます。

社内メモに「テスト」と入力されました。

テストチケットからユーザープロフィールを開き、メモを空白にします。

テストチケットに戻り、作成したマクロ(test_macro_20221107)を動かしてみます。

社内メモに「特になし」と入力されました。

チケットをリクエストしたユーザーに関するメモの有無で、マクロの表示内容を変えることができました!

Zendeskチケット起票時に、チケットやユーザーデータを元に文章を作成してAPIで社内メモに追加する

公式非推奨の内容も含みますが、応用でこんなこともできますよという内容のスクラップも置いておきます。

[一部非推奨]Zendeskチケット起票時に、チケットやユーザーデータを元に文章を作成してAPIで社内メモに追加する

おわりに

最後まで読んでいただきありがとうございます。

動的コンテンツとプレースホルダとリキッドを使うことで、マクロ・トリガ・自動化でより自由な表現ができることがわかりました。 皆さんも是非試してみてください。

それではまた!