Tickets Plugin 🎟

リポジトリ

概要

このプラグインは、Discourse にチケットシステムを追加します。タグ付け機能の有効化が必要であり、Assign プラグイン と併用すると最も効果的です。

これは @tobiaseigen元の仕様に基づいており、@tobiaseigen と素晴らしい Ruby for Good チーム とのコラボレーションによって構築されました。これは Namati と Discourse コミュニティの両方の利益のために開発されました。

注意事項

  • プラグインをインストールすると、3 つの新しいタググループ(tickets_prioritytickets_reasontickets_status)が追加されます。これらのグループにタグを追加するには(/tag_groups で)、各チケットタイプにタグを割り当ててください。

  • チケットは「トピック編集」UI で追加されます(以下のスクリーンショットを参照)。

  • API を使用して、is_ticket と各チケットタグの tags[] を指定することで、チケット付きのトピックや PM を作成できます(詳細はこちら)。

  • 確認が必要なサイト設定が 4 つあります。迅速にアクセスするには、インスタンスの [管理] > [設定] に移動し、tickets で検索してください。

    • tickets enabled: トピックでチケットを有効にします(タグ付けの有効化が必要です)。

    • tickets icon: チケットアイコンの Font Awesome クラスを設定します。

    • tickets include group: チケット付きのプライベートメッセージに含めるデフォルトのグループ(グローバル・リーガル・エンパワーメント・ネットワークフォーラムでは helpdesk グループです)。

    • tickets redirect assigned: ユーザーのプロフィール内の「割り当てられたトピック」ルートから、自分に割り当てられたチケットでフィルタリングされたチケットダッシュボードにリダイレクトします。

    • PM でチケットを使用する場合は、allow staff to tag pms を有効にする必要があります。

チケットダッシュボード

トピック

タイトル近くの鉛筆アイコンをクリックしてトピックメタデータを編集すると、以下のように表示されます。

トピック一覧

0fc9e08ad8fcf222fdc4c5f839162559363419ad

作業リスト

このリストには、以下の議論や @tobiaseigen とグローバル・リーガル・エンパワーメント・ネットワークの同僚によるこのプラグインの実際の使用から寄せられたバグ報告と機能リクエストがまとめられています。@angus は、https://discourse.angusmcleod.com.au/c/work/l/agenda を通じて定期的にこのリストの解消に取り組む時間を確保することに合意していますが、いつでもサポートを歓迎します!:seedling:

バグ:

  1. 大文字と小文字が混在するユーザー名の割り当てられたチケットへのリンクが機能しないようです。
  2. 印刷ビューにチケットタグが表示される。チケットシステムへのアクセス権がない場合でも同様です。

追加したい機能:

  1. チケットの対象となるユーザー(またはユーザー)を示す機能の追加。
  2. チケットダッシュボードに、チケット作成日、作成日、最終活動日のカラムを追加。
  3. チケットダッシュボードの :mag: 検索をフックして、キーワードでチケットを検索できるようにする。
  4. チケットダッシュボードのフィルタリング/ソート/ページネーションの刷新。
  5. チケットダッシュボードにデフォルトのフィルタとオプションを追加し、自分に割り当てられたチケットや未解決のチケットのみを素早く表示できるようにする。
  6. チケットシステム全体の健全性(解決までの時間、未解決のチケットなど)を監視する機能の追加。
  7. (優先度低)/admin/plugins に「設定」ボタンを追加(詳細)。
  8. (優先度低)チケットシステムとチケットタググループの名前を変更できるようにする(@GeertClaes よりリクエスト)。

優先度が低い/困難/追加されない可能性が高いリクエストされた機能:

  • トピックタイトルの編集だけでなく、トピックメニューの下部にも TICKET オプションを追加する。
  • ユーザーがログインするたびに、自分に割り当てられた未解決のチケット数通知する。
  • 自動システムメッセージは常にチケットとして「低」「待機」マークをつける。
  • チケット付きの PM はデフォルトでグループメッセージアーカイブに送信され、グループメッセージの受信トレイが混雑しないようにする。
  • 通常、チケットを作成する際にステータスタグを #waiting に設定します。誰かが返信した際にこのステータスを #underway に変更できる方法があれば非常に助かります。もしできない場合、チケットダッシュボードにアクティビティが表示されることを頼りに、誰かが返信して対応が必要であることを確認できます。
  • 透明性の観点から、assign の動作にならい、チケットタグが追加または変更された際にウィスパーで表示すると興味深いでしょう。
  • フラグ付けインターフェースでは、モデレーターがスパム投稿を「引き受ける」ことが可能です。これはチケットのモデルとして参考にできるかもしれません。これにより処理が迅速になります。現在のフローは「割り当て解除」→「割り当て」ですが、これが改善されます。

役立つ他の Discourse 機能

  • チケットの優先度、ステータス、理由、グループ、担当者(UI 上にない場合はコマンドラインクエリ?)をまとめて選択して更新する機能。
「いいね!」 77
Discourse Mingle
Kanban Board Overlay for Discourse Topics
Assign topics or messages when created via API
Customize hamburger menu to add switch what switches theme and applies predefiend filter
2018: The Year in Review
Replacing Slack by Discourse
How do you create a table of content like this one?
Feature idea: allow groups to send messages, or include a specific group in all messages to specific username
`enable_forwarded_emails` doesn't behave like conventional email forwarding
Best "Support" Option Other Than Email?
Adding 'in progress' states to Voting topics
Using discourse as a community ticket system
Relevant reports for Discourse as a ticket system?
[Error] Can't create a tag on post due to Tickets plugin
Feedback form / reporting bugs
Allowing topic creation through direct delivery email in makes my forum vulnerable to spammers
Different themes per category?
Unable to View Edit History - Continuous Loading Issue
View tag changes
Reply-via-email to another address
What problems do you have when using Discourse?
(Superseded) Add a custom fontawesome icon and color to your tag
Replacing Slack by Discourse
Moderating the forum
Follow up "open" tickets
Escalating and Deescalating w a Ticket System
Advise on how to organize my forum categories and tags
Comment on a question instead of answering it
Multiple monthly notification for assigned topics
Regarding possibility to use Discourse as an alternative to JIRA or Zendesk
Settings in Discourse
Issue Tracker for Discourse

Awesome! So glad to see this ticket plugin become a reality. Angus has done some terrific work here, and has been very patient with my feature requests and feedback. He deserves a medal. :1st_place_medal:

I hope more communities decide to use this plugin, and help to make it even better by contributing use cases, feedback and code. I am also hoping to see some improvements to other discourse features to make tickets even more awesome.

We’ve been using it on our site for a few weeks already and it works well, though I have yet to properly roll it out to my team. As that happens I’ll be able to give more feedback on what’s working and what needs improvements from our point of view.

For right now, here’s my wish list:

  • improved functionality on topic and message lists for selecting and bulk updating, to e.g. change category, add/remove tags, create ticket, mark solved, open/close, reassign, change priority, change status, etc. (discussed elsewhere)
  • solved plugin: Allow staff to select OP to be solution, if no replies.
  • solved plugin: Prevent staff from selecting whispered replies as solution, as risks exposing private conversation. (discussed elsewhere)
  • “ticket system heath” statistics, e.g. number of tickets by status, time to completion, ratio of tickets by status, charts showing above over time. Not sure where this should live - is the dashboard extendable through plugins?
  • automatic ticket updates when reply is sent (e.g. change status tag to waiting/underway, add reminder for assignee with interval based on priority, etc)
  • automatic assignee based on ticket reason
  • automatic tickets based on group or group email
  • automatic solved/unsolved based on ticket status
  • default filters and options on dashboard to more quickly see only tickets assigned to me, or only open tickets etc.
  • not directly related but a common ticket task for our helpdesk: UI method for merging users, with ability to choose which email address is primary and which is secondary. (discussed elsewhere)

In case you’re wondering, here are some notes on the api method we use for creating tickets. We use it to create a new ticket for each new member as they join, for the purposes of onboarding and welcoming them, and when reaching out to members for feedback when they download resources from our resource library. We also use it when inviting lists of people (e.g. event attendees) to join the network, instead of email.

  • is_ticket = 1
  • tags[] = tag1 each on a separate line, use ticket tags and any additional tags to help find messages later (note square brackets - required!)
  • target_usernames = should always contain helpdesk group accessible to the staff in charge of ticket follow-up. Can contain an email address instead of username to create staged users (handy for sending bulk invites and making them tickets for follow-up)
「いいね!」 12

Agreed I should have started with that :slight_smile: This looks very promising, and your wish list contains several things that I’d probably get to if we get to use this properly here

「いいね!」 3

I am super excited to see this. I currently have my own custom made (mock) ticketing system. It basically converts any PM into a ticket upon user request, adds a ticket number, organizes all tickets under a custom appointed user (@TICKETS) for easier tracking, and notifies admins. We do tagging/assign via discourse options. But this is more elaborate, if you keep developing this I will jump in and try it out :smiley:

「いいね!」 1

Interesting! It sounds like you’ve got a “support” use case there, letting a user create a ticket. This system was designed more for internal use for managing tasks and assignments. @tobiaseigen What do you think about allowing users to create tickets?

「いいね!」 3

Our site is a marketplace. Tickets are used between users for managing transactions. Basically, user A strikes a deal with user B via PM. When ready, they click a button converting the PM into a ticket. The PM is assigned a ticket number, and admins are notified. The first one to assign it to him self gets it and manages the transaction.

「いいね!」 2

Do you mean allow users to see and use the tickets interface and see ticket tags on tickets? And see the tickets dashboard?

I can see a use case for it, and also can see it maybe being useful in our community. Assigned and solved is already visible to users. Letting them see the ticket details about their tickets is potentially interesting. But I don’t see the need to let them change ticket tags.

If you just mean letting users create tickets but then not see the ticket interface, ticket tags and ticket dashboard, maybe there is a use case for this too. The API can already make tickets while adding messages, so an external form could do it. Maybe a new group setting could enable auto tickets with default ticket status, priority and reason. E.g. include @tickets and the message is made into a ticket.

「いいね!」 3

No. The tickets are basically PM’s with an edited title (the includes the ticket number). The tickets are accessible from users inbox.

Interesting. Can you share a screenshot of what your tickets look like? Generally, if you have screenshots that illustrate what you are doing I think that would help us to understand your need better and if/how it fits in with this plugin.

Ticket number: I guess the ticket number could just be the topic ID. Displaying that would be easy, I suspect. I also agree displaying a ticket number would be helpful, as well as in any email notifications about the ticket in the subject line etc. The ability to search by ticket number on the tickets dashboard might also be helpful. But again this is for a different use case than yours… more of a helpdesk need for quickly finding a ticket, for example when talking on the phone with someone about their ticket.

This already works - messages that are tickets appear in user inboxes. They are identifiable with tags in the message list. So if users had access to tickets, they’d be able to see the ticket tags. They could also click through to the tickets dashboard, to see only their tickets, which I think would also be handy for them.

@angus I remember when we made a strategic decision to put tickets in the /admin/tickets route instead of /tickets. I guess if giving users access to tickets were to become a thing, we’d want to move it.

「いいね!」 1

Here are all tickets organized for staff under an account of our choosing, in this case, @CHECKOUT

Here is what the ticket looks like inside. Included in the screenshot it an automated message from @CHECKOUT to the users when they start a ticket.

「いいね!」 1

It’s kind of a crude system, but it works :smiley: However, once (if) traffic picks up we will need a more refined ticket system.

We’re talking reminders/performance reports/sorting/etc. Basically, the basics of a good ticketing system.

「いいね!」 1

Much of what you are describing is available through this plugin or could be. I think @angus would welcome your contributions to this plugin. I know one area we want to prioritize next is performance reports (I was calling it ticket system health) which is described above somewhere.

Another is functionality for bulk updating tickets from filtered lists. This is still fairly nascent in discourse. But as the number of tickets grows it will be needed.

「いいね!」 1

I mainly need this feature to award admins for their work, vs. using it to measure actual response times/etc. (although that is useful info, also). Our site pools all the income and splits the profit among admins. Obviously, who works more gets a bigger share.

「いいね!」 3

Thanks to the great work of @mbcahyono we’ve upgraded our (mock) ticket plugin. It now features site-wide notifications for open tickets, and a dedicated ticket area for ticket holders.

「いいね!」 3

Nice! I like the use of a notification about open tickets. Seems to me this should be a proper discourse notification though. Also, it would be handy to have a quick link to display only open tickets on the dashboard.

We also have it as a notification, but we’ve encountered “oh I must of missed it” and “it got lost with other notifications” responses from users, who neglected open tickets because of those reasons. So, that’s why we have a site-wide banner. We do three way tickets, so to keep the other party waiting to a minimum, we remind users about their tickets in a bold way :smiley:

「いいね!」 2

Is there a way to share that modification? I would really love to have it within my customer support system running on Discourse. :slight_smile:

「いいね!」 3

I like this feature. I will use it when building my own Discourse. :slight_smile:

The support system I have isn’t the one listed here, it’s a custom made plugin just for my website, so there is no modification to share.

I’m not sure if I’m missing something, but this doesn’t seem to be working for me, I’ll list what isn’t working right for me.

  • The redirect to the ticket dashboard doesn’t seem to follow caps cases; it takes me to admin/tickets?filters=assigned%3Akankuro instead of admin/tickets?filters=assigned%3AKankuro which results in no tickets being shown.
  • The tags don’t stick for any of the fields after refreshing or changing pages.
  • I’m not getting any sort of PM or notification to tell when there is a new ticket, not sure if this is intentional or if there is supposed to be some sort of alert to let people know when they have a new ticket.

All I’ve done is installed the plugin, enabled it, added tags to the tag groups, and created a new group with all mods called “helpdesk” and added that to tickets include group.

Any ideas what might be going wrong here?

「いいね!」 4