https://github.com/blendthink/anniversary-slack-app
https://github.com/blendthink/anniversary-slack-app
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/blendthink/anniversary-slack-app
- Owner: blendthink
- License: mit
- Created: 2022-09-27T01:02:21.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-07T11:45:25.000Z (about 3 years ago)
- Last Synced: 2025-04-01T10:24:09.272Z (about 1 year ago)
- Language: TypeScript
- Size: 439 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Deno Hello World Slack App
This sample app demonstrates how to use a function, workflow, and trigger to
send a greeting to channel.
**Guide Outline**:
- [Setup](#setup)
- [Install the Slack CLI](#install-the-slack-cli)
- [Clone the Template](#clone-the-template)
- [Create a Link Trigger](#create-a-link-trigger)
- [Running Your Project Locally](#running-your-project-locally)
- [Testing](#testing)
- [Deploying Your App](#deploying-your-app)
- [Viewing Activity Logs](#viewing-activity-logs)
- [Project Structure](#project-structure)
- [Resources](#resources)
---
## Setup
Before getting started, make sure you have a development workspace where you
have permissions to install apps. If you don’t have one set up, go ahead and
[create one](https://slack.com/create). Also, please note that the workspace
requires any of [the Slack paid plans](https://slack.com/pricing).
### Install the Slack CLI
To use this sample, you first need to install and configure the Slack CLI.
Step-by-step instructions can be found in our
[Quickstart Guide](https://api.slack.com/future/quickstart).
### Clone the Sample
Start by cloning this repository:
```zsh
# Clone this project onto your machine
$ slack create my-app -t slack-samples/deno-hello-world
# Change into this project directory
$ cd my-app
```
## Create a Link Trigger
[Triggers](https://api.slack.com/future/triggers) are what cause workflows to
run. These triggers can be invoked by a user, or automatically as a response to
an event within Slack.
A [link trigger](https://api.slack.com/future/triggers/link) is a type of
trigger that generates a **Shortcut URL** which, when posted in a channel or
added as a bookmark, becomes a link. When clicked, the link trigger will run the
associated workflow.
Link triggers are _unique to each installed version of your app_. This means
that Shortcut URLs will be different across each workspace, as well as between
[locally run](#running-your-project-locally) and
[deployed apps](#deploying-your-app). When creating a trigger, you must select
the Workspace that you'd like to create the trigger in. Each Workspace has a
development version (denoted by `(dev)`), as well as a deployed version.
To create a link trigger for the workflow in this sample, run the following
command:
```zsh
$ slack trigger create --trigger-def triggers/greeting_trigger.ts
```
After selecting a Workspace, the output provided will include the link trigger
Shortcut URL. Copy and paste this URL into a channel as a message, or add it as
a bookmark in a channel of the Workspace you selected.
**Note: this link won't run the workflow until the app is either running locally
or deployed!** Read on to learn how to run your app locally and eventually
deploy it to Slack hosting.
## Running Your Project Locally
While building your app, you can see your changes propagated to your workspace
in real-time with `slack run`. In both the CLI and in Slack, you'll know an app
is the development version if the name has the string `(dev)` appended.
```zsh
# Run app locally
$ slack run
Connected, awaiting events
```
Once running, click the
[previously created Shortcut URL](#create-a-link-trigger) associated with the
`(dev)` version of your app. This should start the included sample workflow.
To stop running locally, press ` + C` to end the process.
## Testing
For an example of how to test a function, see
`functions/greeting_function_test.ts`. Test filenames should be suffixed with
`_test`.
Run all tests with `deno test`:
```zsh
$ deno test
```
## Deploying Your App
Once you're done with development, you can deploy the production version of your
app to Slack hosting using `slack deploy`:
```zsh
$ slack deploy
```
After deploying, [create a new link trigger](#create-a-link-trigger) for the
production version of your app (not appended with `(dev)`). Once the trigger is
invoked, the workflow should run just as it did in when developing locally.
### Viewing Activity Logs
Activity logs for the production instance of your application can be viewed with
the `slack activity` command:
```zsh
$ slack activity
```
## Project Structure
### `manifest.ts`
The [app manifest](https://api.slack.com/future/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.
### `/functions`
[Functions](https://api.slack.com/future/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.
### `/workflows`
A [workflow](https://api.slack.com/future/workflows) is a set of steps that are
executed in order. Each step in a workflow is a function.
Workflows can be configured to run without user input or they can collect input
by beginning with a [form](https://api.slack.com/future/forms) before continuing
to the next step.
### `/triggers`
[Triggers](https://api.slack.com/future/triggers) determine when workflows are
executed. A trigger file describes a scenario in which a workflow should be run,
such as a user pressing a button or when a specific event occurs.
## Resources
To learn more about developing with the CLI, you can visit the following guides:
- [Creating a new app with the CLI](https://api.slack.com/future/create)
- [Configuring your app](https://api.slack.com/future/manifest)
- [Developing locally](https://api.slack.com/future/run)
To view all documentation and guides available, visit the
[Overview page](https://api.slack.com/future/overview).