如何使用Slack API调用/poll命令?

7

我的 Slack 频道支持 Simple Poll 应用的 /poll 命令。如何使用 Slack API 调用此命令?

使用 Python Slack(er) API 模块

from slacker import Slacker

# Using what's now called a "legacy token"
slack = Slacker('my-token')

slack.chat.post_message(
        '#test',
        '/poll "Do you prefer cats or dogs?" "Cats" "Dogs"',
        as_user=False,
        username="Poll Bot",
        icon_emoji=':question:',
        parse='full')
该消息只以纯文本形式显示在#test频道中,而不是转换为投票。 我尝试在消息中使用而不是/poll,就像message formatting documenation中所暗示的那样,但结果相同。 注意:这个问题现在有点老了,重新审视后我发现我的代码正在使用一个legacy token,它不允许指定任何OAuth permission scopes。传统的令牌已经拥有了它需要的权限。
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
16

您需要使用"未记录的"chat.command API函数,而不是chat.postMessage。这个函数对于channel参数不太友好--您必须提供通道ID而不是易于人类理解的通道名称。

channel_id = slack.channels.get_channel_id('test')
slack.chat.command(
        channel=channel_id,
        command='/poll',
        text='"Do you prefer cats or dogs?" "Cats" "Dogs"'
)

感谢Wee-Slack错误跟踪器中的V13Axel提供了与chat.command相关的一些调试信息,让我有了线索。

根据@Erik_Kalkoken的非官方文档chat.command

需要post范围。由于该范围似乎在应用配置窗口中不可用,因此您需要提供旧版令牌才能使其工作。


2
这似乎是另一个未记录的API命令。非常感谢分享。 - Erik Kalkoken
3
我在维护一个 GitHub 代码库,来记录“未被记录”的 Slack API 方法 - 链接 - 我已经添加了这个方法的记录。非常欢迎对文档提出任何评论或建议。 - Erik Kalkoken
这似乎不再起作用了。至少在使用Python Slack客户端的时候,sc.api_call("chat.command", channel=channel, command=slash_command, text=message)也是如此。 - mschmidt42
@CivFan 在尝试相同的代码片段时,我遇到了缺少范围的错误。聊天命令(chat.command)需要哪些范围才能正常工作?我已经尝试了chat:write:bot和chat:write:user两种范围。 - nithishr
1
@ritz 我当时使用的是现在被称为遗留令牌。这种类型的令牌无法指定范围。 - CivFan
显示剩余6条评论

3

1
这太棒了!!我正在尝试与“/giphy”一起使用,但用户必须单击“发送”才能发布gif。您知道是否可以使用命令行实现它吗? - A_G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,