Table of Contents

Requirements

  1. Install NodeJS: https://nodejs.org/en/download/
  2. Install Git (Optional): https://desktop.github.com/
  3. You will need 2 Apps for our project:
  4. ProjectMurphy - FrontEnd: https://github.com/ncmd/ProjectMurphy
  5. APIBot - BackEnd: https://github.com/MilanPalSingh/app
  6. Firebase App & Token from Google Developers Account
  7. API.AI Token from Google Developers Account

Installation

Requirements:

For Setting up the FrontEnd - Project Murphy:

  • cd ProjectMurphyFolder
  • npm install
  • Setup a Firebase App with Google Developers Account
  • Create "fire.js" file in /src folder

Follow this format for your fire.js file:

import firebase from 'firebase'

var config = {

apiKey: "API-KEY-STRING",

authDomain: "name-of-app.firebaseapp.com",

databaseURL: "https://name-of-app.firebaseio.com",

projectId: "name-of-app",

storageBucket: "name-of-app.appspot.com",

messagingSenderId: "MessageSenderID"

};

var fire = firebase.initializeApp(config);

export default fire;

Start-App:

  • npm start

For Setting up the BackEnd - SlackBot + API.AI:

  • cd AppFolder
  • npm install
  • `Setup a Slack instance and generate a private token that can be used for the application.

Inspiration

Coordination during an Emergency is difficult. It takes too much time to educate everyone in the situation. People are not in the right mindset to properly do tasks and require a guide. The Incident Commander is overwhelmed with having to keep track of every user's task and plans it on the spot.

Instead of scaling to attack the big problem, we minimized our scope to "Making a Burger" when ordered by a user. A lot of coordination goes into Making a Burger (Check out In-n-Out)

We wanted to not have minimal interaction with users for them to be assigned a task to do. We decided on using a Bot because this tool will be able to scale.

What it does

Our solution to this problem is to automate the process of assigning tasks and centralizing the Incident Commander role.

We used Slack as an example if implementing a Chat bot that is able to recognized when a User creates an "Incident". In our case, its "Making a Burger".

Making a Burger takes several steps and can be coordinated to be worked on by multiple people by splitting up all the task to "Make a Burger".

The Chatbot then messages users in the channel if they would like to take on a task involved in Making a Burger. Users are able to confirm by messaging an "intent" to accept the task.

Task is then assigned to the user and is updated to the Dashboard of the Task's Progress

The Incident Commander is able to have a centralized dashboard of all tasks and events happening and instructions on how to do them.

How we built it

Front-End Dashboard programmed in ReactJS, Based most of components from CoreUI Bootstrap 4 Admin Template. Front-End would connect directly to Firebase where all our data is stored for users, tasks, etc. Back-End in NodeJS used to connect to Slack. Used our back-end app to forward all messages to API.AI. We then created all the Intents possible for our Scope of "Making a Burger" We get then information back from API.AI real-time about after the messages has been analyzed. We now are able to create an "Incident" based off of what users say. Our bot then messages users if they want to take on the task by saying "yes" "sure", etc. All this information is then passed to our centralized Dashboard containing all the information of Incidents occurring, tasks in-progress, etc.

Challenges we ran into

How to parse data from Firebase Learning ReactJS Learning API.AI Machine Learning takes a lot of data to comprehend an "intent" that we ideally want.

Accomplishments that we're proud of

Finished an Minimal Viable Product Got a whole workflow happening. Combined a Front-End, Back-End, and API.AI while working separately. Worked together to solve bugs.

What we learned

How to use ReactJS, Firebase, Slack's API, API.AI's API

What's next for Project Murphy

Making it ready to crush Asana, Confluence/Jira, PagerDuty, and the classic "Spreadsheet"

Share this project:

Updates