Project

slackit

0.0
No release in over 3 years
A simple gem for posting raw messages to a slack incoming webhook.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.0.0
~> 12.3.3
~> 3.0
~> 0.10.0
~> 2

Runtime

~> 1.0.0
~> 0.10.0
~> 2
 Project Readme

DevelopersToolbox logo
Github Build Status Release Commits since release

Overview

Slackit is a very simply Ruby Gem for posting to a slack incoming webhook.

It is now possible to send attachments and blocks however slackit doesn't take responsibility for creating those only for sending them. For more information on how to use those please refer to the Slack API documentation.

Installation

Add this line to your application's Gemfile:

gem 'slackit'

And then execute:

$ bundle

Or install it yourself as:

$ gem install slackit

Usage

require "slackit"

Initialize client

Initialize with minimal options

client = Slackit.new(webhook_url: "slack webhook url")

Initialize with all options

client = Slackit.new(
  webhook_url: "slack webhook url",
  channel: "#development",
  username: "mybot",
  icon_emoji: ":shipit:",
)

Initialize via shorthand method

client = Slackit.new(options)

Validating the webhook url

Firstly slackit will check to ensure that the webhook url starts with https://hooks.slack.com/services, this is the slack standard for all invalid webhook urls.

Secondly slackit will attempt to validate the webhook url, by making a HTTP GET request, if the response to the request is a redirect to https://api.slack.com then the url is deemed to be invalid.

This checking can be bypassed by supplying the -V command line option to tell slackit this is a valid url, this is useful if you know that the URL is valid and working and removes the additional overhead of repeated testing for each message.

If you want to manually validate a url you can do this using the command line option -v

slackit -v -w <slack webhook url>

This will run the GET test and also send a test message to the general channel to ensure that the supplied token is also valid, if this comes back with a success you should be safe to use the -V option from then on.

Normal error handling during the post of a message will always be carried out.

Sending Messages

Simple messages

client.send_message("This is a test message")

Attachments

client.send_attachment(attachment_json)

NOTE: We will test to make sure the json is valid and catch errors thrown by the API for invalid formatting, missing values etc. General error from the api is missing_text_or_fallback_or_attachments

Blocks

client.send_block(block_json)

NOTE: We will test to make sure the json is valid and catch errors thrown by the API for invalid formatting, missing values etc. General error from the api is invalid_blocks_format

Command Line Usage

Usage: slackit
    -h, --help                       Display this screen
    -c, --channel string             The channel to send the message to
    -i, --icon-emoji string          The emoji to use for the channel icon [default: :wolf:]
    -m, --message string             The message to send
    -w, --webhook-url string         The slack incoming webhook url to use
    -u, --username string            The username to send as [default: slackit]

Webhook Validation:
    -v, --validation-test            Run a webbook validation test
    -V, --validated-webhook          Flag the webhook as validated (skips constant validation)

Message type options:
    -a, --attachment                 Treat the message as an attachment
    -b, --block                      Treat the message as a block

Pipe message

Alternatively to using the -m parameter, you can pipe your message instead:

$ echo 'Hello world!' | slackit -w ...

Return values

For all sucessful sending slackit will return a value of 0. For all errors it will return the value of 1.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Testing

For local testing make sure that you run bundle exec rspec spec and then rake install to install the gem locally.