Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/spajus/hubot-pubsub

PubSub notification system for Hubot
https://github.com/spajus/hubot-pubsub

Last synced: 2 days ago
JSON representation

PubSub notification system for Hubot

Awesome Lists containing this project

README

        

hubot-pubsub
============

PubSub notification system for [Hubot](https://github.com/github/hubot)

Using [Lita](https://www.lita.io)? Try [lita-pubsub](https://github.com/spajus/lita-pubsub)!

[![Build Status](https://travis-ci.org/spajus/hubot-pubsub.png?branch=master)](https://travis-ci.org/spajus/hubot-pubsub)

![hubot-pubsub demo](https://dl.dropboxusercontent.com/u/176100/opensource/hubot-pubsub.gif)

## Book: Automation and Monitoring with Hubot

[Automation and Monitoring with Hubot](https://leanpub.com/automation-and-monitoring-with-hubot) will show you how to build advanced monitoring systems with Hubot PubSub.

## Possibilities

`hubot-pubsub` allows you to build a simple, yet powerful monitoring / notification system using your corporate chat
(Campfire, HipChat, IRC, Jabber / XMPP or even Skype). Simply subscribe events in appropriate chat rooms and publish
info about these events via HTTP calls or from other Hubot scripts when they happen.

```
Hubot PubSub Event Flow

+--------------+ +--------------+ +---------------+
| hubot script | | HTTP Request | | chat message |<--+
+-------+------+ +-------+------+ +-------+-------+ |
| | | |
| v | |
| +--------------+ | |
+------->| hubot-pubsub |<--------+ |
+-------+------+ |
| |
v |
+--------------+ |
+---+ hubot +---+ |
| +--------------+ | |
| | |
v v |
+---------------+ +---------------+ |
| chatroom #1 | | chatroom #2 +-----------+
+---------------+ +---------------+
````

## Installing

Add dependency to `package.json`:

```console
$ npm install --save hubot-pubsub
```

Include package in Hubot's `external-scripts.json`:

```json
["hubot-pubsub"]
```

## Configuration

HUBOT_SUBSCRIPTIONS_PASSWORD # Optional password for protecting HTTP API calls
HUBOT_PUBSUB_SEND_EVENT_NAME # Optional boolean determines whether the event name is prefixed on delivered messages (defaults to true)
HUBOT_PUBSUB_DATA_AS_JSON # Optional boolean determines whether the event data is parsed as a JSON object
# and sent as such (defaults to false)
# Useful to post to a Slack channel with rich formatting and attachments

## Commands

hubot subscribe # subscribes current room to event
hubot unsubscribe # unsubscribes current room from event
hubot unsubscribe all events # unsubscribes current room from all events
hubot subscriptions # show subscriptions of current room
hubot all subscriptions # show all existing subscriptions
hubot publish # triggers event

## HTTP API

### GET /publish

GET /publish?event=&data=[&password=]

### POST /publish

POST /publish

- Content-Type: `application/json`
- Body: `{ "password": "optional", "event": "event", "data": "text" }`

### Event Namespaces

Hubot PubSub uses `.` as event namespace separator. I.e.: subscribing to `x.y` also subscribes to `x.y.*` events.

### Publishing events from other scripts

Emit `pubsub:publish` event from any other Hubot script to publish something via hubot-pubsub:

robot.emit 'pubsub:publish', 'news', 'Publishing some news from another script'

### Handling unsubscribed events

Do `hubot subscribe unsubscribed.event` in a room where you want all unrouted events to get announced.

### Issues

- HTTP password based security is weak - don't use it in public network to publish events with sensitive data