This project is a set of libraries aimed at facilitating creating Bots and Apps for the Symphony Chat Platform using Java and Spring Boot.
This project contains the following:
-
Libraries
- Symphony Java Client Bindings
- Symphony Java Client Identity
- Symphony API Spring-Boot Starter
- Symphony App Spring-Boot Starter
- Symphony JSON Support
- Symphony Shared Stream
- Chat Workflow
-
Tools
- A TeamCity Build Notifier
- KoreAI Bridge Connector
- RSS News bot
- Reminder Bot (tbc)
- Webhook Bot (tbc)
-
Tutorials for getting started
-
Demo bots and apps
- Demo Bot
- Demo App
- Claim Bot
- To-Do Bot
Read further to see what each of these includes.
Many of the components in this project rely on each other, as demonstrated in this dependency diagram. This also gives and overviw of the purpose of each component.
This provides a JAX-RS standard, Type-Safe means of interacting with Symphony pods via REST apis.
bindings
is a set of swagger-generated domain objects and interfaces that provide a Java API for interacting with Symphony's REST endpoints.
This is used in preference to Symphony's own API as the configuration can be left to spring boot, and you can use Spring's starters for JAX-RS to build your application.
symphony-java-client-identity
provides a single abstraction of SymphonyIdentity
, which encapsulates the data needed to authenticate with a symphony server. That is:
- Private Key
- Certificates
- Common Name
- Email Address
This is a highly convenient abstraction which works with Spring Boot's use of Jackson and YAML to describe Bot and App identities in Java.
Provides Spring-Based configuration and auto-wiring for Symphony APIs. This is perfect if you are building a Symphony Bot using Spring Boot.
If you are building a Symphony App, there are multiple concerns around app security, networking, describing your application and handling user authentication.
This provides you with an out-of-the-box way to get started and build an app with all of these concerns taken care of.
This is a utility that helps you serialize/deserialize JSON in a format suitable for the JSON data payload of a Symphony Message, using Jackson.
The purpose of this module is to provide a drop-in stream consumer for Symphony that allows a cluster of bot replicas to coordinate work. That is, prevent the problem of two or more bots simultaneously consuming and processing the same Symphony message.
Chat Workflow provides interfaces and utilities for expressing bot workflows in Spring.
The Chat Workflow Symphony Starter implements this for symphony. It is intended that beyond configuration the developer will not have to understand any Symphony APIs to build work-flows and have them run in Symphony.
All bots are deployed into maven central as executable jars.
Allows you to report your TeamCity builds into Symphony chat rooms, using a bot.
This is a Spring Boot App that acts as a middleman between a Symphony bot and a KoreAI bot, allowing you to expose your KoreAI bot as a bot on Symphony. Kore.AI is a low code/no code environment for building chat bots.
A bot for running polls in a Symphony chat room. Built using chat-workflow.
A bot for feeding news into a Symphony chat room. Built using chat-workflow.
This project is licensed under the Apache 2.0 License.
In order to do a release:
- Changes.md
- Update this file to include details of the release.
- On Releaser's machine:
mvn clean test -P symphony-ci
mvn versions:set -DnewVersion=<our breaking change no>.<minor version no>.<our-patch-version-no> -DartifactId=\* -DgroupId=\*
mvn -DskipTests clean test source:jar javadoc:javadoc deploy -P symphony-release
mvn versions:set -DnewVersion=<our breaking change no>.<symphony-api-version>.<our-release-no+1>-SNAPSHOT -DartifactId=\* -DgroupId=\*
# then push to git
- On
oss.sonatype.org
- Close the Staging Repository
- Release it.
- Perform release on github with same number