Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Technology stack

Project background

We built several bots for communication from/to Topcoder Slack, Client Slack, and Client MS Teams. The current architecture is as below.

In this project, we want to build the bots with the same functionality on AWS Lambda so that we can gain the benefit of serverless. The final architecture should look like

Here is the code of the existing bots for your reference. You might pull the custom code from them as needed.

  1. The code of the bot for communicating between Topcoder Slack and the client Slack: https://github.com/topcoder-platform/Topbot/tree/dev. Related past challenge spec: https://www.topcoder.com/challenges/30099617

  2. The code of the bot for communicating between Topcoder Slack and the client MS Teams. https://github.com/topcoder-platform/MS-Teams-bot-processor/tree/master. Related past challenge spec: https://www.topcoder.com/challenges/30101366

For understanding detailed steps of interaction between bots, follow the description of these past challenges.

 

Currently, both of the bots were built by

  • NodeJS + Express

  • Botkit

  • MongoDB (Used by Botkit)

In this project, we will re-implement them with

 

General requirements

In this challenge, we focus on the Central TC Lambda first. The Central TC Lambda should

  1. Receives requests (via REST API) from the client Slack Lambda (will be implemented in the next challenge).

  2. Processes these requests and sends them to TC Slack.

  3. Receives messages from TC Slack, including commands, responses, etc.

  4. Processes any responses from the TC slack and sends them back as the REST API responses. Eventually, it will send back to the client slack through client Slack Lambda.

  5. Mock the API calls to the client slack (e.g. when the Central TC Lambda is calling the API on the client Slack Lambda).

 

In this challenge, you are required to design the REST API for Central TC Lambda and describe the API in a swagger doc. Then implement the API with the workflow above in AWS Lambda.

The existing commands in https://github.com/topcoder-platform/Topbot/tree/dev should be implemented

  • launch <description>: Launch a task with description

  • accept: Accept a task

  • approve: Approve a task

  • help: Show list of supported commands

The created tasks should be stored in the table tasks in DynamoDB.

In this challenge, the client Slack Lambda is not implemented yet, so you need to provide a Postman collection or a swagger UI to initiate the API requests and test the API responses. 

Concerns for the future challenges

In the next challenge, we’ll implement the client Slack Lambda, which consumes the API we implemented in this challenge.

 

In the third challenge, we’ll implement the client Teams Lambda and update the Central TC Lambda to support MS Teams accordingly.

 

Please note the code of communication to/from Topcoder slack in the following two existing code are completely different.

So keep in mind that the Central TC Lambda will support both Slack and MS Teams eventually when you are developing the code.

Final Submission Guidelines

  • The full source code of the Central TC Lambda.

  • The swagger doc of the API in yml format.

  • The swagger UI or Postman collection to verify the API.

  • Deployment guide, make sure its properly described step by step, it should include the screenshots.

  • Verification guide - how to set up the environment, install the bots, verify the features, it should include the screenshots.

  • Short demo video - only the user interaction flow, no need to record build/setup steps

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30104528