SLAPI Overview
SLAPI Bot strives to accomplish is a truly code agnostic approach to utilizing Bots and ChatOps.
What does SLAPI Stand For? Simple Lightweight API Bot or Slack API Bot
What makes SLAPI Different?
- Code Agnostic
- If it runs on Linux (windows pending) or has an API endpoint, you can make it a plugin
- Plugin system
- Scripts
- YAML Configuration, just block out your script and SLAPI will put it in a Language Supported container
- For more specifics and a list of supported Script Languages here Script Plugins
- Containers
- Whether it’s a Dockerfile, Dockerhub, or Private Registry. You can pull it down and use it with SLAPI
- For more information and expectations of Dockerized plugins check out Container Plugins
- API
- API Endpoints welcome, we just require 2 specific endpoints for SLAPI to utilize any external service
- See API Plugins for more information
- Scripts
What does this look like?
SLAPI is currently a Slack only bot
- Diagram Breakdown
- User Interface
- General Users interact via Slack
- Bot
- Slack Client
- Handles all back and forth of User/Bot
- SLAPI Framework (Ruby and Sinatra Based)
- Initializes Client, Brain, and Plugins
- Creates API Interface for SLAPI
- Plugin management
- Loads
./config/plugin/*.yaml
files and creates plugins based onType
- Loads
- Brain
- Runs Redis in a Container and creates API endpoints to interact with the Redis Client
- See here for more info on the Brain
- Slack Client
- Internal Plugins
- Languages Exampled: Golang, Python, NodeJS; These are only a fraction of supported languages
- These plugins come in two flavors
- Script
- Simple Script that can be triggered by the bot via Chat
- Container/Docker
- For more complex Command Line style programs, several configurable options for type of data passed into plugin
- Script
- External Plugins
- Frameworks Exampled: Rails, Spark, Flask; Not limited to these, any API/Web Framework will work
- External Notifications
- Internal plugins containers can be configured to have ports binded to them to use for monitoring endpoints
- i.e.; Github Webhook Plugin that notifies room every time there is a PR or Merge.
- User Interface