14

我正在尝试使用 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

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

我想使用 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"}]')

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

解决方案

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

4

2 回答 2

8

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

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)
于 2016-11-21T03:08:58.147 回答
2

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

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

于 2016-01-26T19:20:45.410 回答