Added exporter.py and documentation
This commit is contained in:
parent
23385c2f01
commit
8c4550f307
5 changed files with 439 additions and 82 deletions
61
README.md
61
README.md
|
@ -1,5 +1,62 @@
|
|||
# slack-exporter
|
||||
|
||||
A Slack app for exporting messages and file attachments from public and private channels.
|
||||
A Slack bot and standalone script for exporting messages and file attachments from public and private channels, using Slack's new Conversations API.
|
||||
|
||||
Note that Slack provides a similar service for workspace admins at [https://my.slack.com/services/export](https://my.slack.com/services/export) (where `my` can be replaced with your full workspace name to access workspace different than your default). However, it can only access public channels, while `slack-exporter` can be added to any channel.
|
||||
A similar service is provided by Slack for workspace admins at [https://my.slack.com/services/export](https://my.slack.com/services/export) (where `my` can be replaced with your full workspace name to refer to a workspace different than your default). However, it can only access public channels, while `slack-exporter` can retrieve data from any channel accessible to your user account.
|
||||
|
||||
## Authentication with Slack
|
||||
|
||||
There are two ways to use `slack-exporter` (detailed below). Both require a Slack API token to be able to communicate with your workspace.
|
||||
|
||||
1. Visit [https://api.slack.com/apps/](https://api.slack.com/apps/) and sign in to your workspace.
|
||||
2. Click `Create New App`, enter a name (e.g., `Slack Exporter`), and select your workspace.
|
||||
3. In the left-hand panel, navigate to `OAuth & Permissions`, and scroll to `User Token Scopes` (**not** `Bot Token Scopes`).
|
||||
4. Select the following permissions:
|
||||
- `channels:read`, `channels:history`
|
||||
- `groups:read`, `groups:history`
|
||||
- `mpim:read`, `mpim:history`
|
||||
- `im:read`, `im:history`
|
||||
- `users:read`
|
||||
5. Select `Install to Workspace` at the top of that page (or `Reinstall to Workspace` if you have done this previously) and accept at the prompt.
|
||||
6. Copy the `OAuth Access Token` (which will generally start with `xoxp` for user-level permissions)
|
||||
|
||||
## Usage
|
||||
|
||||
### As a standalone script
|
||||
|
||||
`exporter.py` can create an archive of all conversation history in your workspace which is accessible to your user account.
|
||||
|
||||
1. Run the following (replacing the value with the user token you obtained in the [Authentication with Slack](#authentication-with-slack) section above).
|
||||
|
||||
```shell script
|
||||
export SLACK_USER_TOKEN=xoxp-xxxxxxxxxxxxx...
|
||||
```
|
||||
|
||||
2. Run `python exporter.py --help` to view the available export options.
|
||||
|
||||
### As a Slack bot
|
||||
|
||||
`bot.py` is a Slack bot that responds to "slash commands" in Slack channels (e.g., `/export-channel`). To connect the bot to the Slack app generated in [Authentication with Slack](#authentication-with-slack), create a file named `.env` in the root directory of this repo, and add the following line:
|
||||
|
||||
```text
|
||||
SLACK_USER_TOKEN = xoxp-xxxxxxxxxxxxx...
|
||||
```
|
||||
|
||||
Save this file and run the Flask application in `bot.py` such that the application is exposed to the Internet. This can be done via a web server (e.g., Heroku), as well as via the ngrok service, which assigns your `localhost` server a public URL.
|
||||
|
||||
To use the ngrok method:
|
||||
|
||||
1. [Download](https://ngrok.com/download) the appropriate binary.
|
||||
2. Run `python bot.py`
|
||||
3. Run the ngrok binary with `path/to/ngrok http 5000`, where `5000` is the port on which the Flask application (step 2) is running. Copy the forwarding HTTPS address provided.
|
||||
|
||||
Return to the Slack app you created in [Authentication with Slack](#authentication-with-slack) and navigate to the `Slash Commands` page in the sidebar. Create the following slash commands (one for each applicable Flask route in `bot.py`):
|
||||
|
||||
| Command | Request URL | Arguments | Example Usage |
|
||||
|-----------------|-------------------------------------------|--------------|----------------------|
|
||||
| /export-channel | https://`[host_url]`/slack/export-channel | json \| text | /export-channel text |
|
||||
| /export-replies | https://`[host_url]`/slack/export-replies | json \| text | /export-replies json |
|
||||
|
||||
where, if using ngrok, `[domain]` would be replaced with something like `https://xxxxxxxxxxxx.ngrok.io`.
|
||||
|
||||
Navigate back to `OAuth & Permissions` and click `(Re)install to Workspace` to add these slash commands to the workspace.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue