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 fix up some issues and expand the functionality a bit.
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.
Customer information display changes
* In the output of a search, the name of accounts sometimes comes back as all-caps, ie. "JOHN SMITH". We need to make sure this is cased correctly, like "John Smith".
* In the output of a search, the address sometimes comes back as all-caps as well, like "123 MAIN ST., CITY, STATE, ZIP ZIP+4". We want to remove the zip+4 and case this like "123 Main St. City, ST, ZIP"
Device list change
In the list of devices, we show "Set-top Box" and each device. We want to change this to show the following information:
Device ID: 8664135822108310219
Device Type: QamIpStb
Make: Pace
Model: PX001ANM
DVR Tuners: 5
eCMMAC: B4:F2:E8:21:7C:5B
DVR Storage: 500 GB
MOCA MAC: B4:F2:E8:21:7C:5E
Or this:
Device ID: 486002735902929929
Device Title: nDvr device
Make: NDvrRecorder
Model: NDvrRecorder
DVR Storage: 500 GB
Device recordings
For a device, we want a button that allows the user to view recordings for that device. A Ruby script is available in the forum to show how to pull the device list.
For each recording, we want a button called "Delete" that removes the recording from the user's account.
Recording display:
For a TV show (program type is "Series" or "Episode" or "SportingEvent"), we will display like this:
Bones S11 Ep22 - The Nightmare in the Nightmare
Recorded Friday July 22nd, 2016 12:00AM - 1:00 AM
So this is:
"{Title} S{season number} Ep{episode number} - {episode title}
Recorded {recording date start} - {recording date end}
For a movie (program type is "Movie"), we will display like this:
Movie - Avengers Age of Ultron
Recorded Friday July 22nd, 2016 12:00AM - 2:00AM
Delete a recording
A test Ruby script will be provided that shows the call to delete a recording. Note that it will likely not be runnable because the recording will have been deleted, but it will show how the call works.
Heroku deploy
We will be targeting Heroku for the deployment, so please make sure your deployment guide covers how to not only configure the app, but also deploy it to Heroku.
Ideally, anything configurable, like the Slack hook, should come from the environmental variables, so we can set them on Heroku like "heroku config:set ...."
Base libraries
The Node base libraries we have existing will be available in the forum. The changes from the last challenge have been checked into Git. If you need additional changes, it's fine to provide a patch file for the base libraries - just make sure that if you add functionality that basic unit tests are also provided.
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.
Customer information display changes
* In the output of a search, the name of accounts sometimes comes back as all-caps, ie. "JOHN SMITH". We need to make sure this is cased correctly, like "John Smith".
* In the output of a search, the address sometimes comes back as all-caps as well, like "123 MAIN ST., CITY, STATE, ZIP ZIP+4". We want to remove the zip+4 and case this like "123 Main St. City, ST, ZIP"
Device list change
In the list of devices, we show "Set-top Box" and each device. We want to change this to show the following information:
Device ID: 8664135822108310219
Device Type: QamIpStb
Make: Pace
Model: PX001ANM
DVR Tuners: 5
eCMMAC: B4:F2:E8:21:7C:5B
DVR Storage: 500 GB
MOCA MAC: B4:F2:E8:21:7C:5E
Or this:
Device ID: 486002735902929929
Device Title: nDvr device
Make: NDvrRecorder
Model: NDvrRecorder
DVR Storage: 500 GB
Device recordings
For a device, we want a button that allows the user to view recordings for that device. A Ruby script is available in the forum to show how to pull the device list.
For each recording, we want a button called "Delete" that removes the recording from the user's account.
Recording display:
For a TV show (program type is "Series" or "Episode" or "SportingEvent"), we will display like this:
Bones S11 Ep22 - The Nightmare in the Nightmare
Recorded Friday July 22nd, 2016 12:00AM - 1:00 AM
So this is:
"{Title} S{season number} Ep{episode number} - {episode title}
Recorded {recording date start} - {recording date end}
For a movie (program type is "Movie"), we will display like this:
Movie - Avengers Age of Ultron
Recorded Friday July 22nd, 2016 12:00AM - 2:00AM
Delete a recording
A test Ruby script will be provided that shows the call to delete a recording. Note that it will likely not be runnable because the recording will have been deleted, but it will show how the call works.
Heroku deploy
We will be targeting Heroku for the deployment, so please make sure your deployment guide covers how to not only configure the app, but also deploy it to Heroku.
Ideally, anything configurable, like the Slack hook, should come from the environmental variables, so we can set them on Heroku like "heroku config:set ...."
Base libraries
The Node base libraries we have existing will be available in the forum. The changes from the last challenge have been checked into Git. If you need additional changes, it's fine to provide a patch file for the base libraries - just make sure that if you add functionality that basic unit tests are also provided.