Giter Site home page Giter Site logo

atslack-notify's Introduction

Note: New version is a work in progress (fresh start with more customization)

ATSlack-Notify

ATSlack Ticket Notifications (Sends New Ticket Notifications to Slack). I have limited knowledge of writing these things, this is just about as far as I can take it. Hopefully someone else can add fancy stuff like slash commands! I am working on a few improvements, including a /ataccept command to accept the ticket. However I also have to work so I don't know when that will be ready :). ##Requirements You'll need a server (Linux is ideal) with PHP and PHP-SOAP client and MySQL/MariaDB. Many shared web hosts offer this. When I was building and testing it, I was doing so on PHP7 on a Plesk / CentOS web server. SSL is also required. The task will FAIL if you do not place this on an SSL host Here is an example of that the notification looks like: https://i.imgur.com/9rLqz0N.png

####Usage

  • ticketSlack.php & ticketSlack2.php: ticketSlack.php is legacy. ticketSlack2.php is used by AT Extensions to trigger an alert to a specefic room when a new ticket is opened.
  • ticketReply.php: COMING SOON. Will alert the ticket owner via Slack when the customer places a reply in the ticket.

Installation

Installation is simple. Download as a ZIP and extract on your web server. Set permissions for config.php to 0600. Edit config.php and fill in the appropriate variables. Your "Autotask Realm" is the first part of the URL after you login (examples: ww5, ww14). Your webservices URL is based on the Realm. If you're in ww5, than your services host should be webservices5.

Your Slack URL is the URL of your Slack Webhook (YOUR_TEAM.slack.com/apps/A0F7XDUAZ-incoming-webhooks). Create your webhook there. You will also want to set the name and icon as we do not do that in ATSlack-Notify. You also need to set the channel within config.php that you want the messages posted to. It does not matter what you picked on Slack.

Username and password should be API credentials for your Autotask instance. You can hit up your account rep to get these for free.

$extensiontoken is IMPORTANT: This adds a layer of security to the system, preventing a random person from war dialing ticket numbers :). Set this to a RANDOM value (best not to use special characters). Then add it to your Ticket Extension per the below instructions!

MySQL Database

You will need to manually create a MySql database as well as a user with full access. Save that information in the database section of config.php. $dbusername = MySQL User $dbpassword = MySQL User Pass $dbname = Database Name $dbhost = MySQL Server (usually localhost)

NOW YOU WILL SETUP EACH FUNCTION OF THE SOFTWARE

New Ticket Alerts (ticketSlack2.php)

This functions posts a message to a room of your choice when a new ticket is created.

First login to Autotask and go to Admin>Extensions and Integrations>Other Extensions and Tools>Extension Callouts

Create NEW extension callout with the following variables:

Save & Close

Now create a workflow rule to fire this callout. For my purposes, I set my workflow to fire when a new ticket is created by an external contact, and filtered it to certain queues that matter most to me. You can design yours however you want. Just make sure that you select your callout under actions.

Ticket Reply Direct Messages (ticketReply.php)

This function will send a direct message to the ticket owner in Slack when a reply is added by the contact. If the user has not been mapped or the ticket is unassigned, it will send it to the same room as new ticket messages.

Autotask Steps

Create a ticket extension as before with the following paramters

Save & Close

Now create a workflow rule to fire this callout. For my purposes, I set my workflow conditions to modified by ticket contact.

Setup Database

Earlier, you created a MySQL Database and saved the info. Now you need to add the tables. To do so go to https://server/atslack/installdb.php and follow the instructions. This script will format the tables in the database.

DELETE INSTALLDB.PHP ONCE YOU ARE DONE RUNNING IT

Setup Slack SLASH command.

  • Login to https://your_team.slack.com/apps/A0F82E8CA-slash-commands and click Add Configuration
  • For command, enter the command you want to use, starting with a slash (instructions refer to /usermap so we recommend you use those)
  • For URL enter https://server/atslackfolder/usermapping.php
  • For Method, Select GET
  • Token is chosen by Slack, copy that value and set it as $dbmantoken in config.php (THIS IS IMPORTANT)
  • Set whatever name you would like, I use AT User Mapping
  • Set an icon if you want to be all fancy
  • Set autocomplete and help text if you wish
  • click SAVE INTEGRATION

Here is an example of right: https://i.imgur.com/fgQKz4j.png

Map Your Users

Autotask Username (atusername): Your autotask username if the username that you use to login to autotask WITHOUT @domain.com. So, if you type [email protected] when you login to Autotask, your Autotask Username is john

Slack Useraname (slackname): Your slack username.

SYNTAX:

  • Add User: /usermap addmap [slackname] [atusername]
  • List Mappings: /usermap listmap
  • Remove a Mapping /usermap removemap [slackname]

NOTE: Only authorized Slack users get to use /usermap. This is defined in config.php under $adminlist. Use Slack usernames in $adminlist.

Help: Run the command /usermap help for the syntax of mapping and unmapping users

That's it, you should be good to go :). ENJOY!!

##Testing You can test the integration easily. The included test.php file contains a form that will input the proper variables.

To test, navigate to https://server/atslack/test.php?s=YOURSECURITYTOKEN (don't forget the token)

For Ticket ID enter the ticket ID. This can be found by clicking on the ticket in Autotask. Check the url after ?ticketID= For ticket number, enter the correct ticket number (T20170101.0001 for example).

If you want to view the output in the browser instead of pushing it to Slack, open config.php and set $testmode to true.

Security

NOTE: Unless you modify the code, SSL is required for this script to function.

Thanks!

I borrowed code from the CWSlack project for this project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.