PepperDash.Essentials.Plugins.Slack.Webhooks
1.0.0-initial-development.5
dotnet add package PepperDash.Essentials.Plugins.Slack.Webhooks --version 1.0.0-initial-development.5
NuGet\Install-Package PepperDash.Essentials.Plugins.Slack.Webhooks -Version 1.0.0-initial-development.5
<PackageReference Include="PepperDash.Essentials.Plugins.Slack.Webhooks" Version="1.0.0-initial-development.5" />
<PackageVersion Include="PepperDash.Essentials.Plugins.Slack.Webhooks" Version="1.0.0-initial-development.5" />
<PackageReference Include="PepperDash.Essentials.Plugins.Slack.Webhooks" />
paket add PepperDash.Essentials.Plugins.Slack.Webhooks --version 1.0.0-initial-development.5
#r "nuget: PepperDash.Essentials.Plugins.Slack.Webhooks, 1.0.0-initial-development.5"
#:package PepperDash.Essentials.Plugins.Slack.Webhooks@1.0.0-initial-development.5
#addin nuget:?package=PepperDash.Essentials.Plugins.Slack.Webhooks&version=1.0.0-initial-development.5&prerelease
#tool nuget:?package=PepperDash.Essentials.Plugins.Slack.Webhooks&version=1.0.0-initial-development.5&prerelease
Slack Webhooks Plugin (c) 2026
Overview
This is a PepperDash Essentials Plugin for Slack Webhooks integration. It allows Crestron control systems to send messages to Slack channels via Slack Incoming Webhooks.
Minimum Essentials Framework Versions
- 2.24.4
License
Provided under MIT license
Setting Up Slack Webhooks
- Go to Slack API Apps
- Create a new app or select an existing one
- Navigate to "Incoming Webhooks" and activate it
- Add a new webhook to the desired workspace/channel
- Copy the webhook URL for use in the configuration
Configuration Object
Device
Type: slackWebhooks
Option 1: Using Webhook URL (Simple, but limited to one channel)
The example below uses the secretstore to allow users to add the values using the console commands.
{
"key": "slack-webhooks-1",
"uid": 1,
"name": "Slack Webhooks",
"type": "slackWebhooks",
"group": "api",
"properties": {
"webhookUrl": {
"secret": {
"provider": "default",
"key": "webhookUrl"
}
},
"defaultUsername": "Crestron System",
"defaultIconEmoji": ":robot_face:",
"defaultChannel": "#general"
}
}
Option 2: Using Bot Token (Flexible, can send to any channel or DM users)
The example below uses the secretstore to allow users to add the values using the console commands.
{
"key": "slack-webhooks-1",
"uid": 1,
"name": "Slack Webhooks",
"type": "slackWebhooks",
"group": "api",
"properties": {
"botToken": {
"secret": {
"provider": "default",
"key": "botToken"
}
},
"defaultUsername": "Crestron System",
"defaultIconEmoji": ":robot_face:",
"defaultChannel": "#general"
}
}
Secret Store
Set the secrets
setsecret:1 default webhookUrl {SLACK-WEBHOOK-URL}
setsecret:1 default botToken {SLACK-BOT-TOKEN}
Update the secrets
updatesecret:1 default webhookUrl {UPDATED-WEBHOOK-URL}
updatesecret:1 default botToken {UPDATED-BOT-TOKEN}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
webhookUrl |
string | Yes (if no botToken) | The Slack Incoming Webhook URL |
botToken |
string | Yes (if no webhookUrl) | Slack Bot Token (starts with xoxb-). Allows DMs & any channel |
defaultUsername |
string | No | Override the default username for messages |
defaultIconEmoji |
string | No | Override the default icon (e.g., :robot_face:) |
defaultChannel |
string | No (Yes for Bot Token) | Default channel or user to send messages to |
Bridge
{
"key": "devices-bridge",
"uid": 11,
"name": "Devices Bridge",
"group": "api",
"type": "eiscApiAdvanced",
"properties": {
"control": { "ipid": "a6", "method": "ipidTcp", "tcpSshProperties": { "address": "127.0.0.2", "port": 0 } },
"devices": [
{ "deviceKey": "slack-webhooks-1", "joinStart": 1 }
]
}
}
Join Map
Digital Joins
| Join | Direction | Description |
|---|---|---|
| 2 | From SIMPL | Pulse to send the pending webhook message |
| 2 | To SIMPL | High when webhook is sending (busy indicator) |
| 3 | To SIMPL | High if last webhook send was successful |
| 4 | From SIMPL | Pulse to reset webhook channel to default |
| 7 | From SIMPL | Pulse to send the pending bot message |
| 7 | To SIMPL | High when bot is sending (busy indicator) |
| 8 | To SIMPL | High if last bot send was successful |
| 9 | From SIMPL | Pulse to reset bot channel to default |
Serial Joins
| Join | Direction | Description |
|---|---|---|
| 1 | To SIMPL | Device name |
| 2 | From SIMPL | Set webhook message text (use digital join 2 to trigger send) |
| 3 | From SIMPL | Send webhook message directly (sends immediately when received) |
| 4 | To/From SIMPL | Webhook channel override (feedback shows current) |
| 7 | From SIMPL | Set bot message text (use digital join 7 to trigger send) |
| 8 | From SIMPL | Send bot message directly (sends immediately when received) |
| 9 | To/From SIMPL | Bot channel/user override (feedback shows current) |
Usage
Webhook Method (Joins 2-4)
Use these joins when you have a webhook URL configured:
- Two-step approach: Set message text on serial join 2, then pulse digital join 2 to send
- Direct send: Send a string on serial join 3 - sends immediately
- Channel override: Set channel on serial join 4 (note: may not work with newer Slack webhooks)
Bot Method (Joins 7-9)
Use these joins when you have a bot token configured:
- Two-step approach: Set message text on serial join 7, then pulse digital join 7 to send
- Direct send: Send a string on serial join 8 - sends immediately
- Dynamic routing: Set channel/user on serial join 9 (e.g.,
#general,@username, orU0123456789)
Creating Slack App
Follow these steps to create a Slack App and generate an Incoming Webhook URL:
Step 1: Create a Slack App
- Go to the Slack API Apps page
- Click Create New App
- Select From scratch
- Enter an App Name (e.g., "Crestron Notifications")
- Select the Workspace where you want to install the app
- Click Create App
Step 2: Enable Incoming Webhooks
- In your app's settings, navigate to Features > Incoming Webhooks in the left sidebar
- Toggle the switch to On to activate Incoming Webhooks
- Scroll down to the Webhook URLs for Your Workspace section
Step 3: Add a Webhook to Your Workspace
- Click Add New Webhook to Workspace
- Select the channel where you want messages to be posted
- Click Allow to authorize the webhook
- You will be redirected back to the Incoming Webhooks page
Step 4: Copy the Webhook URL
- In the Webhook URLs for Your Workspace section, you will see your new webhook
- Click Copy to copy the webhook URL
- The URL will look like:
https://hooks.slack.com/services/TXXXXX/BXXXXX/XXXXXXXXXX
Step 5: Configure the Plugin
Use the copied webhook URL in your Essentials configuration:
{
"properties": {
"webhookUrl": "<YOUR_SLACK_WEBHOOK_URL>"
}
}
Optional: Customize Your App
You can customize how your messages appear in Slack:
- Navigate to Settings > Basic Information in your app settings
- Scroll to Display Information
- Add an App icon and description
- These will be the default appearance for messages (can be overridden via plugin config)
Security Notes
- Keep your webhook URL secret - anyone with the URL can post messages to your channel
- Webhook URLs do not expire but can be revoked from the Slack App settings
- Consider creating separate webhooks for different environments (dev/prod)
Creating Slack Bot (For Bot Token)
Bot Tokens allow you to send messages to any channel or direct message users. Follow these steps:
Step 1: Create a Slack App
- Go to the Slack API Apps page
- Click Create New App
- Select From scratch
- Enter an App Name (e.g., "Crestron Bot")
- Select the Workspace where you want to install the app
- Click Create App
Step 2: Add Bot Scopes
- In your app's settings, navigate to Features > OAuth & Permissions
- Scroll to Scopes > Bot Token Scopes
- Click Add an OAuth Scope and add these scopes:
chat:write- Required to send messageschat:write.public- Required to send to channels the bot hasn't joinedusers:read- Optional, for looking up user IDs
Step 3: Install App to Workspace
- Scroll up to OAuth Tokens for Your Workspace
- Click Install to Workspace
- Review the permissions and click Allow
- Copy the Bot User OAuth Token (starts with
xoxb-)
Step 4: Configure the Plugin
Use the Bot Token in your Essentials configuration:
{
"properties": {
"botToken": "<YOUR_BOT_TOKEN>",
"defaultChannel": "#general"
}
}
Sending to Channels vs Users
With a Bot Token, you can set the channel dynamically:
| Target | Format | Example |
|---|---|---|
| Public channel | #channel-name |
#general |
| Private channel | #channel-name |
#private-room (bot must be invited) |
| Direct message | @username or User ID |
@john.smith or U0123456789 |
Note: To DM a user, either:
- Use their User ID (most reliable):
U0123456789 - The bot must have been added to a conversation with them first
Finding a User ID
- In Slack, click on the user's profile
- Click the ... (More) button
- Select Copy member ID
Bot Token Security Notes
- Keep your bot token secret - it grants access to send messages as your bot
- Bot tokens do not expire but can be revoked from the Slack App settings
- Consider using different apps/tokens for different environments
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net472 is compatible. net48 was computed. net481 was computed. |
-
.NETFramework 4.7.2
- PepperDashEssentials (>= 2.24.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-initial-development.5 | 88 | 2/17/2026 |
| 1.0.0-initial-development.4 | 71 | 2/17/2026 |
| 1.0.0-initial-development.3 | 72 | 2/17/2026 |
| 1.0.0-initial-development.2 | 72 | 2/17/2026 |
| 1.0.0-initial-development.1 | 78 | 2/17/2026 |