This was originally posted here by myself: https://thwack.solarwinds.com/thread/114863
Solarwinds WebHelpDesk is very powerful, but for those who use Slack as communication and alerting platform, there still is no integration.
We as a IT team struggled a bit keeping up with the immense flow of emails and filtering them out as well as being really pro-active on new tickets (first response time) as well as realizing we got new tickets assigned or a user / client wrote a new note.
To overcome those challenges and due to the fact that we all have Slack on all our systems from workstation to smartphone, we decided to integrate this. Since I spend a bit of time on those scripts and thought they might be helpful for others as well, I am sharing them here now and explain on how to implement this.
Please note: Those scripts are a version 1 – I am very aware that they could be further cleaned up and simplified.. but I wanted to share them already… bugs are possible as well…
Requirements:
- You need Solarwinds WebHelpDesk
- The scripts use the field “Pager” in “Techs” for the Slack-Username – put all the Slack-Usernames of your Techs in this field – no @ – just the name
- The scripts assumes you are executing it directly on the server that has the PostgreSQL database installed
- The scripts assumes the database user/pw is defaulted to WHD
How to implement them:
- Create the 5x files as show further below in e.g. “C:\Scripts\WHD” on the PostresSQL server
- Create a new Windows Task that starts the WebHelpDesk_SlackAlerts.cmd file every 30 minutes
- this file actually executes the PowerShell Scripts – it is just a work-around – it bypasses any PowerShell Script execution restritions
- download the PostgesSQL ODBC drivers from the following link – assuming you haven’t installed them on the system already
- Edit the PRTGSlackWebHookNotificationPSv2.ps1
- This file was originally from our PRTG installation and modified there already. It was further modified for WHD alerts – I do not claim to have invented this script nor do I want to abuse any copyrights on it! source: www.paessler.com for monitoring solutions
- Line 41: adjust the URL for the FavIcon.ico to your external WebHelpDesk URL
- Create a new WebHook-Application in your Slack Account
- Incoming Webhooks | Slack
- Text link: https://api.slack.com/incoming-webhooks
- You will need the WebHook URL for the scripts now
- Edit the CheckNewTicketsFirstResponse.ps1
- This script posts to a generic channel in our case – we want to see new tickets as a group – assuming assigned tech is currently unavailable and couldn’t touch it…
- adjust the PostgresSQL settings – if needed – IP / Port / User etc…
- Line 7 – ticket_age_minutes = 88
- this is a minute value – we alert on a Slack-Group “helpdesk” if there is a ticket older than 88 minutes – we fire the script every 30 minutes, so it could be up to two hours old..
- Line 9 – $channel – adjust this to the Slack-Group channel you want to use for those alerts
- Line 77 – adjust the URL to your external WebHelpdesk URL
- Line 99 – adjust the Link to your own WebHook URL
- Edit the CheckTicketAssigned.ps1
- This will send the message to the Tech directly through the SlackBot channel – only he will see it
- This will only fire if the Tech did not yet put a Tech-Note in the ticket after it was assigned to him
- adjust the PostgresSQL settings – if needed – IP / Port / User etc…
- Line 7 – entry_age_minutes = 32
- this is a minute value – we run the scripts every 30 minutes – the alert due to some variable time can not be older than 32 minutes by default…
- Line 74 – adjust the URL to your external WebHelpdesk URL
- Line 97 – adjust the Link to your own WebHook URL
- Edit the CheckTicketNewClientNote.ps1
- This will send the message to the Tech directly through the SlackBot channel – only he will see it
- This will only fire if the Tech did not yet put a Tech-Note in the ticket after the client / user did leave a comment or note
- adjust the PostgresSQL settings – if needed – IP / Port / User etc…
- Line 7 – entry_age_minutes = 32
- this is a minute value – we run the scripts every 30 minutes – the alert due to some variable time can not be older than 32 minutes by default…
- Line 74 – adjust the URL to your external WebHelpdesk URL
- Line 97 – adjust the Link to your own WebHook URL
After that you should be all set.
We have further integration in to PRTG while monitoring the database for “new tickets older than 120 minutes” and looking for the logfile “SlackLogErrorDetails.txt” indicating that a Slack notification did not go through by the script – most likely due to special characters that the scripts already should take care off, but in case it happens again this file would appear. You can integrate that as well with your monitoring system, but this is beyond the scope of the simple notifications.
Other logfiles show just what was send out and indicate that everything is working well.
Click here to download the scripts archive WebHelpdeskSlackFiles.zip