Skip to content

Commit

Permalink
example: slack home tab (#829)
Browse files Browse the repository at this point in the history
  • Loading branch information
etrex authored Jul 6, 2020
1 parent 534b336 commit 4fb9673
Show file tree
Hide file tree
Showing 5 changed files with 137 additions and 0 deletions.
2 changes: 2 additions & 0 deletions examples/slack-home-tab/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SLACK_ACCESS_TOKEN=
SLACK_SIGNING_SECRET=
58 changes: 58 additions & 0 deletions examples/slack-home-tab/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Slack Home Tab

## Install and Run

Download this example or clone [bottender](https://github.com/Yoctol/bottender).

```sh
curl https://codeload.github.com/Yoctol/bottender/tar.gz/master | tar -xz --strip=2 bottender-master/examples/slack-home-tab
cd slack-home-tab
```

Install dependencies:

```sh
npm install
```

You must fill `SLACK_ACCESS_TOKEN` and `SLACK_SIGNING_SECRET` in your `.env` file.

If you are not familiar with Slack Bot, you may refer to Bottender's doc, [Slack Setup](https://bottender.js.org/docs/channel-slack-setup), to find detailed instructions.

After that, you can run the bot with this npm script:

```sh
npm run dev
```

This command starts a server listening at `http://localhost:5000` for bot development.

If you successfully start the server, you get a webhook URL in the format of `https://xxxxxxxx.ngrok.io/webhooks/slack` from your terminal.

## Slack App Settings

To enable the home tab, go to [Slack Developer Console](https://api.slack.com/apps) / [YourApp] / App Home / Show Tabs, and enable the home tab.

## Set Webhook

To set the webhook, go to [Slack Developer Console](https://api.slack.com/apps) / [YourApp] / Event Subscriptions and [Slack Developer Console](https://api.slack.com/apps) / [YourApp] / Interactivity & Shortcuts, and use the webhook URL you got from running `npm run dev` to edit Request URLs for your bot.

You must subscribed the `app_home_opened` event.

## Idea of This Example

This example is a bot running on [Slack](https://slack.com/).

This example contains the following topics:

- How to use home tab.
- How to update home tab view.

For more information, check our [Slack guides](https://bottender.js.org/docs/en/channel-slack-block-kit).

## Related Examples

- [slack-modal-update](../slack-modal-update)
- [slack-modal-push](../slack-modal-push)
- [slack-modal-form](../slack-modal-form)
- [slack-modal-on-home](../slack-modal-on-home)
10 changes: 10 additions & 0 deletions examples/slack-home-tab/bottender.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
channels: {
slack: {
enabled: true,
path: '/webhooks/slack',
accessToken: process.env.SLACK_ACCESS_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET,
},
},
};
58 changes: 58 additions & 0 deletions examples/slack-home-tab/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
const { router, route, slack } = require('bottender/router');

let counter = 0;

function getBlocks(text) {
return [
{
type: 'section',
text: {
type: 'mrkdwn',
text,
},
},
{
type: 'actions',
elements: [
{
type: 'button',
text: {
type: 'plain_text',
text: 'add count',
emoji: true,
},
value: 'add count',
},
],
},
];
}

async function Home(context) {
await context.views.publish({
userId: context.session.user.id,
view: {
type: 'home',
blocks: getBlocks(`click count: ${counter}`),
},
});
}

async function OnBlockActions(context) {
if (context.event.action.value === 'add count') {
counter += 1;
return Home;
}
}

async function Default(context) {
await context.sendText('Hello World');
}

module.exports = async function App(context) {
return router([
slack.event('app_home_opened', Home),
slack.event('block_actions', OnBlockActions),
route('*', Default),
]);
};
9 changes: 9 additions & 0 deletions examples/slack-home-tab/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"scripts": {
"dev": "bottender dev",
"start": "bottender start"
},
"dependencies": {
"bottender": "1.5.1-alpha.4"
}
}

0 comments on commit 4fb9673

Please sign in to comment.