【问题标题】:Can you upload a file to the Slack API using files.upload as a different user?您可以使用 files.upload 作为其他用户将文件上传到 Slack API 吗?
【发布时间】:2016-06-03 21:33:17
【问题描述】:

我正在尝试找到一种方法,让应用程序通过 Slack API 将文本 sn-p 发布到我们的支持渠道。使用 files.upload 方法,我可以创建一个文本 sn-p 并与频道共享,但帖子似乎来自我(因为用于验证请求的令牌是我的)。

我正在寻找一种方法来做到这一点,但让它出现一个自定义的用户名和图标,就像你可以使用 chat.postMessage 方法的用户名和 icon_url 参数一样。有没有办法做到这一点?

【问题讨论】:

    标签: slack-api


    【解决方案1】:

    有两种方法。

    方式1. - 如果您只想在频道中上传并且不需要收听任何对话,那么您可以使用incoming-webhooks。然后覆盖用户名和图标。阅读Here 中的“自定义用户名和图标”。

    方式 2 - 您可以创建一个机器人用户并让机器人用户类型为您发布此消息。我想现在你正在使用 Slack 生成的测试令牌,所以你只得到你的名字。但是,如果您使用 bot-user,那么您可以为您的机器人使用自定义名称和 icon_url。

    我希望这能回答你的问题。

    【讨论】:

    • 谢谢,我知道如何使用incoming-webhooks 方法自定义我的用户名和图标。但是我找不到使用这种方法发布 sn-p 的方法。我尝试将其作为预格式化文本发布,但它看起来不像文本 sn-p 那样清晰。
    • bot 用户方法符合我的要求。这似乎有点矫枉过正(我没有使用实时消息传递界面),而且您可以为用户设置某些方法但不能设置其他方法,这对我来说似乎很奇怪。总之,问题解决了。
    • 很高兴听到这个消息!您能否也发布一个新问题并自己回答这个问题(至于您是如何做到的),以便很多人也知道。做得好! @尼尔
    【解决方案2】:

    是的,正如@Abhinav Rai 所建议的,你需要有机器人。 Slack 支持刚刚回答了我同样的问题。

    要将文件作为机器人上传,您需要创建一个关联的“机器人用户”并使用机器人的令牌发布文件:https://api.slack.com/bot-users — 所有文件必须由用户帐户拥有,机器人用户将填写此信息要求。

    【讨论】:

      【解决方案3】:

      有一种方法 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!
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多