Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/spajus/hubot-pubsub
- Owner: spajus
- License: mit
- Created: 2013-09-02T03:12:39.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2018-03-28T16:54:47.000Z (almost 7 years ago)
- Last Synced: 2024-04-23T02:10:49.095Z (9 months ago)
- Language: CoffeeScript
- Size: 24.4 KB
- Stars: 44
- Watchers: 5
- Forks: 11
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - spajus/hubot-pubsub - PubSub notification system for Hubot (others)
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