トリガー
このガイドでは、GitLab における Zendesk トリガーの作成、編集、管理方法について説明します。管理者は管理者タスクセクションを確認してください。
エージェントが手動で適用するマクロとは異なり、トリガーはチケットで更新が発生したときに実行されます。
技術的な詳細
- デプロイタイプ:
Standard - 同期リポジトリ
- 管理対象コンテンツリポジトリ
CustSuppOps Zendesk Test Suite Generatorが有効
トリガーを理解する
トリガーとは
Zendeskによると:
トリガーとは、チケットが作成または更新された直後に実行される、定義済みのビジネスルールです。たとえば、チケットがオープンされた際に顧客へ通知するためにトリガーを使用できます。別のトリガーを作成して、チケットが解決されたときに顧客へ通知することもできます。
Zendesk でトリガーが実行されるタイミング
Zendesk のトリガーは、チケットで更新が発生するたびに実行されます。この場合、条件に基づいてチケットに適用されるトリガーの完全なリストがチケットで実行されます。
トリガーは位置に基づいて実行されます
トリガーは、上から下へのフロー(つまり最小の位置から最大の位置へ)で実行されるため、位置が重要です。
たとえば、条件に基づいてトリガー 2、5、10 がチケットで実行される場合、実行順序はトリガー 2、次にトリガー 5、最後にトリガー 10 となります。ただし、トリガー 5 がトリガー 10 の一致を無効にするアクションを実行した場合、トリガー 10 は一致しなくなるため、トリガー 2 と 5 のみが実行されます。
トリガーでは条件ロジックを使用します
トリガーでは条件ロジックを使用します:
all: 配列内のすべての条件が true でなければなりません(AND ロジック)any: 配列内の少なくとも 1 つの条件が true でなければなりません(OR ロジック)- 片方のセットだけ、または両方のセットを使用できます(ただし、少なくとも 1 つのセットを使用する必要があります)
トリガーの管理方法
Zendesk は UI を介してトリガーを管理する完全な方法を提供していますが、私たちはよりバージョン管理された手法を採用しています。これにより、設定済みのレビュープロセス、必要に応じたロールバックの実行などが可能になります。
このため、同期リポジトリと管理対象コンテンツリポジトリを利用します。
同期リポジトリの仕組み
同期リポジトリのワークフローは次のプロセスに従います:
graph TD; A-->C; B-->C; C-->D; A(Scheduled time for pipeline to run) B(Scheduled pipeline triggered manually) C(bin/sync runs) D(Changes synced to Zendesk)
人が読める形式への置換
注記
- YAML ファイルでトリガーを作成/編集する
administratorsにのみ適用されます
現在、同期リポジトリは、さまざまな項目を人が読める形式から “Zendesk” の同等の項目に置換できます。これには次が含まれます:
| 人が読める項目 | Zendesk フィールド項目 | 条件/アクションの場所 | 注記 |
|---|---|---|---|
'Brand: XXX' | brand_id | value | XXX をブランドの name に置き換えます |
'Field: XXX' | custom_fields_xxx | field | XXX をチケットフィールドの title に置き換えます |
'Group: XXX' | group_id | value | XXX をグループの name に置き換えます |
'XXX' | role | value | XXX をロールタイプの name またはリクエスタのメールアドレスに置き換えます |
'Form: XXX' | ticket_form_id | value | XXX をチケットフォームの name に置き換えます |
'Schedule: XXX' | set_schedule | value | XXX をスケジュールの name に置き換えます |
'Schedule: XXX' | schedule_id | value | XXX をスケジュールの name に置き換えます |
'XXX' | organization_id | value | XXX を組織の salesforce_id 属性に置き換えます |
'XXX' | assignee_id | value | XXX をエージェントのメールアドレスに置き換えます |
'XXX' | satisfaction_reason_code | value | XXX を満足理由の name に置き換えます |
'XXX' | via_id | value | XXX を経由タイプの name に置き換えます |
'XXX' | requester_role | value | XXX をリクエスタのロールタイプの name に置き換えます |
'Target: XXX' | notification_target | value | XXX をターゲットの name に置き換えます |
'Webhook: XXX' | notification_webhook | value | XXX を Webhook の name に置き換えます |
たとえば、フィールド Preferred Region for Support の値を AMER に変更するトリガーを作成する場合、置換を使用するには次のようにします:
- field: 'Field: Preferred Region for Support'
value: 'AMER'
別の例として、チケットのフォームが SaaS フォームではないことを確認する条件が必要な場合は、次のようにします:
- field: 'ticket_form_id'
operator: 'is_not'
value: 'Form: SaaS'
同期リポジトリで MR を作成する場合
同期リポジトリで MR を作成すると、bin/compare スクリプトを介して比較操作が実行され、次の処理が行われます:
- 管理対象コンテンツリポジトリをクローンします
- Zendesk インスタンスからすべてのブランド、グループ、満足理由、スケジュール、ターゲット、チケットフィールド、チケットフォーム、トリガー、Webhook を取得します
- 同期リポジトリ内のすべての YAML ファイルをレビューして、トリガーオブジェクトを生成します
- また、同期リポジトリのファイルに次の問題がないことを確認します:
- タイトルが欠けている
active属性がfalseのファイルがactiveフォルダにないactive属性がtrueのファイルがinactiveフォルダにないtitle属性の重複使用がないcontains_managed_content属性がtrueのすべてのファイルに対応する管理対象コンテンツファイルがあるcontains_managed_webhook属性がtrueのすべてのファイルに対応する管理対象コンテンツファイルがある
- また、同期リポジトリのファイルに次の問題がないことを確認します:
- YAML ファイルのすべてのトリガーオブジェクトを、対応する Zendesk 項目と比較します(
title属性とprevious_title属性の値を確認して判定します)- 存在しない場合は、後で使用する作成オブジェクトを変数に保存します
- 存在するものの属性値が異なる場合は、後で使用する更新オブジェクトを変数に保存します
- 比較レポートを出力します
Zendesk への同期
スケジュールされたパイプラインがプロジェクトで実行されたとき(正しいタイミングまたは手動で実行された場合)、同期リポジトリは同期タスクを実行します。
どちらの操作が発生しても、同期では比較操作を実行し、生成されたオブジェクトを使用して、必要な Zendesk エンドポイントに対するループで必要な作成と更新を実行します:
孤立した管理対象コンテンツファイルの報告
2 月、5 月、8 月、11 月の 1 日に、スケジュールされたパイプラインにより、同期リポジトリはサポートリーダーシップチームがすべての孤立した管理対象コンテンツファイルをレビューするための Issue を作成します。
これは同期リポジトリの bin/find_orphaned_files スクリプトを介して行われ、次の処理を実行します:
- 管理対象コンテンツリポジトリをクローンします
- 管理対象コンテンツリポジトリの
activeフォルダとinactiveフォルダ内にあるすべてのファイルをレビューし、state(つまりactiveまたはinactive)、path、titleを特定します - 同期リポジトリ自体の
activeフォルダとinactiveフォルダ内にあるすべてのファイルをレビューし、次を特定します:- ファイルが管理対象コンテンツファイルを使用しているか
- 管理対象コンテンツファイルがあるか
- 同期リポジトリファイルのない管理対象コンテンツファイルを見つけた場合、Customer Support リーダーシップに報告する Issue を作成します
非管理者としてトリガーを作成する
トリガーを作成する場合は、Feature Request Issueを作成してください(Customer Support Systems チームによる手動対応が必要になるためです)。
非管理者としてトリガーを編集する
トリガーで使用するコメントの文言を変更する
トリガーで使用するコメントの文言を編集するには、管理対象コンテンツリポジトリ内の対応するファイルを変更します。master ブランチにマージされた後、次のデプロイサイクルで取得され、Zendesk にデプロイされます。
トリガーで使用するペイロードを変更する
管理対象 Webhook を使用しているトリガーのペイロードを編集するには、管理対象コンテンツリポジトリ内の対応するファイルを変更します。master ブランチにマージされた後、次のデプロイサイクルで取得され、Zendesk にデプロイされます。
タイトル、コメント以外の文言アクションなどを変更する
トリガーのその他の項目を変更する場合は、Feature Request Issueを作成してください(Customer Support Systems チームによる手動対応が必要になるためです)。
非管理者としてトリガーを無効化する
トリガーの無効化をリクエストする場合は、Feature Request Issueを作成してください(Customer Support Systems チームによる手動対応が必要になるためです)。
管理者タスク
注記
- このセクションのすべての項目には、Zendesk への
Administratorレベルのアクセスが必要です。
トリガーの使用状況情報を確認する
トリガーの使用状況情報を確認するには:
- Zendesk インスタンスの管理ダッシュボードに移動します
Objects and rules > Business rules > Triggersに移動します- トリガー一覧の右端にあるアイコン(縦長の長方形が 3 つ並んだように見えます)をクリックします
- 表示する使用状況列をクリックします
トリガーを作成する
警告
- これは、対応するリクエスト Issue(Feature Request、Administrative、Bug など)がある場合にのみ実行してください。存在しない場合は、最初に作成し、作業する前に標準プロセスを通過させてください。
- 管理対象コンテンツファイルを使用するトリガーを作成する場合は、先にその管理対象コンテンツファイルを作成する必要があります。
トリガーを作成するには、同期リポジトリで MR を作成する必要があります。正確にどの変更を行うかはリクエスト自体によって異なります。使用できる開始テンプレートは次のとおりです:
---
title: 'Your::Title::Here'
previous_title: 'Your::Title::Here'
description: 'Your description here'
active: true
position: 1 # Integer representing trigger position
actions:
- field: 'the_action_to_perform'
value: 'the_value_to_use'
conditions:
all:
- field: 'the_action_to_perform'
operator: 'the_operator_to_use'
value: 'the_value_to_use'
any:
- field: 'the_action_to_perform'
operator: 'the_operator_to_use'
value: 'the_value_to_use'
category_id: 'Name of category'
contains_managed_content: false
contains_managed_email: false
contains_managed_webhook: false
同僚が MR をレビューして承認した後、MR をマージできます。次のデプロイが発生すると、Zendesk に同期されます。
トリガーを編集する
警告
- これは、対応するリクエスト Issue(Feature Request、Administrative、Bug など)がある場合にのみ実行してください。存在しない場合は、最初に作成し、作業する前に標準プロセスを通過させてください。
- トリガーの
contains_managed_content属性またはcontains_managed_webhook属性をfalseからtrueに変更する場合は、先にその管理対象コンテンツファイルを作成する必要があります。 - トリガーの
contains_managed_content属性またはcontains_managed_webhook属性をtrueからfalseに変更する場合は、対応する管理対象コンテンツファイルを削除するためのフォローアップ MR を作成してください。
トリガーを編集するには、同期リポジトリで MR を作成する必要があります。正確にどの変更を行うかはリクエスト自体によって異なります。
同僚が MR をレビューして承認した後、MR をマージできます。次のデプロイが発生すると、Zendesk に同期されます。
トリガーのタイトルを変更する
トリガーのタイトルを変更する必要がある場合は、現在の値を previous_title 属性にコピーしてから、title 属性を変更します。これにより、同期で対象のトリガーを見つけて更新できます。
トリガーを無効化する
警告
- これは、対応するリクエスト Issue(Feature Request、Administrative、Bug など)がある場合にのみ実行してください。存在しない場合は、最初に作成し、作業する前に標準プロセスを通過させてください。
- トリガーが管理対象コンテンツファイルを使用していた場合(つまり、YAML ファイルの
contains_managed_content属性またはcontains_managed_webhook属性が以前にtrueに設定されていた場合)、管理対象コンテンツリポジトリ内の対応するファイルもactiveの場所からinactiveの場所に移動する必要がある可能性があります。
トリガーを無効化するには、同期リポジトリで MR を作成する必要があります。この MR では、対応するトリガーの YAML ファイルに対して次の操作を行います:
ファイルを
activeパスからinactiveパスに移動しますactive属性の値をfalseに変更しますactionsの値を次のように変更します:Zendesk Global の場合:
- field: 'brand_id' value: 'GitLab Support'Zendesk US Government の場合:
- field: 'brand_id' value: 'GitLab'
conditionsの値を次のように変更します:Zendesk Global の場合:
all: - field: 'brand_id' operator: 'is_not' value: 'GitLab Support' - field: 'brand_id' operator: 'is_not' value: 'GitLab - Internal' any: []Zendesk US Government の場合:
all: - field: 'brand_id' operator: 'is_not' value: 'GitLab' - field: 'brand_id' operator: 'is_not' value: 'GitLab - Internal' any: []
contains_managed_content属性の値をfalseに変更しますcontains_managed_webhook属性の値をfalseに変更します
同僚が MR をレビューして承認した後、MR をマージできます。次のデプロイが発生すると、Zendesk に同期されます。
トリガーを削除する
警告
- トリガーは無効化されている場合にのみ削除できます。
- これは、対応するリクエスト Issue(Feature Request、Administrative、Bug など)がある場合にのみ実行してください。存在しない場合は、最初に作成し、作業する前に標準プロセスを通過させてください。
- トリガーを削除する場合は、同期リポジトリと管理対象コンテンツリポジトリからもファイルを削除する必要がある可能性があります。
同期リポジトリは削除を実行しないため、Zendesk 自体で実行する必要があります。
トリガーを削除するには:
- Zendesk インスタンスの管理ダッシュボードに移動します
Objects and rules > Business rules > Triggersに移動します- 削除するトリガーを見つけ、右側にある縦の 3 点をクリックします
- 使用中のフィルターを変更する必要がある可能性があります
Deleteをクリックします- 変更を送信するには
Delete triggerをクリックします
例外デプロイを実行する
トリガーの例外デプロイを実行するには、対象のトリガー同期プロジェクトに移動し、スケジュールされたパイプラインのページで同期項目の再生ボタンをクリックします。これにより、トリガーの同期ジョブがトリガーされます。
よくある問題とトラブルシューティング
マージ後にトリガーの変更が表示されない
トリガーは Standard デプロイタイプに従うため、通常のデプロイサイクル中(または例外デプロイが実行された場合)にのみデプロイされます
c955a93f)