=== HameSlack === Tags: slack Contributors: hametuha, Takahashi_Fumiki Tested up to: 6.9 Stable Tag: 2.2.0 License: GPLv3 or later License URI: http://www.gnu.org/licenses/gpl-3.0.txt A Slack utility for WordPress. == Description == This plugin integrates [Slack](https://slack.com) and WordPress. = Core Conception = By default, this plugin does nothing. It's true. Slack has many API integration, but **hameslack** uses 2 of them. - [Incoming Webhook](https://api.slack.com/incoming-webhooks) to post to slack. - [Slack App](https://api.slack.com/apps) to interact with slack. Upper is easier. This plugin helps the connection between Slack and WordPress and you can concentrate on what you should do with slack. = Use Cases = Here is a list of use case of us on WordPress with many editors. - **Easy** Post notification to slack if some post is awaiting review. - **Difficult** Post access summary to slack once a week, because my colleague doesn't open Google Analytics. - **Very Difficult** Convert slack conversation to single post and make interview post. For more details, please read the [Addons documentation](https://github.com/hametuha/hameslack/blob/master/addons/README.md). = How to Integrate = The simplest usage is *post to slack*. You can do like below:
do_action( 'hameslack', $text_to_post, $attachments, $channel );
Function `hameslack_post( $content, $attachment, $channel )` is also available, but I prefer to use `do_action` to avoid annoying `if ( function_exists('func_name')) `. Everything works fine if you set properly. = Deprecated API = - **Sending Invitation** deprecated at 2.0: this endpoint was unofficial and official one is only for Enterprise grid. Users now can send invitation reqeust from their profile page. - **Outgoind Webhook** deprecated at 2.0: Slack recommends Events API instead. == Install == = From Plugin Repository = Click install and activate it. = From GitHub = Download from [Releases](https://github.com/hametuha/hameslack/releases) and you can use it. Any pull requests are welcomed. = Enter Credentials = To post a message to slack, you need Payload URL. [Create an app](https://api.slack.com/apps/) and activate "Incoming Webhooks". Now you can get payload URL. To get Bot Token, go to "OAuth & Permissions". By installing your app to your workspace, Bot token will be generated. = Do something = As mentioned above, this plugin does nothing by default. Enable built-in addons from the settings page, or read the [Addons documentation](https://github.com/hametuha/hameslack/blob/master/addons/README.md) to write your own. If you have any request, please make issue on [github](https://github.com/hametuha/hameslack). == Development == This plugin requires custom code to work with your Slack workspace. Here's how to set up a local development environment. = Prerequisites = - Node.js >= 22 (managed via [Volta](https://volta.sh/)) - Docker Desktop (for [wp-env](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-env/)) - [cloudflared](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/get-started/) (for Slack Webhook testing) = Getting Started =
=== Install dependencies ===
npm install
composer install

=== Start WordPress local environment ===
npm start

=== Build assets ===
npm run package

=== Watch for changes during development ===
npm run watch
= Receiving Slack Webhooks Locally = Slack requires a public HTTPS URL for Event Subscriptions and Interactive Components. Use Cloudflare Tunnel to expose your local environment:
=== In a separate terminal, start the tunnel ===
npm run tunnel
This gives you a temporary public URL like `https://random-name.trycloudflare.com`. Then: 1. Go to your [Slack App settings](https://api.slack.com/apps) 2. Update **Event Subscriptions** Request URL to `https://random-name.trycloudflare.com/wp-json/hameslack/v1/...` 3. Update **Interactivity & Shortcuts** Request URL similarly 4. The URL changes each time you restart the tunnel **Note:** Make sure WordPress permalink settings are not set to "Plain" — pretty permalinks are required for `/wp-json/` to work through the tunnel. = NPM Scripts = | Command | Description | |---------|-------------| | `npm start` | Start wp-env | | `npm run package` | Build all assets (CSS + JS) | | `npm run watch` | Watch for file changes | | `npm run tunnel` | Open Cloudflare Tunnel to localhost:8888 | | `npm run lint` | Run ESLint + Stylelint | | `npm run fix` | Auto-fix lint errors | | `npm test` | Run PHPUnit tests | == Screenshots == 1. You can create such kind of bot. 2. You can set up everything on setting screen. 3. You can create Outgoing Webhooks as custom post type. == Changelog == = 2.2.0 = - Add hook-based addon system with settings UI. - Add built-in addons: Pending Review Notify (Incoming Webhook sample) and Slash Command Dashboard (Bot Token sample). - Fix double URL-encoding in `hameslack_bot_request()` for POST requests. = 2.1.0 = - Bump required versions: PHP 7.4 and WP 6.6 = 2.0.0 = - Remove invitation feature and users now can send a simple message to specific channel to request invitation. - Bot is required. = 1.2.0 = - If [gianism](https://wordpress.org/plugins/gianism) is enabled, you can log in with Slack account. = 1.1.1 = - Bugfix on REST API. = 1.1.0 = - Add invitation request feature. = 1.0.2 = - Add auto deploy. = 1.0.0 = - First release.