チケットフォーム
このガイドでは、GitLab における Zendesk のチケットフォームの作成、編集、管理方法について説明します。管理者は管理者タスクセクションを確認してください。
技術的な詳細
- デプロイタイプ:
Standard - 同期リポジトリ
CustSuppOps Zendesk Test Suite Generatorを有効化
警告
チケットフォームを理解する
チケットフォームとは
チケットフォームは、ユーザーがチケットを作成する際に使用するフォームです(Web UI 使用時)。これらはフォーム上の応答をチケットメタデータに変換します。
これらは以下の 2 つのタイプのいずれかに分類されます。
- Public - エージェントとエンドユーザーの両方が閲覧可能
- Internal - エージェントのみが閲覧可能
チケットフォームの管理方法
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)
チケットフォームは条件論理を使用する
チケットフォームは条件を使用してフィールドを動的に表示/非表示できます。
end_user_conditions: エンドユーザーが選択内容に基づいて見るフィールドを制御agent_conditions: エージェントが見るフィールドと、それらが必須となるタイミングを制御
親フィールドが特定の値を持つ場合、子フィールドが表示されます(オプションで必須にもできます)。例: 「Product Category が ‘GitLab.com’ の場合、‘GitLab.com User ID’ フィールドを表示」
チケットフォームは条件を使用する 必要は ありません。条件なしの場合、フォームデータに記載されているすべてのフィールドが表示されます。
これは 条件付き必須 をチケットフォーム上に設定する方法でもあります。
UI では、エンドユーザー条件のフォーマットは以下のとおりです。
TICKET_FIELD の値が VALUE の場合、LIST_OF_TICKET_FIELDS を表示
LIST_OF_TICKET_FIELDS の各項目には、何らかの方法でチケットフィールドアイテムを必須にするオプションがあります。
2 つのタイプのバックエンドは類似しており、要件定義に主要な違いがあります。
エンドユーザー条件
エンドユーザー条件のバックエンド値のフォーマットは以下のとおりです。
- parent_field_id: 'Field title'
value: 'tag_or_value_used_by_field'
child_fields:
- id: 'Field title 2'
is_required: true
これを分解すると:
parent_field_idは値をチェックするfieldvalueはチェックしているfieldの値child_fieldsは表示するフィールドのリストで、各項目には:idは表示するフィールドis_requiredは新しく表示されるフィールドが提出に必須かどうかを示す
エージェント条件
エージェント条件のバックエンド値のフォーマットは、以下の 2 つのフォーマットのいずれかです。
- parent_field_id: 'Field title'
value: 'tag_or_value_used_by_field'
child_fields:
- id: 'Field title 2'
is_required: true
required_on_statuses:
type: 'ALL_STATUSES'
- parent_field_id: 'Field title'
value: 'tag_or_value_used_by_field'
child_fields:
- id: 'Field title 2'
is_required: true
required_on_statuses:
type: 'SOME_STATUSES'
statuses:
- 'pending'
- 'hold'
- 'solved'
これを分解すると:
parent_field_idは値をチェックするfieldvalueはチェックしているfieldの値child_fieldsは表示するフィールドのリストで、各項目には:idは表示するフィールドis_requiredは新しく表示されるフィールドが何らかの方法で必須かどうかを示す
違いを決定するのは、新しいフィールドが 必須 かどうかと、どのような方法で必須かです。
すべてのステータスで必須にする場合:
- id: 'Field title 2' is_required: true required_on_statuses: type: 'ALL_STATUSES'どのステータスでも必須にしない場合(つまり必須にしない):
- id: 'Field title 2' is_required: true required_on_statuses: type: 'NO_STATUSES'特定のステータスでのみ必須にする場合:
- id: 'Field title 2' is_required: true required_on_statuses: type: 'SOME_STATUSES' statuses: - 'list' - 'of' - 'statuses'
管理者ではない者がチケットフォームを作成する
チケットフォームの作成については、Feature Request の Issue を作成してください(カスタマーサポートオペレーションチームによる手動対応が必要となるため)。
管理者ではない者がチケットフォームを編集する
チケットフォームの変更については、Feature Request の Issue を作成してください(カスタマーサポートオペレーションチームによる手動対応が必要となるため)。
管理者ではない者がチケットフォームを非アクティブ化する
チケットフォームの非アクティブ化を依頼するには、Feature Request の Issue を作成してください(カスタマーサポートオペレーションチームによる手動対応が必要となるため)。
人間が読める形式の置換
注意
- これは YAML ファイル経由でチケットフォームを作成・編集する
administratorsにのみ適用されます
現在、同期リポジトリはチケットフィールドとブランドの人間が読める形式(つまりチケットフィールドの title 属性)からの置換を実行できます。
そのため、Preferred Region for Support という値を見つけた場合、そのタイトルのチケットフィールドを特定し、その配下にあったチケットフォーム属性の必要なテキストに変換することを認識します。ブランドについても同じです(ただし name 属性を使用)。
現在のフォーム
Zendesk Global の現在のフォーム
| 内部名 | パブリック名 | 可視性 | エンタイトルメント必須? | 直接リンク |
|---|---|---|---|---|
| SaaS | Support for GitLab.com | Public | Y | Link |
| 2FA Removal | 2FA Reset | Public | Y | Link |
| SaaS Account | GitLab.com user accounts and login issues | Public | N | Link |
| Self-Managed | Support for a self-managed GitLab instance | Public | Y | Link |
| GitLab Dedicated | Support for GitLab Dedicated instances | Public | Y | Link |
| L&R | Subscription, License or Customers Portal Problems | Public | N | Link |
| Billing | Billing inquiries/refunds | Public | N | Link |
| Alliance Partners | Support for alliance partners | Public | Y | Link |
| Support Ops | Support portal related matters | Public | N | Link |
| Emergencies | File an emergency request | Public | N | Link |
| Support Internal Request | Internal | N | ||
| GitLab Incidents | Internal | N | ||
| Customer Support Internal Requests | Customer Support Internal Requests | Internal | N | Link |
| L&R Support Internal Requests | L&R Support Internal Requests | Internal | N | Link |
| CustSuppOps Support Internal Requests | CustSuppOps Support Internal Requests | Internal | N | Link |
Zendesk US Government の現在のフォーム
| 内部名 | パブリック名 | 可視性 | エンタイトルメント必須? | 直接リンク |
|---|---|---|---|---|
| Support | Technical Support Requests | Public | Y | Link |
| GitLab Dedicated | GitLab Dedicated Technical Support Requests | Public | Y | Link |
| Upgrade Assistance | Upgrade Planning Assistance Request | Public | Y | Link |
| Support Ops | Support portal related matters | Public | Y | Link |
| L&R | License, Subscription, and Renewals Request | Public | Y | Link |
| Emergency | Emergency Support Request | Public | Y | Link |
| License Issue | Internal | N | ||
| L&R Support Internal Requests | L&R Support Internal Requests | Internal | N | Link |
| CustSuppOps Support Internal Requests | CustSuppOps Support Internal Requests | Internal | N | Link |
管理者タスク
注意
- このセクションのすべての項目は、Zendesk への
Administratorレベルのアクセスが必要です。
チケットフォームを表示する
Zendesk でチケットフォームを表示するには:
- Zendesk インスタンスの管理パネルに移動
Objects and rules > Tickets > formsに移動
注意: 非アクティブのチケットフォームを表示したい場合は、Filter ボタンをクリックしてアクティブフィルターを変更する必要がある場合があります。
チケットフォームを作成する
警告
- これは対応する依頼 Issue(Feature Request、Administrative、Bug など)が存在する場合にのみ実行してください。存在しない場合は、まず作成して標準プロセスを通してから対応してください。
チケットフォームを作成するには、同期リポジトリで MR を作成する必要があります。具体的な変更内容は依頼自体によって異なります。使用できる開始テンプレートは以下のとおりです。
---
name: 'Your form name here'
previous_name: 'Your form name here'
display_name: 'Customer visible name'
raw_display_name: 'Customer visible name' # Dynamic content placeholder can be used here
active: true
position: 1 # Integer representing ticket form position
ticket_field_ids:
- 'Field title'
- 'Field title 2'
- 'Field title 3'
- 'Field title 4'
default: false # Is the form the default form for this account
in_all_brands: false # Is the form available for use in all brands on this account (should always be false)
restricted_brand_ids:
- 'Brand name'
end_user_conditions:
- parent_field_id: 'Field title'
value: 'tag_or_value_used_by_field'
child_fields:
- id: 'Field title 2'
is_required: true
- id: 'Field title 3'
is_required: false
agent_conditions:
- parent_field_id: 'Field title'
value: 'tag_or_value_used_by_field'
child_fields:
- id: 'Field title 2'
is_required: true
required_on_statuses:
type: 'ALL_STATUSES'
- id: 'Field title 3'
is_required: true
required_on_statuses:
type: 'NO_STATUSES'
- id: 'Field title 4'
is_required: true
required_on_statuses:
type: 'SOME_STATUSES'
statuses:
- 'pending'
- 'hold'
- 'solved'
チケットフォームはゼロから作成するのは非常に複雑な場合があるため、疑わしい場合は同期リポジトリの既存のものを実用的な例として使用してください。
ピアによるレビューと承認後、MR をマージできます。次のデプロイ時に、Zendesk に同期されます。
チケットフォームを編集する
警告
- これは対応する依頼 Issue(Feature Request、Administrative、Bug など)が存在する場合にのみ実行してください。存在しない場合は、まず作成して標準プロセスを通してから対応してください。
チケットフォームを編集するには、同期リポジトリで MR を作成する必要があります。具体的な変更内容は依頼自体によって異なります。
ピアによるレビューと承認後、MR をマージできます。次のデプロイ時に、Zendesk に同期されます。
チケットフォームの名前を変更する
チケットフォームのタイトルを変更する必要がある場合、現在の値を previous_name 属性にコピーしてから name 属性を変更します。これにより、同期は更新対象のチケットフォームを引き続き特定できます。
チケットフォームを非アクティブ化する
警告
- これは対応する依頼 Issue(Feature Request、Administrative、Bug など)が存在する場合にのみ実行してください。存在しない場合は、まず作成して標準プロセスを通してから対応してください。
チケットフォームを非アクティブ化するには、同期リポジトリで MR を作成する必要があります。この MR では、対応するチケットフォームの YAML ファイルに対して以下を行います。
ファイルを
activeからinactiveパスに移動active属性の値をfalseに変更ticket_field_idsの値を以下に変更:- 'Status' - 'Group' - 'Assignee' - 'Ticket status' - 'Subject' - 'Description'end_user_conditionsの値を空の配列(つまり[])に変更agent_conditionsの値を空の配列(つまり[])に変更
ピアによるレビューと承認後、MR をマージできます。次のデプロイ時に、Zendesk に同期されます。
チケットフォームを削除する
警告
- 非アクティブ化されているチケットフォームのみ削除できます。
- これは対応する依頼 Issue(Feature Request、Administrative、Bug など)が存在する場合にのみ実行してください。存在しない場合は、まず作成して標準プロセスを通してから対応してください。
同期リポジトリは削除を実行しないため、これは Zendesk 自体経由で行う必要があります。
チケットフォームを削除するには:
- Zendesk インスタンスの管理パネルに移動
Objects and rules > Tickets > formsに移動- フィルターを
Inactiveに変更 - 削除するチケットフォームを見つけてその名前をクリック
- 縦の 3 つの点(チケットフォームデータの右上)をクリック
DeleteをクリックDeleteをクリックして変更を送信
例外デプロイを実施する
警告
- これはチケットフォームとチケットフィールドの両方に適用されます
チケットフォームの例外デプロイを実施するには、対象のチケットフォーム同期プロジェクトに移動し、スケジュールパイプラインのページに移動して、同期項目の再生ボタンをクリックします。これによりチケットフォームの同期ジョブがトリガーされます。
よくある問題とトラブルシューティング
マージ後にチケットフォームの変更が見えない
チケットフォームは Standard デプロイタイプに従うため、通常のデプロイサイクル中(または例外デプロイが実施された場合)にのみデプロイされます。
bfd74782)