TCO16 Bonus - Hercules Slack Integration - Initial proof of concept

Key Information

The challenge is finished.

Challenge Overview

Hercules uses Slack internally for communication between teams.  We also have built a large Node library that integrates with internal Hercules services.  This challenge will be the beginning of a project to expose Hercules services into Slack to make useful tools that the client can use for support and investigation of issues.


For this proof of concept, we'd like to use Botkit:

For this challenge, we will just be targeting Slack and Slack Buttons.  The Botkit repo contains examples for both.

Customer information

For this challenge, we are going to focus on customer information, including searching, viewing details, viewing bills, and viewing devices.

Customer search

We want to look up a customer by:

* Email (using Einstein)
* Name (using PSG)
* Account number (using Einstein)
* Phone number (using Einstein)

The search could either return 0, 1, or >1 results.  

0 results should show a message to the user like "No results found for search {search term}"

1 result should immediately load that account through Einstein

>1 result should prompt the user to select one of the search results.

Customer Details

Once a customer account is selected, we will use Einstein to look up the customer details and display them, including:

* Customer name
* Customer email
* Customer address
* Customer phone number
* Customer service account number

If the Slack user clicks on the customer email, we should launch the default email client (similar to a mailto: link)

If the user clicks the address, we should launch Google Maps for that address

Customer actions

Once a customer is loaded, we should have buttons or actions that allow the Slack user to:

* Download the latest PDF bill for the customer
* Download a past PDF bill for the customer (will need to prompt for a date from the last 10-12 bill dates)
* Show the devices registered to the customer

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 libraries likely won't cover everything needed for the requirements, so test Ruby scripts will be available to help here.


Final Submission Guidelines

Please see above.


2016 TopCoder(R) Open


Final Review:

Community Review Board


User Sign-Off


ID: 30054840