fuzzi
fuzzi

Reputation: 2277

Slack Incoming Webhook sends as my user

I've created an Incoming Webhook within my Slack workspace. I'm using it from a third party tool to post a JSON object to the hook url. I want to send a notification to @user_1

My issue is that the notification sends to a private channel between myself and that user @user_1, rather than sending to @user_1 directly, say via Slackbot or a channel with only that user in.

How do I ensure that the notification is sent from either Slackbot or @user_1, rather than myself?

The way that I set up is by creating a New App with an Incoming Webhook. For the channel, I select @user_1, and use the provided url by the third party to send the slack notification.

Upvotes: 5

Views: 3553

Answers (2)

Vadim Landa
Vadim Landa

Reputation: 2844

For webhook-based direct messages, prefix the Slack user's ID with an '@' in the payload:

{ 
   "text": "This is a line of text in a channel.",
   "channel": "@U1A2B3C4D"
}

Note that such messages will appear to have been posted by Slackbot. Also note that you can actually use any active webhook for direct messaging regardless of the channel that the webhook was defined for.

Upvotes: 0

Erik Kalkoken
Erik Kalkoken

Reputation: 32854

This seams to be standard behavior when setting up a webhook through a Slack app.

But there is an alternative approach: You can also set up incoming webhooks as custom integration. Then you are then able to send messages to the slackbot channel of a user.

To setup a webhook as a custom integration go to Slack App Directory and add the app "Incoming Webhook". Then create a new webhook. You can either directly use the ID of the destination user as channel in the initial configuration, or use the channel override feature by including a channel property in the message.

Example:

{ 
   "text": "This is a line of text in a channel.",
   "channel": "U12345678"
}

Upvotes: 4

Related Questions