slack platform allows you to deliver notifications from Home Assistant to Slack.
- Create a new app under your Slack.com account.
- Click the
OAuth & Permissionslink in the sidebar, under the Features heading.
- In the Scopes section, add the
dnd:readscopes and select
Send messages as user. Many errors can occur if these options are not set correctly.
- Scroll up to
OAuth Tokens & Redirect URLsand click
Install to Workspace.
- Copy your
OAuth Access Tokenand put that key into the config flow.
There is an app credential Verification Token on the Basic Settings of your app. This is not the API key you want.
It is also possible to use Slack bots as users. Just create a new bot at https://[YOUR_TEAM].slack.com/apps/build/custom-integration and use the provided token for that. You can add an icon from the frontend for Home Assistant and give the bot a meaningful name.
Don’t forget to invite the bot to the room where you want to get the notifications.
Slack uses the standard emoji sets used here. Alternatively a publicly accessible URL may be used.
In order to modify your Slack bot’s username and icon, you must ensure your Slack app has the
chat:write.customize OAuth scope. See the Slack API documentation for more information.
notify service will be named after the chat server the app is installed on. For example, a server named “Slack Chat” wil display as
Adding Slack to your Home Assistant instance can be done via the user interface, by using this My button:
If the above My button doesn’t work, you can also perform the following steps manually:
One sensor entity will be created:
- Do Not Disturb Timer: The amount of time left for Do Not Disturb status.
The following attributes can be placed inside the
data key of the service call for extended functionality:
||yes||The username of the Slack bot.|
||yes||The icon of the Slack bot.|
||yes||A file to include with the message; see below.|
||yes||Array of Slack blocks. NOTE: if using
||yes||The same as
Note that using
file will ignore all usage of
blocks_template (as Slack does not support those frameworks in messages that accompany uploaded files).
To include a local file with the Slack message, use these attributes underneath the
||no||A local filepath that has been whitelisted.|
To include a remote file with the Slack message, use these attributes underneath the
||no||A URL that has been whitelisted.|
||yes||An optional username if the URL is protected by HTTP Basic Auth.|
||yes||An optional password if the URL is protected by HTTP Basic Auth.|
To send a file from local path:
message: Message that will be added as a comment to the file. title: Title of the file. data: file: path: /path/to/file.ext
To send a file from remote path:
message: Message that will be added as a comment to the file. title: Title of the file. data: file: url: "http://site.com/image.jpg"
To send a file from remote path that is protected by HTTP Basic Auth:
message: Message that will be added as a comment to the file. title: Title of the file. data: file: url: "http://site.com/image.jpg" username: user password: pass
To use the block framework:
message: Fallback message in case the blocks don't display anything. title: Title of the file. data: blocks: - type: section text: type: mrkdwn text: 'Danny Torrence left the following review for your property:' - type: section block_id: section567 text: type: mrkdwn text: "<https://example.com|Overlook Hotel> \n :star: \n Doors had too many axe holes, guest in room 237 was far too rowdy, whole place felt stuck in the 1920s." accessory: type: image image_url: https://is5-ssl.mzstatic.com/image/thumb/Purple3/v4/d3/72/5c/d3725c8f-c642-5d69-1904-aa36e4297885/source/256x256bb.jpg alt_text: Haunted hotel image - type: section block_id: section789 fields: - type: mrkdwn text: |- *Average Rating* 1.0
Send a message directly to a user by setting the target to their member ID. Here are instructions to obtain a member ID.
message: "Hello there!" target: "U12345" title: "Hi" data: blocks: 
Send a message to a channel that mentions (@username, highlights a users name in yellow) a user. Here are instructions to obtain a member ID.
message: "<@U12345> your appointment starts soon" target: "#general" title: "Reminder" data: blocks: