From 79a76e16fca908a8fd49c960f6c2723c6b4dfdad Mon Sep 17 00:00:00 2001 From: Anders Date: Mon, 8 Feb 2021 07:29:52 +0100 Subject: [PATCH] Update readme on how to thread --- .github/workflows/slack-thread.yml | 4 +- README.md | 67 +++++++++++++++++++++++++++-- images/thread.png | Bin 0 -> 13136 bytes 3 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 images/thread.png diff --git a/.github/workflows/slack-thread.yml b/.github/workflows/slack-thread.yml index 11b331c..39901de 100644 --- a/.github/workflows/slack-thread.yml +++ b/.github/workflows/slack-thread.yml @@ -1,9 +1,9 @@ -name: slack-reaction +name: slack-thread on: [push, issues] jobs: - slack-reaction: + slack-thread: runs-on: ubuntu-20.04 name: Sends a message to Slack when a push, a pull request or an issue is made diff --git a/README.md b/README.md index d01ac4f..4872837 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ![](https://img.shields.io/github/release/archive/github-actions-slack/all.svg) ![](https://snyk.io/test/github/archive/github-actions-slack/badge.svg) -This Action allows you to send messages (and reactions) to Slack from your Github Actions. Supports Slack's required arguments as well as all the optional once. It's JavaScript-based and thus fast to run. +This Action allows you to send messages (and reactions/threads) to Slack from your Github Actions. Supports Slack's required arguments as well as all the optional once. It's JavaScript-based and thus fast to run. ![Slack result](./images/slack-result.png "Slack result") @@ -26,10 +26,13 @@ With the latest changes to Slack API, please use channel id instead of channel n This action supports: -- 1. Send messages to Slack
+- 1. Send messages
-- 2. Send reaction on sent messages to Slack
+- 2. Send thread response to message
+ + +- 3. Send reaction on sent messages
## 1. Send messages to Slack @@ -152,7 +155,63 @@ jobs: ![Slack result](./images/slack-result-optional.png "Slack result") -## 2. Send reaction on sent messages to Slack +## 2. Send thread response to message to Slack + +To send a thread response you have the same setup as for sending a message, but you add some extra optional parameters: + +- `slack-optional-thread_ts` - The timestamp of the message you want to reply/send thread to. You can find the timestamp in the response payload after sending a message + +- `slack-optional-reply_broadcast` - To broadcast thread reply in channel + +### Sample Action file + +[.github/workflows/slack-thread.yml](.github/workflows/slack-thread.yml) + +See `Send Thread Message` part below: + +``` +name: slack-thread + +on: [push, issues] + +jobs: + slack-thread: + runs-on: ubuntu-20.04 + name: Sends a message to Slack when a push, a pull request or an issue is made + + steps: + - name: Send Slack Message + uses: archive/github-actions-slack@master + id: send-message + + with: + slack-function: send-message + slack-bot-user-oauth-access-token: ${{ secrets.SLACK_BOT_USER_OAUTH_ACCESS_TOKEN }} + slack-channel: CPPUV5KU0 + slack-text: This is a message + + - name: Send "Slack Message" Result + run: echo "Data - ${{ steps.send-message.outputs.slack-result }}" + + - name: Some step in between + run: echo "..." + + - name: Send Thread Message + uses: archive/github-actions-slack@master + with: + slack-function: send-message + slack-bot-user-oauth-access-token: ${{ secrets.SLACK_BOT_USER_OAUTH_ACCESS_TOKEN }} + slack-channel: ${{ fromJson(steps.send-message.outputs.slack-result).response.channel }} + slack-text: This is a thread reply + slack-optional-thread_ts: ${{ fromJson(steps.send-message.outputs.slack-result).response.message.ts }} + #slack-optional-reply_broadcast: true # To broadcast thread reply in channel + + - name: Send "Send Thread Message" Result + run: echo "Data - ${{ steps.send-message.outputs.slack-result }}" + +``` + +## 3. Send reaction on sent messages to Slack **Required: Github Repository Secret:** diff --git a/images/thread.png b/images/thread.png new file mode 100644 index 0000000000000000000000000000000000000000..9675b2b28fd61f89db86bf10e7467451b96acc82 GIT binary patch literal 13136 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 Lr6^eqGz$7ZZE#)t literal 0 HcmV?d00001