I have an outgoing webhook that listens to my public channel. When I post an image on the channel, I get a url for that image. However this url cannot be shared publicly since people need to be authenticated to view the message.
Is there any way I can generate a public link using the Slack API or is there no way around doing this manually?
Yes, that should be possible with the API.
Here is what you need to do to get the public url for an image that was uploaded to a channel by a user:
Get the id of the posted image file with files.list using the user_id and timestamp you received through the outgoing webhook from Slack
Call files.sharedPublicURL to make the file public and receive a public url
Related
I am building a Slack App which show an ephemeral message to users if they send something to anywhere: direct messages, public channel or private channel. I added some events to my app according to documentation and they actually work but posting an ephemeral message on these events works only for public channel and direct messages. For private channel and messages with myself I got "channel_not_found" as error message. I got bot token type if it makes sense.
The reason you get this error message most likely is that your bot is not a member of the respective private channel.
A workaround is to ask the user to invite your bot user into every private channel he want to use your app.
I am created slack bot, is there is any possible way send reply message as file? (I need to sent some file as reply message based on input). I tried using api file.upload it make the file as private not able access using url, but if i am upload to channel using sampe api, file is public, is there any way to send direct message as file by bot)
Yes. You can share a file directly and privately with a user by sharing it in a direct message channel with the user.
Just put the {user-id} of the user you want to share the file with in the channels parameter of the files.upload API method and you are all set.
Your slack app will need the files:write:user scope. This also works with bots.
Example for user with ID U12345678:
curl -F content="Hello" -F channels=U12345678 -F token=xoxp-your-token-here https://slack.com/api/files.upload
When responding to a slash command with a string that includes a channel ID like <#C3989289>, the response in Slack shows a deep link to that channel "#general.
When I do the same for a direct message or IM, the response in Slack shows "#deleted-channel" and it's not a link.
I don't see anything in the docs about why this: https://api.slack.com/docs/message-formatting#linking_to_channels_and_users
Slack has confirmed that their system is designed in this way to protect private channels/direct messages from being made aware to users, even if the recipient of the message containing the deep link does belong to that particular channel/DM.
I have integrated slack in my custom application using the API provided by Slack.
I am able to fetch the post from Slack and able to display it in my application. I am able to fetch the image that was uploaded with the post (Few days back) but today when I added a post with the image. The image is not being displayed in the application, when I am trying to access the image URL in the browser it is asking for Authentication.
I am accessing the slack rest API to fetch the post from slack. from the response I am taking the "thumb_64" parameter from the "file" object.
I am able to access the below image URL, this image was uploaded on 2016-01-11
https://files.slack.com/files-tmb/T0F8RH7U7-F0J505EG1-33434fadf3/screenshot_from_2015-12-28_15_23_39_160.png
But I am not able to access the below mentioned URL ,this image is uploaded on 2016-02-16
https://files.slack.com/files-tmb/T0F8RH7U7-F0MHZL70Q-d740ed784b/configration_160.png
Thanks & Regards,
Have you seen the update where #slackapi announced about accessing files using the Web API?
Essentially, you now need to provide authentication to access file assets, by specifying an HTTP Authorization header with an OAuth token that has the correct scopes to access that kind of data for a team.
For example, you'd send a header like this with your GET request:
GET https://files.slack.com/files-tmb/T0F8RH7U7-F0MHZL70Q-d740ed784b/configration_160.png
Authorization: Bearer YOUR_VALID_ACCESS_TOKEN_HERE
The File type documentation goes into further detail.
I've hunted around, and I'm not seeing how it's possible to fetch any user info by using only a videoID (from a video that a user uploaded), preferably without oAuth. I just need either the user's channel or user name.
https://developers.google.com/youtube/v3/docs/videos/list responds only with video info and requires oAuth.
So, for example. Given the "v" id in this following url, I could fetch the channel id, UCAIIYxc9Q5uHOUeoF3EWzkA, without requiring the user's permission. (this is all public anyway):
https://www.youtube.com/watch?v=FH2zbHrRY9A
Any ideas?
Use the API: https://developers.google.com/youtube/v3/docs/videos/list
The call would be https://www.googleapis.com/youtube/v3/videos?part=snippet&id=FH2zbHrRY9A&key={YOUR_API_KEY}
channelID will be in the snippet returned.