Skip to content

slack-samples/deno-function-template

Repository files navigation

Deno Function Template

This is a template used to build out a single, workflow-less function. To learn more, read the tutorial on creating custom functions for Workflow Builder.

Guide Outline:


Setup

Before getting started, first make sure you have a development workspace where you have permission to install apps. Please note that the features in this project require that the workspace be part of a Slack paid plan.

Install the Slack CLI

To use this template, you need to install and configure the Slack CLI. Step-by-step instructions can be found in our Quickstart Guide.

Clone the Template

Start by cloning this repository:

# Clone this project onto your machine
$ slack create my-app -t slack-samples/deno-function-template

# Change into the project directory
$ cd my-app

Running Your Project Locally

While building your app, you can see your changes appear in your workspace in real-time with slack run. You'll know an app is the development version if the name has the string (local) appended.

# Run app locally
$ slack run

Connected, awaiting events

To stop running locally, press <CTRL> + C to end the process.

Testing

For an example of how to test a function, see functions/sample_function_test.ts. Test filenames should be suffixed with _test.

Run all tests with deno test:

$ deno test

Deploying Your App

Once development is complete, deploy the app to Slack infrastructure using slack deploy:

$ slack deploy

When deploying for the first time, you'll be prompted to create a new link trigger for the deployed version of your app. When that trigger is invoked, the workflow should run just as it did when developing locally (but without requiring your server to be running).

Viewing Activity Logs

Activity logs of your application can be viewed live and as they occur with the following command:

$ slack activity --tail

Adding Function to Workflow Builder

This function can be used in Workflow Builder once the app is installed to your workspace (either through slack run or slack deploy). To access Workflow Builder, you can go to the "Tools" option under your workspace and select "Workflow Builder".

From here, you can create a new workflow. Functions from installed apps can be added as a step within Workflow Builder; to add it, search for your app name in the "Steps" sidebar when you're building out your new workflow and you should see the app's related functions show up in the results. You can select this option and fill out the needed inputs to pass into the function. At this point, the function will be added as a step in your workflow!

Project Structure

.slack/

Contains apps.dev.json and apps.json, which include installation details for development and deployed apps.

functions/

Functions are reusable building blocks of automation that accept inputs, perform calculations, and provide outputs. Functions can be used independently or as steps in workflows.

manifest.ts

The app manifest contains the app's configuration. This file defines attributes like app name and description.

slack.json

Used by the CLI to interact with the project's SDK dependencies. It contains script hooks that are executed by the CLI and implemented by the SDK.

Resources

To learn more about developing automations on Slack, visit the following: