【问题标题】:unable to upload an image file to slack through hubot无法通过hubot将图像文件上传到slack
【发布时间】:2018-09-21 15:13:05
【问题描述】:

我正在尝试使用 pageres 包获取网页的图像,并使用 hubot 将图像发布到 slack。我能够获取图像,但由于某种原因,我无法使用 slack 上传 api 将其发布到 slack。这是我的代码,你能告诉我有什么问题吗? (不是咖啡棉绒问题)

fs = require("fs")
Pageres = require('pageres') 
util = require("util")
request = require("request")
module.exports = (robot) ->
  robot.respond /screenshot page (\S*)?( at )?(\S*)?/i, (msg) ->
    pageres = new Pageres({delay: 30})
    domain = msg.match[1].replace("http://", "")
    if msg.match[3] == undefined
      size = '960x1024'
    else
      size = msg.match[3]
    dest = './screenshots'
    msg.send "Acquiring screenshot of #{domain}"
    pageres.src(domain, [size]).dest(dest)
    pageres.run (err) ->
      if err
    robot.logger.error err
       msg.send "Um..., you better check the log"
    else
    opts = {
      method: 'POST',
      uri: 'https://slack.com/api/files.upload',
      formData: {
        channels: process.env.HUBOT_SCREENSHOT_SLACK_CHANNEL,
        initial_comment: "Screenshot of #{domain}",
        token: process.env.HUBOT_SLACK_TOKEN,
        file: fs.createReadStream("#{dest}/#{domain}.png")
      }
    }

    request.post opts, (error, response, body) ->
      if error
        robot.logger.error error
      else
        robot.logger.debug 'screenshot posted to slack'
  return

机器人已连接到 slack,并从 slack 接收消息,解析它们并将图像返回到本地目的地,但无法将其发布到 slack,日志中也没有错误。

[Wed Apr 11 2018 16:16:47 GMT+0000 (UTC)] DEBUG Received message: '@hubot screenshot page http://www.google.com' in channel: ****, from: ******
[Wed Apr 11 2018 16:16:47 GMT+0000 (UTC)] DEBUG Message '@hubot screenshot page http://www.google.com' matched regex //^\s*[@]?hubot[:,]?\s*(?:screenshot page (\S*)?( at )?(\S*)?)/i/; listener.options = { id: null }
[Wed Apr 11 2018 16:16:47 GMT+0000 (UTC)] DEBUG Executing listener callback for Message '@hubot screenshot page http://www.google.com'
[Wed Apr 11 2018 16:16:47 GMT+0000 (UTC)] DEBUG Sending to *****: Acquiring screenshot of www.google.com

【问题讨论】:

标签: coffeescript slack slack-api hubot


【解决方案1】:

您可以使用 curl 命令,该命令可以通过 child_process 调用来上传频道中的文件。

curl -F file=@dramacat.gif -F channels=C024BE91L,#general -F token=xxxx-xxxxxxxxx-xxxx https://slack.com/api/files.upload

【讨论】:

    【解决方案2】:

    您的 opts 变量中的 formData 属性似乎应该稍有不同,如下所示:

    formData: {
        token: process.env.HUBOT_SLACK_TOKEN,
        title: "Screenshot of #{domain}",
        filename: "image.png",
        filetype: "auto",
        channels: channel_id,
        file: fs.createReadStream("path_to_your_image"),
    }
    

    channel_id 是您访问频道时可以在浏览器地址栏中看到的 Slack 频道 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2021-07-22
      • 2017-10-16
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多