Git Product home page Git Product logo

ready-to-fly's Introduction

Ready to Fly

CI Workflow codecov

Sample app to showcase Slack + Salesforce integrations.

This app has been created using the Salesforce Slack Starter Kit. For a detailed explanation of the app architecture and the scaffolding script, take a look at Salesforce Slack Starter Kit's README.

Prerequisites

To be able to run this project you will need:

Setup Steps

Configuring Slack app at api.slack.com

  1. Open https://api.slack.com/apps/new and choose From an app manifest
  2. Choose the workspace you want to install the application to
  3. Copy the contents of manifest.yml into the text box that says Paste your manifest code here and click Next
  4. Review the configuration and click Create
  5. In Basic Information scroll down to the Display Information section. Upload a picture for the app. You can use this logo
  6. Now click Install App on the left menu. Then click the Install to Workspace button and then click on Allow

Deploying the app using a Salesforce Non-scratch org (or a Trailhead Playground) and Heroku

  1. Authenticate to your Salesforce org and set as default:
sfdx auth:web:login --setdefaultusername -a mydevorg
  1. Login to your Heroku Account
heroku login
  1. Clone the ready-to-fly repository
git clone https://github.com/trailheadapps/ready-to-fly
  1. Run Deployment Script
cd ready-to-fly/scripts
npm install
cd ..
node scripts/deploy.js
  1. Choose Non-Scratch Org when the script prompts you to select Salesforce environment

  2. The script prompts you to enter value for SLACK_BOT_TOKEN. To enter this value open your apps configuration page from this list, click OAuth & Permissions in the left hand menu, then copy the value in Bot User OAuth Token and paste into terminal.

  3. The script prompts you for slack signing secret SLACK_SIGNING_SECRET. To enter this value open your apps configuration page from this list, click Basic Information and scroll to the section App Credentials and click show button and copy the Signing Secret and paste into terminal.

Deploying the app using a Salesforce scratch org and Heroku

  1. Authenticate to your Salesforce org that has DevHub enabled
sfdx auth:web:login --setdefaultdevhubusername -a DevHub
  1. Login to your Heroku Account
heroku login
  1. Clone the ready-to-fly repository
git clone https://github.com/trailheadapps/ready-to-fly
  1. Run Deployment Script
cd ready-to-fly/scripts
npm install
cd ..
node scripts/deploy.js
  1. Choose Scratch Org when the script prompts you to select Salesforce environment

  2. The script prompts you to enter value for SLACK_BOT_TOKEN. To enter this value open your apps configuration page from this list, click OAuth & Permissions in the left hand menu, then copy the value in Bot User OAuth Token and paste into terminal.

  3. The script prompts you for slack signing secret SLACK_SIGNING_SECRET. To enter this value open your apps configuration page from this list, click Basic Information and scroll to the section App Credentials and click show button and copy the Signing Secret and paste into terminal.

Note: As ready to fly performs calls from Salesforce to Slack, we've modified the Salesforce Slack Starter Kit script to deploy a remote site setting and a custom metadata type record used for callouts. We've also included the setup of some sample data.

Setting Heroku Instance in your Slack App

This is the final step, you will need to enter the current Heroku Instance url in Slack App.

  1. To enter this value open your apps configuration page from this list, click App Manifest. Find the request_url fields (there will be two to update) in the manifest and modify it to replace heroku-app with your actual heroku domain name. Note at the end of this step your url should look like https://<heroku-domain>.herokuapp.com/slack/events.
  2. Once done that, you'll be prompted to verify the events endpoint. Click on 'verify'. You're ready to navigate to the app home!

How to Build and Deploy Code

Building Salesforce app using a Scratch Org

  • For Salesforce metadata synchronization use sfdx force:source:pull to retrieve and sfdx force:source:push to deploy metadata from orgs to local project folder force-app

Building Salesforce App Using Non-Scratch Org

  • For Salesforce metadata synchronization in developer orgs use sfdx force:source:retrieve -p force-app/main/default to retrieve and sfdx force:source:deploy -p force-app/main/default to deploy metadata from orgs to local project folder force-app

Building and deploying Bolt Node.js app

  • For the Bolt Node.js app use the steps below:
    • cd into apps/ready-to-fly folder cd apps/ready-to-fly
    • add git remote to app repo using heroku git:remote -a <heroku app name>
    • run git push heroku main to push code to Heroku

Local Development

  1. To use ngrok, first install it downloading the executable or with npm:
$ npm install ngrok -g
  1. Next you’ll have to sign up.
  2. Once logged in, navigate to “Setup & Installation“ and copy your auth token.
  3. Then set your auth token in your local machine:
$ ngrok authtoken my_auth_token
  1. Run the ngrok tunnel as follows:
$ ngrok http 3000
  1. Copy the ngrok tunnel URL to the following places:
  • Your manifest file request URLs
  • The HEROKU_URL environment variable in your .env file
  • The Callback URL for the connected app that’s used for authorization in Salesforce - simply add the ngrok URL in a new line
  • Add a new remote site setting that contains the ngrok URL, as it’s the one that we’ll use to callout from Salesforce to Slack
  • Modify the BoltAppConfigHeroku custom metadata type record URL__c, as it’s used in the Apex logic to make the callout
  1. Now you are prepared to run the app locally! In another terminal different from the one in which you’re running ngrok, execute node app.js from the project folder. You can then make changes to the code and restart the app as many times as you want.

Note about Managers DropDown Input

The Managers dropdown that appears when you create a travel request is populated with information pulled from Salesforce. Concretely, we look at the standard Manager field on the User object and pull two levels of Managers in the hirerachy. You can change that behavior to adapt it to your needs.

ready-to-fly's People

Contributors

albarivas avatar msrivastav13 avatar pozil avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.