Merge pull request #22 from stordco/webclient-json
Fix #18 - Enable passing JSON payload to Slack App Route
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
new_push_job:
|
||||
runs-on: ubuntu-latest
|
||||
name: New push to repo
|
||||
steps:
|
||||
- name: Send GitHub trigger payload to Slack Workflow Builder
|
||||
id: slack
|
||||
uses: slackapi/[email protected]
|
||||
with:
|
||||
channel-id: 'SLACK_CHANNEL_ID' # ID of Slack Channel you want to post to
|
||||
payload: "{\"text\":\"posting from a github action\"}"
|
||||
env:
|
||||
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
|
||||
@@ -0,0 +1,47 @@
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
new_push_job:
|
||||
runs-on: ubuntu-latest
|
||||
name: New push to repo
|
||||
steps:
|
||||
- name: Send GitHub trigger payload to Slack Workflow Builder
|
||||
id: slack
|
||||
uses: slackapi/[email protected]
|
||||
with:
|
||||
channel-id: 'SLACK_CHANNEL_ID' # ID of Slack Channel you want to post to
|
||||
payload: |
|
||||
{
|
||||
"blocks": [
|
||||
{ "type": "divider" },
|
||||
{
|
||||
"type": "image",
|
||||
"title": {
|
||||
"type": "plain_text",
|
||||
"text": "Slack Slack Slack",
|
||||
"emoji": true
|
||||
},
|
||||
"image_url": "https://media.makeameme.org/created/a-slack-this.jpg",
|
||||
"alt_text": "marg"
|
||||
},
|
||||
{
|
||||
"type": "actions",
|
||||
"elements": [
|
||||
{
|
||||
"type": "button",
|
||||
"text": {
|
||||
"type": "plain_text",
|
||||
"text": $values.button_text
|
||||
},
|
||||
"url": $values.button_url
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
channel-id": "NEW_TARGET_CHANNEL_ID"
|
||||
}
|
||||
env:
|
||||
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
|
||||
values: |
|
||||
button_text: ${{ github.sha }}
|
||||
button_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||
@@ -13,35 +13,37 @@ try {
|
||||
throw 'Need to provide at least one botToken or webhookUrl'
|
||||
}
|
||||
|
||||
if(payload) {
|
||||
try {
|
||||
// confirm it is valid json
|
||||
payload = JSON.parse(payload);
|
||||
} catch (e) {
|
||||
// passed in payload wasn't valid json
|
||||
console.error("passed in payload was invalid JSON")
|
||||
throw 'Need to provide valid JSON payload'
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof botToken !== 'undefined' && botToken.length > 0) {
|
||||
const message = core.getInput('slack-message');
|
||||
const channelId = core.getInput('channel-id');
|
||||
const web = new WebClient(botToken);
|
||||
|
||||
if(channelId.length > 0 && message.length > 0) {
|
||||
if(channelId.length > 0 && (message.length > 0 || payload)) {
|
||||
// post message
|
||||
web.chat.postMessage({text: message, channel: channelId});
|
||||
web.chat.postMessage({channel: channelId, text: message, ...(payload || {})});
|
||||
} else {
|
||||
console.log('missing either channel-id or slack-message! Did not send a message via chat.postMessage with botToken');
|
||||
console.log('missing either channel-id, slack-message or payload! Did not send a message via chat.postMessage with botToken');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (typeof webhookUrl !== 'undefined' && webhookUrl.length > 0) {
|
||||
|
||||
if (payload.length < 1) {
|
||||
if (!payload) {
|
||||
// No Payload was passed in
|
||||
console.log('no custom payload was passed in, using default payload that triggered the GitHub Action')
|
||||
// Get the JSON webhook payload for the event that triggered the workflow
|
||||
payload = github.context.payload;
|
||||
} else {
|
||||
try {
|
||||
// confirm it is valid json
|
||||
payload = JSON.parse(payload);
|
||||
} catch (e) {
|
||||
// passed in payload wasn't valid json
|
||||
console.error("passed in payload was invalid JSON")
|
||||
throw 'Need to provide valid JSON payload'
|
||||
}
|
||||
}
|
||||
|
||||
// flatten JSON payload (no nested attributes)
|
||||
|
||||
Reference in New Issue
Block a user