-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
first draft. still need to add a few details and screenshots, but thi…
…s captures the outline and highlevel
- Loading branch information
Paul Philion
committed
May 7, 2024
1 parent
87ef398
commit 3d4d437
Showing
1 changed file
with
136 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,104 +3,78 @@ | |
Netbot provides a series of slash-commands to support tickets and users in Redmine. | ||
|
||
The commands are grouped: | ||
* `/scn` provides commands to manages users and organization in Redmine | ||
* `/tickets` provides ticket management and queries | ||
* `/scn` provides commands to manages users and organization in Redmine | ||
|
||
## Use Cases | ||
|
||
## SCN Commands | ||
|
||
Any SCN commands that manage users allow for "self-management", and come in parallel forms: | ||
* `/scn <command> <options>` and | ||
* `/scn <command> <options> @member` | ||
### Create A New Ticket | ||
|
||
The first form assumes the @member is the person executing the command. The second form assumes the invoker is an established Redmine user with admin priviledges, and is executing the command on behalf of the member. | ||
To create a new ticket to capture | ||
|
||
For example, if a normal user @bob was to invoke `/scn join nu-team` it would result in Bob joining nu-team in Redmine. If an @admin user invoked `/scn join nu-team @bob` it would also result in Bob joining the team. | ||
For example, to create a new ticket to "Change the water filter": | ||
|
||
### `/scn add` - Add a Discord user to Redmine | ||
/ticket new Change the water filter | ||
|
||
This command creates a linkage between a Discord user ID and a Redmine user ID. Any commands issued by a links Discord user will be executed on Redmine as if they were performed by that user. | ||
[screen shot] | ||
|
||
To add you own Discord user, use: | ||
``` | ||
/scn add [redmine-login] | ||
``` | ||
This will create a new ticket with the title "Change the water filter", and create a new Discord thread to manage discussion of the ticket. | ||
|
||
If the user [redmine-login] exists in Redmine, the Discord member invoking the command will be associated with it. | ||
-> creating in specific channels | ||
|
||
If the user [redmine-login] does not exist in Redmine, a modal dialog will popup in Discord to create a new user, requesting first name, last name and email. A new Redmine user will be created with these parameters and linked to the invoking Discord user. | ||
-> mappings for teams | ||
|
||
An administrator can also use `/scn add` to add other Discord users to Redmine: | ||
``` | ||
/scn add [redmine-login] @member | ||
``` | ||
|
||
This will behave as above, except that all operations will be performed as if by @member. | ||
### Find Tickets | ||
|
||
### `/scn teams` - List teams | ||
#### Finding *Your* Tickets | ||
Query, based on "me", teams, etc. | ||
|
||
To list all the teams, and their members, configured on Redmine: | ||
``` | ||
/scn teams | ||
``` | ||
/ticket query me | ||
|
||
To display only a single team `teamname` | ||
``` | ||
/scn teams teamname | ||
``` | ||
[screen shot] | ||
|
||
### `/scn join` - Join a team | ||
This will offer a list of tickets, based on the teams you are part of and tickets that are assigned to you directly. | ||
|
||
To join the team `teamname` yourself: | ||
``` | ||
/scn join teamname | ||
``` | ||
#### Finding Other Tickets | ||
Query, based on a specific term related to the tickets you're interested in, for example "water" | ||
|
||
An admin can add other people to teams, for example adding @blanche to `teamname`: | ||
``` | ||
/scn join teamname @blanche | ||
``` | ||
/ticket query water | ||
|
||
### `/scn leave` - Leave a team | ||
[screen shot] | ||
|
||
To leave team `teamname`: | ||
``` | ||
/scn leave teamname | ||
``` | ||
This will return an ticket related that contain the term "water". | ||
|
||
An admin can remove people from teams: | ||
``` | ||
/scn leave teamname @blanche | ||
``` | ||
|
||
### `/scn block` - Block a user | ||
### Work On A Ticket | ||
|
||
This command is designed to manage external users, not Discord users. | ||
Once you've selected a ticket to work on, assign it to yourself with: | ||
|
||
SCN Redmine supports a "block" function that will reject (but still record) all tickets from a specific email. | ||
/ticket assign 42 | ||
|
||
This command exposes the "block" function in Discord. To block the user with email `[email protected]`, use: | ||
``` | ||
/scn block [email protected] | ||
``` | ||
This will assign ticket ID 42 to you (the Discord user). | ||
|
||
### `/scn unblock` - Unblock a user | ||
When you're ready to start work: | ||
|
||
This command is designed to manage external users, not Discord users. | ||
/ticket progress 42 | ||
|
||
To unblock a user with email [email protected]: | ||
``` | ||
/scn unblock [email protected] | ||
``` | ||
This will mark ticket "42" in-progress. | ||
|
||
> [!NOTE] | ||
> This will remove the user from the blocked team, but will not "unreject" the tickets created by that email. New email will create normal tickets. | ||
Assuming this ticket was created via the Discord bot, there will be an associated Discord thread: "Ticket 42: Change the water filter". Any comments in this thread will be reflected back to the redmine ticket, so it can be easy way to update progress especially with the Discord app on your smartphone. | ||
|
||
### `/scn blocked` - List the blocked users | ||
In this example, you might might updates like: | ||
* Confirmed the filter model we need and that we have one on hand. | ||
* Starting install. Water will be off for a few minutes. | ||
* Install complete. Water is running and new filter is operating as expecting. | ||
|
||
List the blocked users. | ||
Once the work is done and everything checks out, resolve the ticket: | ||
|
||
Should be the same as `/scn teams blocked`. | ||
/ticket resolve 42 | ||
|
||
This will mark the ticket "resolved", so everyone knows the work is taken care of. | ||
|
||
NOTE: All the /ticket commands for one ticket could be derived from the threat name. | ||
|
||
|
||
## Ticket Commands | ||
|
@@ -115,6 +89,7 @@ The `/ticket` slash command is used to information about tickets in Redmine. A n | |
* progress | ||
* resolve | ||
|
||
|
||
### `/ticket query me` - Query my tickets | ||
|
||
The the list of tickets for *me* (you, the reader) to work on. | ||
|
@@ -204,3 +179,99 @@ Mark ticket *ticket-id* resolved. | |
/ticket thread 787 | ||
``` | ||
will mark ticket 787 resolved. Well done! | ||
|
||
|
||
## SCN Commands | ||
|
||
Any SCN commands that manage users allow for "self-management", and come in parallel forms: | ||
* `/scn <command> <options>` and | ||
* `/scn <command> <options> @member` | ||
|
||
The first form assumes the @member is the person executing the command. The second form assumes the invoker is an established Redmine user with admin priviledges, and is executing the command on behalf of the member. | ||
|
||
For example, if a normal user @bob was to invoke `/scn join nu-team` it would result in Bob joining nu-team in Redmine. If an @admin user invoked `/scn join nu-team @bob` it would also result in Bob joining the team. | ||
|
||
### `/scn add` - Add a Discord user to Redmine | ||
|
||
This command creates a linkage between a Discord user ID and a Redmine user ID. Any commands issued by a links Discord user will be executed on Redmine as if they were performed by that user. | ||
|
||
To add you own Discord user, use: | ||
``` | ||
/scn add [redmine-login] | ||
``` | ||
|
||
If the user [redmine-login] exists in Redmine, the Discord member invoking the command will be associated with it. | ||
|
||
If the user [redmine-login] does not exist in Redmine, a modal dialog will popup in Discord to create a new user, requesting first name, last name and email. A new Redmine user will be created with these parameters and linked to the invoking Discord user. | ||
|
||
An administrator can also use `/scn add` to add other Discord users to Redmine: | ||
``` | ||
/scn add [redmine-login] @member | ||
``` | ||
|
||
This will behave as above, except that all operations will be performed as if by @member. | ||
|
||
### `/scn teams` - List teams | ||
|
||
To list all the teams, and their members, configured on Redmine: | ||
``` | ||
/scn teams | ||
``` | ||
|
||
To display only a single team `teamname` | ||
``` | ||
/scn teams teamname | ||
``` | ||
|
||
### `/scn join` - Join a team | ||
|
||
To join the team `teamname` yourself: | ||
``` | ||
/scn join teamname | ||
``` | ||
|
||
An admin can add other people to teams, for example adding @blanche to `teamname`: | ||
``` | ||
/scn join teamname @blanche | ||
``` | ||
|
||
### `/scn leave` - Leave a team | ||
|
||
To leave team `teamname`: | ||
``` | ||
/scn leave teamname | ||
``` | ||
|
||
An admin can remove people from teams: | ||
``` | ||
/scn leave teamname @blanche | ||
``` | ||
|
||
### `/scn block` - Block a user | ||
|
||
This command is designed to manage external users, not Discord users. | ||
|
||
SCN Redmine supports a "block" function that will reject (but still record) all tickets from a specific email. | ||
|
||
This command exposes the "block" function in Discord. To block the user with email `[email protected]`, use: | ||
``` | ||
/scn block [email protected] | ||
``` | ||
|
||
### `/scn unblock` - Unblock a user | ||
|
||
This command is designed to manage external users, not Discord users. | ||
|
||
To unblock a user with email [email protected]: | ||
``` | ||
/scn unblock [email protected] | ||
``` | ||
|
||
> [!NOTE] | ||
> This will remove the user from the blocked team, but will not "unreject" the tickets created by that email. New email will create normal tickets. | ||
### `/scn blocked` - List the blocked users | ||
|
||
List the blocked users. | ||
|
||
Should be the same as `/scn teams blocked`. |