Можете ли вы загрузить файл в Slack API, используя files.upload от имени другого пользователя?

Я пытаюсь найти способ, чтобы приложение опубликовало фрагмент текста в нашем канале поддержки через Slack API. Используя метод files.upload, я могу создать фрагмент текста и поделиться им с каналом, но сообщение, похоже, исходит от меня (потому что токен, используемый для аутентификации запроса, принадлежит мне).

Я ищу способ сделать это, но сделайте так, чтобы он отображался с настраиваемым именем пользователя и значком, как вы можете с параметрами username и icon_url метода chat.postMessage. Есть ли способ добиться этого?


person neal    schedule 03.06.2016    source источник


Ответы (3)


Есть два пути.

Способ 1. - Если вы хотите загружать только в канал и вам не нужно слушать какой-либо разговор, вы можете использовать входящие веб-перехватчики. А затем переопределите имя пользователя и значок. Прочтите «Настройка имени пользователя и значка» в Здесь.

Способ 2 - вы можете создать пользователя-бота и позволить пользователю-боту отправить это сообщение за вас. Думаю, прямо сейчас вы используете тестовые токены, сгенерированные Slack, поэтому вы получаете только свое имя. Но если вы используете бот-пользователя, вы можете использовать собственное имя и icon_url для своего бота.

Надеюсь, это ответит на ваш вопрос.

person Abhinav Rai    schedule 04.06.2016
comment
Спасибо, я знаю, как настроить свое имя пользователя и значок с помощью метода incoming-webhooks. Но я не смог найти способ опубликовать сниппет, используя этот подход. Я попытался опубликовать его как предварительно отформатированный текст, но он не выглядел настолько разборчивым, как фрагмент текста. - person neal; 06.06.2016
comment
Подход пользователя-бота сделал то, что я хотел. Это кажется излишним (я не использую интерфейс обмена сообщениями в реальном времени), и мне кажется странным, что вы можете настроить пользователя на одни методы, но не на другие. В любом случае проблема решена. - person neal; 10.06.2016
comment
Рад слышать это! Не могли бы вы также опубликовать новый вопрос и ответить на него сами (как вы это сделали), чтобы многие люди тоже узнали об этом. Отличная работа! @neal - person Abhinav Rai; 10.06.2016

Да, как предложил @Abhinav Rai, вам нужен бот. Служба поддержки Slack ответила мне на тот же вопрос.

Чтобы загружать файлы в качестве бота, вам необходимо создать связанного «пользователя-бота» и опубликовать файл, используя токен бота: https://api.slack.com/bot-users - все файлы должны принадлежать учетной записи пользователя, и пользователь-бот выполнит это требование.

person Serge    schedule 29.07.2016

Есть способ 3, который использует функцию имени пользователя из функции chat.postMessage. Следовать этому -

import slack
import json
import os

def pureimg(data1):
        data1 = '[{"text": "", "image_url": "'+data1+'"}]'
        data1 = [json.loads(data1[1:-1])]
        return data1

#This function will make the image url to correct format.

slacker = slack.WebClient(token='your-token-here')

payoff=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'filename.png')
#It gives cross OS compatibility on filepath.

response=slacker.files_upload(channel='#theta',file=payoff)
payoff=response['file']['permalink']

#First We upload the local file to Slack and fetch permalink.
#If you do not have any local file just put the external image URL in the payoff.

response=slacker.chat_postMessage(channel='#channel_name', text="Sample Text", username='Bot name', attachments=pureimg(payoff), icon_emoji=':emoji:')

#Then, We post to Slack Channel as a bot!
person Amit Ghosh    schedule 27.10.2019