Jarjar Slack Notifier
June 28 2017
Jarjar is a collection of scripts that lets you programmatically send notifications to your Slack team.
You can find the code on Github.
What can jarjar do for me?
Here are some things we use it for:
- Send reminders to yourself or a group.
- Notify users when their jobs (simulations, backups, etc) are completed.
- Combine jarjar with cron to send out daily positive vibes.
We have designed two interfaces into jarjar: a shell command and a Python Module.
The Shell Command
Fill the configuration file out with useful defaults. Critically, you’ll want to paste in your Slack webhook so that jarjar knows where to send the message. Then put the configuration file in your home directory (
~/), that’s where jarjar will look for it. Don’t worry, you can override those defaults later.
Then, add the shell command to your path. After that, you can use it like so:
1 2 3 4 5 6 7 8 9 10 11
# echo the default message to the default channel jarjar -e # echo a message to the #general channel jarjar -e -u #general -m "Hi, everyone!!" # Send yourself a notification when a script is completed jarjar -u @username -m "Your job is finished!" python my-script.py # send a message to the non-default slack team jarjar -e -u @username -m "Hi!" -w "their-webhook-url"
||Echo the message. If this flag is not included, jarjar waits until a provided process is completed to send the message. By default (without the
||Attaches screen created by jarjar (when
||Message to be sent|
||Username (or channel). Usernames must begin with
||Webhook for the Slack team.|
The Python Module
This module implements jarjar’s functionality more fluidly within Python scripts. Importing the jarjar module provides a simple class, which is initialized by a default webhook and channel (but can be overridden), and sends messages like the shell command.
Installation is simple:
- Make sure the
python/jarjarfolder is on your current path (e.g., copy it to your working directory, or your modules directory).
- Make sure you’ve installed
Then, you’re good to go! You can use it as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
from jarjar import jarjar # initialize with defaults jj = jarjar(channel = '#channel', url = 'slack-webhook-url') # send a text message jj.text('Hi!') # send an attachment jj.attach(dict(status='it\'s all good')) # send both jj.post(text='Hi', attach=dict(status='it\'s all good')) # override defaults jj.attach(dict(status='it\'s all good'), channel = '@jeffzemla') jj.text('Hi!', channel = '@nolan', url = 'another-webhook') # initialization is not picky jj = jarjar() jj.text('Hi', channel = '#channel', url = 'slack-webhook-url') jj = jarjar(url = 'slack-webhook-url') jj.attach(dict(status='it\'s all good'), channel = '#channel')
Send a text message, specified by a string,
text. User may optionally supply the channel and webhook url in the
Send attachments, specified by values in a dict,
attach. User may optionally supply the channel and webhook url in the
jj.post(text=None, attach=None, channel=None, url=None)
The generic post method.
jj.attach(...) are simply convenience functions wrapped around this method. User may supply text and/or attachments, and may override the default channel and webhook url.
How to configure a Slack Webhook
You’ll need to configure Incoming Webhooks for your Slack team. You need to specify a default channel (which jarjar overrides), and Slack will give you a webhook url. That’s it!
When you’re setting things up, you can also specify a custom name and custom icon. We named our webhook robot
jar-jar, and we used this icon, so messages look like this: