tylerconlee / slab Goto Github PK
View Code? Open in Web Editor NEWSlack bot monitoring upcoming SLA breaches in Zendesk
License: GNU General Public License v3.0
Slack bot monitoring upcoming SLA breaches in Zendesk
License: GNU General Public License v3.0
Make the ticket number clickable in the initial message and leave an attachment with the ticket title/link
To avoid notification overload, but also keep the tool business agnostic, add a bool for if a given level should send channel notifications. If false, all @
mentions would be removed.
Using the Slack API (https://api.slack.com/docs/message-attachments), colors can be set for attachments, meaning they can be used to color coordinate specific notification types and indicate urgency
In order to know which ticket is which, a triager alert should have the ticket number visible.
With Slack's interactive messages, SLAB can keep track of who acknowledges the ticket.
To avoid port collision, add a configuration option for the port that the app runs on, allowing multiple instances of the app to run on a given server.
Several other apps, including other Slack apps, could make use of the upcoming SLA notifications. Creating an API where these other apps can access that data would be incredibly helpful.
On the More Info screen, previous ticket CSATs can be displayed to give some context as to the attitude of the customer towards the support given. With a history of how the customer responds, an agent can then tailor the messaging even further to ensure the customer gets the best service possible.
Tom requested new ticket alerts like the current Zendesk/Slack integration
Right now, the readme is written for an older version that does not have all of the SLA configuration documented. Add in the documentation, either in Readme.md or in the docs/ folder.
In order to know when a message was acknowledged, a timestamp should be displayed at the end of the ack message
Instead of the acknowledge for @slab set
, it should just automatically set to the requestor, as there isn't a reason for a verification at that point.
Similar to #48, but specific to the Twilio API.
The readme should contain everything needed to get started with Slab, and it currently doesn't. The information in the wiki is likely out of date, so moving everything back into the readme to keep it updated regularly is likely the best way to move forward.
For new users, @slab help
would be an incredibly useful command that lists out the commands and a short description of what they do.
To prevent a single point of failure, an email should be available as a plugin.
In order for app distribution to work on Slack's marketplace, the app has to contain an oauth redirect URL. Adding a default one in the router should allow for the add-to-slack button.
The organization that the ticket belongs to would be helpful for additional context on the ticket seen in the SLA notification.
Due to potential security implications, the dropdown for users on the triage mode should be swapped out with automatically assigning triager to the person who requested @slab set.
When @slab help
is ran, the user ID is shown instead of the username for the current triager.
Things like version should be accessible through the command line slab -v
or slab --version
. Using os.Flags
, shouldn't be too complex.
SLAB should update the channel that it monitors to show who is currently set as triager and maybe the connection status of Slack and Zendesk.
time="2018-04-23T13:38:54Z" level=error msg="Error reaching Zendesk" error="Get https://circleci.zendesk.com/api/v2/incremental/tickets.json?include=slas&start_time=1524058674: net/http: request canceled (Client.Timeout exceeded while awaiting headers)" module=zendesk
After this issue, Slab attempts to parse data from that call. Because there's no data, a segfault occurs. It shouldn't.
SLAB crashes if the SLA breach time is nil, or the index for the SLA slice is nil. Add in some additional checking to verify that exists before attempting to manipulate that data.
panic: runtime error: index out of range
goroutine 1 [running]:
github.com/tylerconlee/slab/sla.GetTimeRemaining(0x66e7, 0xc4201f7590, 0xe, 0x84d7c8, 0x0, 0x0, 0xc42032bf00, 0x2, 0x4, 0x6e307b, ...)
/Users/tylerconlee/Repos/Go/src/github.com/tylerconlee/slab/sla/analyzer.go:28 +0x268
github.com/tylerconlee/slab/sla.UpdateCache(0x66e7, 0xc4201f7590, 0xe, 0x84d7c8, 0x0, 0x0, 0xc42032bf00, 0x2, 0x4, 0x6e307b, ...)
/Users/tylerconlee/Repos/Go/src/github.com/tylerconlee/slab/sla/analyzer.go:72 +0x5a
main.RunTimer(0x8bb2c97000)
/Users/tylerconlee/Repos/Go/src/github.com/tylerconlee/slab/timer.go:25 +0x3d7
main.main()
/Users/tylerconlee/Repos/Go/src/github.com/tylerconlee/slab/main.go:22 +0x1dc
Instead of having two separate bots, SLAB can be used as an overall support Slack bot, rather than just an SLA monitor.
This would allow notifications for SLAB to be set to just the person who is listed as @oncall, or to the channel as a whole. It would also make maintenance a whole lot easier.
Unset should set the Triager role back to the user ID of the bot.
Mentioned in #23, with the status page available at localhost:8081
, the metadata displayed there can be expanded upon to show the status of connections to Zendesk and Slack, what channel is being monitored, and when the last loop of Zendesk tickets was analyzed.
To keep everything consolidated in one area, a setting should be created to allow triage alerts to be sent to the main Slack channel instead of to the listed Triager.
Notifications through Slack may be just one avenue for the monitor. Slack could be the primary target for notifications, but services like Twilio, Pagerduty, etc could be used as a supplement.
For the triager to be effective, new tickets submitted to Zendesk have to be visible to the triager. Slab should monitor when new tickets are submitted and update either the Slack channel, or a direct message to the person who is assigned as triager.
20:00:14.344 zendesk ▶ CRIT Get https://***.zendesk.com/api/v2/incremental/tickets.json?include=slas&start_time=1511294407: EOF
github.com/tylerconlee/slab/zendesk makeRequest ▶ api.go:115
Handle EOF by waiting until next loop cycle and redoing the API call.
The ticket endpoint in Zendesk has a group assignee ID, so I could rewrite the API all to filter based off of configurable group IDs, or leave blank for all tickets. Once filtered, split the channels that the notifications go to. Rewrite to allow tickets assigned to a specific group get routed to a specific channel that would allow other teams to get notifications for their tickets individually
To highlight the type of ticket in Slack, wrap the ticket type in bold tags to emphasize it.
Show connection status of Zendesk and Slack, last time loop was completed for tickets, who is currently set as triager, etc.
Instead of requiring a config.toml to start up, if a config.toml
isn't present, Slab should start a setup wizard.
The new start up command would be:
./slab -s=<SLACK-TOKEN> -c=<SLACK-CHANNEL-ID>
The setup would then be ran by DMing the Slab app with @slab setup
Instead of having a single routine grab Zendesk data, loop through all of it, then loop through previous sent ticket notifications and then send notifications, this can be split into a more streamlined approach, where as the loop processes Zendesk data on each ticket, Slab analyzes the ticket and determines if another notification is necessary. This cuts down on the amount of processing time by allowing Slab to handle the notification right then and there, instead of going through 3 more loops before sending the notification.
Add @slab state, which DMs the user a list of the Sent notifications slice
acknowledged this ticket at 1521639232.907528
Make SLAB a two-way street, allowing users to query SLAB for version, uptime and other metadata
Currently, Slab fatally errors out if Zendesk goes down. Slab should stay running, and log an error message, rather than fatally crashing.
The more info button would allow for additional context provided in the Slack message for an SLA notification, including the requester, if that requester has other open tickets, what their average CSAT scores are, if applicable, and if the response in question is from when the ticket opened, or somewhere down the line.
When @slab twilio enable
or @slab twilio disable
is called, the status of Twilio does not change.
Within the logs currently, the time is displayed, but not the date, making it difficult to determine when an issue happened. Add the date into the log format.
SLAB should respond to an @bot status
with server metadata from #25.
Most of Slab's default messages are ...
. This should either be blank or a more descriptive message, as the message right now isn't helpful
Using the top 3 SLA levels outlined in the config, send an alert on every response to a ticket that is tagged with a matching SLA tag.
Slack has the ability to show an author for an attachment. For SLA messages or for any other message where a ticket is displayed, the author should be set
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.