Challenge Overview
Hercules uses Slack internally for communication between teams. We also have built a large Node library that integrates with internal Hercules services. A previous challenge has started work on some basic account management with the bots and the base libraries. This challenge will update the calls to Einstein and PSG to use the CSP library instead, and will do some refactoring
Botkit
For this app, we'd like to use Botkit:
https://github.com/howdyai/botkit
For this challenge, we will just be targeting Slack and Slack Buttons. The Botkit repo contains examples for both.
Refactoring
The current codebase is all one big class (index.js). I'd like to split this into pieces so the code is easier to manage:
* One file for the Botkit controller functions
* One file for searching functionality
* One file for billing functionality
* One file for device functionality.
Base libraries
Going forward, the base libraries should be loaded via a git submodule, not packaged with the codebase. A sample submodule path will be provided in the forum, and the baselibs folder should be removed from the app.
CSP
CSP is a new service added to the Node base libraries. It contains lots of functionality for:
* Searching
* Billing functionality
We are going to replace any uses of Einstein and PSG with the CSP calls in the base library. The calls should be fairly self-explanatory, but feel free to ask questions if needed.
We want to make sure search works by:
* Email
* First name, last name
* Account number
* Phone number
The billing information should work as it does now.
CSP Oauth
One big difference with CSP vs. Einstein and PSG is the use of an OAuth2 flow for retrieving bearer tokens for authorization to the CodeBig2 API. This will be added to the web app setup, similar to what we have now for the Slack app registration. When the admin first installs the both, the admin will have to go and log in to WebSec and go through the flow to generate the CIMA, WebSec, and WebSec refresh tokens to apply to the CSP service. More details will be provided in the forum.
Submission format
No video is required for this challenge.
Your submission should be a patch file against the code mentioned in the forum.
Your patch file should include the README.md with the appropriate setup and validation information needed by the reviewers
Botkit
For this app, we'd like to use Botkit:
https://github.com/howdyai/botkit
For this challenge, we will just be targeting Slack and Slack Buttons. The Botkit repo contains examples for both.
Refactoring
The current codebase is all one big class (index.js). I'd like to split this into pieces so the code is easier to manage:
* One file for the Botkit controller functions
* One file for searching functionality
* One file for billing functionality
* One file for device functionality.
Base libraries
Going forward, the base libraries should be loaded via a git submodule, not packaged with the codebase. A sample submodule path will be provided in the forum, and the baselibs folder should be removed from the app.
CSP
CSP is a new service added to the Node base libraries. It contains lots of functionality for:
* Searching
* Billing functionality
We are going to replace any uses of Einstein and PSG with the CSP calls in the base library. The calls should be fairly self-explanatory, but feel free to ask questions if needed.
We want to make sure search works by:
* First name, last name
* Account number
* Phone number
The billing information should work as it does now.
CSP Oauth
One big difference with CSP vs. Einstein and PSG is the use of an OAuth2 flow for retrieving bearer tokens for authorization to the CodeBig2 API. This will be added to the web app setup, similar to what we have now for the Slack app registration. When the admin first installs the both, the admin will have to go and log in to WebSec and go through the flow to generate the CIMA, WebSec, and WebSec refresh tokens to apply to the CSP service. More details will be provided in the forum.
Submission format
No video is required for this challenge.
Your submission should be a patch file against the code mentioned in the forum.
Your patch file should include the README.md with the appropriate setup and validation information needed by the reviewers