【问题标题】:Posting an image with slack API使用 slack API 发布图像
【发布时间】:2016-01-26 19:08:13
【问题描述】:

我正在尝试使用 slack API 发布图像。我目前打开了两个 API(使用 python),即 rtm 和 slackbot。

sc = SlackClient(API_KEY)
sc.api_call('chat.postMessages', channel=, text=) #post as bot

sc.rtm_connect():
sc.rtm_send_message(channel=..., message=...) #post as desired user

这些示例可以很好地将 text 发布到频道,但我需要将图片发布到频道。

我想使用 rtm_* 方法发布图像,但我不知道如何。我看到的唯一图像参考是https://api.slack.com/docs/attachments,但我看不到使用 rtm API 的方法。

感谢任何帮助。 TIA。

更新/编辑

所以我尝试使用Jon推荐的方法,就是这样:

sc.api_call("chat.postMessage", channel='D0K7P9MCJ', text='postMessage test',
            attachments='[{"image_url":"http://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"}]')

但这似乎不起作用(没有发布图像)并且没有引发错误。

解决方案

我通过在附件部分包含一个标题来完成这项工作。希望它抛出一个错误,=/

【问题讨论】:

  • 您能否发布一个带有实际有效附件的示例调用?我正在尝试做同样的事情,但包含标题没有帮助
  • @Bicubic 已经有一段时间了,但我添加了一个应该可以工作的解决方案。

标签: python slack-api slack


【解决方案1】:

如问题更新中所述,为了使其正常工作,必须在附件中包含标题。

image_url = "http://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"
attachments = [{"title": "Cat", "image_url": image_url}]
sc.api_call("chat.postMessage", channel='D0K7P9MCJ', text='postMessage test',
            attachments=attachments)

【讨论】:

  • titletext 使用空白字段也可以
【解决方案2】:

您必须使用 postMessage 选项——您不能使用 RTM(来自 https://api.slack.com/rtm):

RTM API 仅支持发布使用我们的格式化的简单消息 默认消息格式化模式。它不支持附件或 其他消息格式化模式。将更复杂的消息发布为 用户客户端可以使用 as_user 调用 chat.postMessage Web API 方法 设置为真。

【讨论】:

  • 我更新了我的 OP 以显示使用 postMessage 的示例,这似乎对我不起作用。
  • 您是否包括token 参数?必填api.slack.com/methods/chat.postMessage
  • 我正在使用客户端库,它似乎不需要我提供值。尽管我在客户端构造函数上提供了 API 密钥,但它在不提供令牌的情况下工作正常。 - 另外,请注意,我在我的 OP 中发布了似乎是解决方案的内容。缺少图片标题。
  • 谢谢!并感谢您的 cmets。帮助我继续挖掘。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多